feat: CI pipeline verification, 3D body model, auth fixes, requirements lock

- .github/workflows/verify-pipeline.yml: CI that verifies pipeline
  determinism and checks for np.random in production code
- ui/components/body-model.js: Three.js 3D human body model with
  24 DensePose body parts mapped to 3D geometry
- v1/requirements-lock.txt: Minimal pinned dependencies for verification
- v1/src/api/dependencies.py: Fix mock auth returns with proper errors
- v1/src/core/router_interface.py: Additional mock mode cleanup
- v1/src/services/pose_service.py: Further mock elimination in service

https://claude.ai/code/session_01Ki7pvEZtJDvqJkmyn6B714
This commit is contained in:
Claude
2026-02-28 06:20:08 +00:00
parent 2199174cac
commit 4b2e7bfecf
6 changed files with 847 additions and 113 deletions

View File

@@ -78,21 +78,33 @@ async def get_current_user(
if not credentials:
return None
# This would normally validate the JWT token
# For now, return a mock user for development
# Validate the JWT token
# JWT validation must be configured via settings (e.g. JWT_SECRET, JWT_ALGORITHM)
if settings.is_development:
return {
"id": "dev-user",
"username": "developer",
"email": "dev@example.com",
"is_admin": True,
"permissions": ["read", "write", "admin"]
}
logger.warning(
"Authentication credentials provided in development mode but JWT "
"validation is not configured. Set up JWT authentication via "
"environment variables (JWT_SECRET, JWT_ALGORITHM) or disable "
"authentication. Rejecting request."
)
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=(
"JWT authentication is not configured. In development mode, either "
"disable authentication (enable_authentication=False) or configure "
"JWT validation. Returning mock users is not permitted in any environment."
),
headers={"WWW-Authenticate": "Bearer"},
)
# In production, implement proper JWT validation
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Authentication not implemented",
detail=(
"JWT authentication is not configured. Configure JWT_SECRET and "
"JWT_ALGORITHM environment variables, or integrate an external "
"identity provider. See docs/authentication.md for setup instructions."
),
headers={"WWW-Authenticate": "Bearer"},
)
@@ -404,17 +416,22 @@ async def get_websocket_user(
# Skip authentication if disabled
if not settings.enable_authentication:
return None
# For development, return mock user
# Validate the WebSocket token
if not websocket_token:
return None
if settings.is_development:
return {
"id": "ws-user",
"username": "websocket_user",
"is_admin": False,
"permissions": ["read"]
}
logger.warning(
"WebSocket token provided in development mode but token validation "
"is not configured. Rejecting. Disable authentication or configure "
"JWT validation to allow WebSocket connections."
)
return None
# In production, implement proper token validation
# TODO: Implement JWT/token validation for WebSocket connections
logger.warning("WebSocket token validation is not implemented. Rejecting token.")
return None