health_plan.py 977 B

1234567891011121314151617181920212223242526272829303132
  1. from pydantic import BaseModel
  2. from typing import Literal, Optional, List
  3. class HealthPlanGenerateRequest(BaseModel):
  4. member_ids: Optional[str] = None
  5. dimensions: Optional[str] = None
  6. goal: str = ""
  7. family_id: Optional[int] = None
  8. class PlanTask(BaseModel):
  9. action_type: Literal["buy", "read", "exercise", "checkin", "diet", "activity"]
  10. title: str
  11. dimension: Literal["body", "mind", "wisdom", "action", "wealth"]
  12. frequency: Literal["once", "daily"] = "daily"
  13. notes: Optional[str] = None
  14. class HealthPlanSection(BaseModel):
  15. key: str # "nutrition" | "diet" | "exercise"
  16. title: str
  17. content: str # markdown text
  18. items: List[dict] = [] # structured items for UI rendering
  19. tasks: List[PlanTask] = [] # machine-readable task intents
  20. class HealthPlanResponse(BaseModel):
  21. overview: str = ""
  22. sections: List[HealthPlanSection] = []
  23. abnormal_indicators: List[dict] = []
  24. knowledge_sources: List[dict] = []