feat: Phase 2 Bug Fixes, Session Persistence, and Role Selection
🐛 Bug Fixes
Session Persistence Issues
Fixed multiple database persistence issues where created records were not being committed properly.
Problems Identified
- Sessions returned
404 Not Foundimmediately after creation - Answers and family records were not persisted
- Session updates and resume endpoints failed inconsistently
Root Cause
Several service layers were missing:
await db.commit()await db.refresh()
after database write operations.
Fix Applied
Added proper commit and refresh handling across:
session_serviceanswer_servicefamily_servicequestionnaire_service
This ensures all created/updated records persist correctly before subsequent reads.
Question Retrieval Fixes
Problem
Question category APIs were returning empty arrays even when questions existed.
Root Cause
SQLAlchemy enum comparison used enum objects instead of enum string values.
Fix Applied
Updated filtering logic in:
crud_questionnaire.py
using:
category.value
instead of direct enum object comparison.
Default Question Seeding
Added automatic database seeding support.
Added
app/db/seed.py
Functionality
- Seeds 10 default medical questions
- Covers multiple questionnaire categories
- Runs automatically during DB initialization
Integration
Connected seeding flow in:
app/db/init_db.py
✨ Feature: Role Selection During Registration
Implemented selectable user roles during signup.
Changes
-
Added
COUNSELOR = 3toUserRoleenum -
Existing roles:
ADMIN = 1USER = 2COUNSELOR = 3
Registration Improvements
-
RegisterRequestschema now supports optionalrole - Default role remains
USER - Swagger UI now displays role dropdown automatically
- Auth service persists selected role correctly
Benefits
- Enables admin account creation for testing
- Supports counselor-based workflows
- Improves RBAC testing coverage
🛠 ️ Dev & Infrastructure Updates
OTP Development Support
For local development/testing:
-
OTP now returned in:
- Registration response
- Resend OTP response
Docker Fixes
Resolved:
- Docker build failures
- Container startup issues
✅ Tests Added
Created:
tests/test_phase2.py
Coverage Includes
-
Full session lifecycle:
- start
- get
- resume
- update
- complete
-
Category-based question retrieval
-
Question seeding validation
-
Answer submission flow
-
Session progress tracking
✅ Test Results
5 passed, 1 warning in 3.59s