|
@@ -1,5 +1,5 @@
|
|
|
from pydantic import BaseModel
|
|
from pydantic import BaseModel
|
|
|
-from typing import Optional, List
|
|
|
|
|
|
|
+from typing import Literal, Optional, List
|
|
|
|
|
|
|
|
|
|
|
|
|
class HealthPlanGenerateRequest(BaseModel):
|
|
class HealthPlanGenerateRequest(BaseModel):
|
|
@@ -9,15 +9,24 @@ class HealthPlanGenerateRequest(BaseModel):
|
|
|
family_id: Optional[int] = None
|
|
family_id: Optional[int] = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+class PlanTask(BaseModel):
|
|
|
|
|
+ action_type: Literal["buy", "read", "exercise", "checkin", "diet", "activity"]
|
|
|
|
|
+ title: str
|
|
|
|
|
+ dimension: Literal["body", "mind", "wisdom", "action", "wealth"]
|
|
|
|
|
+ frequency: Literal["once", "daily"] = "daily"
|
|
|
|
|
+ notes: Optional[str] = None
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
class HealthPlanSection(BaseModel):
|
|
class HealthPlanSection(BaseModel):
|
|
|
key: str # "nutrition" | "diet" | "exercise"
|
|
key: str # "nutrition" | "diet" | "exercise"
|
|
|
title: str
|
|
title: str
|
|
|
content: str # markdown text
|
|
content: str # markdown text
|
|
|
items: List[dict] = [] # structured items for UI rendering
|
|
items: List[dict] = [] # structured items for UI rendering
|
|
|
|
|
+ tasks: List[PlanTask] = [] # machine-readable task intents
|
|
|
|
|
|
|
|
|
|
|
|
|
class HealthPlanResponse(BaseModel):
|
|
class HealthPlanResponse(BaseModel):
|
|
|
overview: str = ""
|
|
overview: str = ""
|
|
|
sections: List[HealthPlanSection] = []
|
|
sections: List[HealthPlanSection] = []
|
|
|
abnormal_indicators: List[dict] = []
|
|
abnormal_indicators: List[dict] = []
|
|
|
- knowledge_sources: List[dict] = []
|
|
|
|
|
|
|
+ knowledge_sources: List[dict] = []
|