外观
评估 API
评估接口支撑建档后的 G1-M3 安全检查、R1-R11 完整评估提交和最近评估读取。主要写入 user_health_profiles 与 user_profiles.assessment_context。
Endpoint 索引
| Method | Path | 鉴权 | 用途 |
|---|---|---|---|
| POST | /api/assessment/safety_check | Bearer JWT | 执行 G1-M3 运动安全检查。 |
| GET | /api/assessment/symptoms | 无 | 按癌种读取症状标签。 |
| POST | /api/assessment/submit | Bearer JWT | 提交 R1-R11 完整评估。 |
| GET | /api/assessment/last | Bearer JWT | 读取最近一次完整评估。 |
Endpoint 契约
POST /api/assessment/safety_check
| 项 | 内容 |
|---|---|
| Request | G1-M3 安全检查字段 |
| Response | assessment_id、risk_level、warnings、triggered_rules、action_required、valid_until |
| Errors | 401;422 参数;持久化失败不阻断主响应 |
| Consumer | AssessmentApiClient.performSafetyCheck |
| Handler | assessment.perform_safety_check -> PerformSafetyCheckUseCase |
| DB Touchpoints | 写 user_health_profiles.safety_check_data、risk_level |
| Tests | tests/use_cases/test_perform_safety_check_use_case.py |
GET /api/assessment/symptoms
| 项 | 内容 |
|---|---|
| Request | query cancer_type,默认 breast |
| Response | symptom string list |
| Errors | 500 极少见 |
| Consumer | AssessmentApiClient.getSymptoms |
| Handler | assessment.get_dynamic_symptoms |
| DB Touchpoints | 当前静态 map,不读 DB |
| Tests | source inspection |
POST /api/assessment/submit
| 项 | 内容 |
|---|---|
| Request | R1-R11 完整评估字段 |
| Response | AssessmentResponse |
| Errors | 401;422;500 |
| Consumer | AssessmentApiClient.submitFullAssessment、DetailedAssessmentBloc |
| Handler | assessment.submit_full_assessment -> SubmitFullAssessmentUseCase |
| DB Touchpoints | 更新 user_profiles.assessment_context;写 user_health_profiles.assessment_data |
| Tests | tests/use_cases/test_submit_full_assessment_use_case.py、tests/api/test_assessment_payload_normalization.py |
GET /api/assessment/last
| 项 | 内容 |
|---|---|
| Request | 无 |
| Response | 最近 FullAssessmentRequest 或 null |
| Errors | 401;500 |
| Consumer | AssessmentApiClient.getLastAssessment |
| Handler | assessment.get_last_assessment |
| DB Touchpoints | 读 user_profiles.assessment_context |
| Tests | Flutter detailed assessment tests |
Safety Check 请求字段
| Field | Alias | Type | Default | Values |
|---|---|---|---|---|
has_fever | g1_fever | string | no | no、yes、unsure |
acute_condition | g2_acute | string | no | no、yes、unsure |
chest_symptoms | g3_chest | string | no | no、yes、unsure |
severe_side_effects | g4_seffect | string | no | no、yes、unsure |
extreme_fatigue | g5_fatigue | string | no | no、yes、unsure |
doctor_prohibited | g6_doc | string | no | no、yes、unsure |
wound_issue | m1_wound | string | no | 前端可选 |
fall_risk | m2_fall | string | no | 前端可选 |
hemoglobin | m3_hb | number | null | 血红蛋白值 |
anemia_unsure | m3_unsure | boolean | false | 是否不确定贫血状态 |
Full Assessment 数据
完整评估 request 使用 R1-R11 结构,后端会补齐 user_id、age、gender、cancer_type、treatment_stage 等上下文字段,并将 JSON-compatible payload 存入 user_profiles.assessment_context。
| Field | Description |
|---|---|
symptom_top3、symptom_data | 症状与疼痛等结构化数据。 |
comorbidities | 合并症列表。 |
weekly_exercise_days、daily_activity_level | 当前活动频率和活动水平。 |
preferred_exercises、access_scene、equipment | 偏好、环境和器械。 |
expected_duration、expected_frequency | 单次时长与每周频率目标。 |
来源锚点
- Router:
apps/backend_service/app/api/assessment.py - Schemas:
apps/backend_service/app/schemas/assessment.py - Use cases:
apps/backend_service/app/use_cases/assessment/ - Flutter:
apps/flutter_app/lib/api/assessment_api_client.dart - Tests:
apps/backend_service/tests/api/test_assessment_payload_normalization.py、apps/flutter_app/test/bloc/detailed_assessment/detailed_assessment_bloc_test.dart