Skip to content

处方 API

处方接口生成、读取和替换运动处方。所有 endpoint 都要求 Bearer JWT。生成接口会调用处方服务、RAG/LLM 链路并写入 sport_schemes;传入 sessionId 时还会尝试把处方卡写入聊天记录。

Endpoint 索引

MethodPath用途
POST/api/prescription/generate生成正式运动处方。
GET/api/prescription/current读取当前有效处方。
PUT/api/prescription/{scheme_id}/replace替换指定处方。
GET/api/prescription/statistics读取处方服务统计。
POST/api/prescription/demo生成 Demo 动作库处方。

Endpoint 契约

POST /api/prescription/generate

内容
Requestuser_contextduration_dayssessionId
Responseprescriptionscheme_id、RAG/LLM/safety 元数据、有效期、审核状态
Errors400 参数错误;401500 生成失败
ConsumerPrescriptionApiClient.generatePrescription(useDemo=false)、Chat 处方按钮
Handlerprescription.generate_prescription -> GeneratePrescriptionUseCase
DB Touchpoints读用户档案;写 sport_schemes;可写 dialogue_logs;RAG 读 knowledge_chunks
Teststests/api/test_prescription.pytests/use_cases/test_generate_prescription_use_case.py

GET /api/prescription/current

内容
Request
Response当前有效处方或 null
Errors401500
ConsumerPrescriptionApiClient.getCurrentPrescription、运动中心
Handlerprescription.get_current_prescription -> GetCurrentPrescriptionUseCase
DB Touchpointssport_schemes
Teststests/api/test_prescription.pytests/use_cases/test_manage_prescription_use_case.py

PUT /api/prescription/{scheme_id}/replace

内容
Requestquery/body 当前以 duration_days 为准;path scheme_id
Response新处方响应
Errors400 有效天数非法;401500
ConsumerPrescriptionApiClient.replacePrescription
Handlerprescription.replace_prescription -> ReplacePrescriptionUseCase
DB Touchpoints读旧 sport_schemes;写新 sport_schemes
Teststests/api/test_prescription.py

GET /api/prescription/statistics

内容
Request
Responsestatusdatauser_id
Errors401500
Consumer后端统计/调试入口
Handlerprescription.get_prescription_statistics
DB Touchpoints读处方统计相关数据
Teststests/api/test_prescription.py

POST /api/prescription/demo

内容
Requestduration_days
Response与生成接口相同,内容来自 Demo 动作库
Errors401500
ConsumerPrescriptionApiClient.generatePrescription(useDemo=true)、居家 Demo 路径
Handlerprescription.generate_demo_prescription
DB Touchpointssport_schemesis_demo=true
Teststests/services/test_demo_prescription_service.pytest/bloc/prescription/prescription_bloc_phase4_test.dart

请求字段

FieldTypeRequiredDescription
user_contextobjectno前端传入的补充上下文,处方生成会与后端用户档案合并使用。
duration_daysintegerno默认 7;生成接口约束 1-30。
sessionIdstringno关联聊天会话,用于把处方卡写回 dialogue_logs

处方响应字段

FieldDescription
prescription处方正文 JSON,包含动作、强度、安全提示等结构化内容。
scheme_idsport_schemes.pk_sport_scheme
information_source信息来源标识。
rag_used / knowledge_correlationRAG 使用情况与相关性分数。
safety_check生成链路安全检查结果。
llm_info模型调用元数据,不包含 provider secret。
check_status / check_result当前审核状态与结果文本。

跨端注意

PrescriptionApiClient.replacePrescription 目前会发送 new_prescription body,但后端 handler 当前只使用 scheme_idduration_days 重新生成替换处方。联调时不要假设前端传入的完整处方会被后端直接保存。

来源锚点

  • Router: apps/backend_service/app/api/prescription.py
  • Use cases: apps/backend_service/app/use_cases/prescription/
  • Service: apps/backend_service/app/services/prescription_service.py
  • Flutter: apps/flutter_app/lib/api/prescription_api_client.dart
  • Tests: apps/backend_service/tests/api/test_prescription.pyapps/flutter_app/test/api/prescription_api_client_test.dart