Skip to content

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 Found immediately 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_service
  • answer_service
  • family_service
  • questionnaire_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 = 3 to UserRole enum

  • Existing roles:

    • ADMIN = 1
    • USER = 2
    • COUNSELOR = 3

Registration Improvements

  • RegisterRequest schema now supports optional role
  • 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

Merge request reports

Loading