PregoPal / plugins /preset_writer.py
J.B-Lin
chore: save current version before UI improvements (i18n + font fix)
ec90eae
Raw
History Blame Contribute Delete
2.05 kB
"""
PregoPal - 预设文件写入插件
===========================
将今日简报写入 data/presets/ 目录,供次日使用。
"""
import json
import datetime
from pathlib import Path
from plugins.base import LoopPlugin, PluginResult, LoopStage, LoopContext
from loop import DailyStatus
PRESETS_DIR = Path("data/presets")
class PresetWriterPlugin(LoopPlugin):
"""生成明日预设文件"""
def stage(self) -> LoopStage:
return LoopStage.CONSOLIDATE
def name(self) -> str:
return "preset_writer"
async def run(self, ctx: LoopContext) -> PluginResult:
PRESETS_DIR.mkdir(parents=True, exist_ok=True)
today = datetime.date.today().isoformat()
tomorrow = (datetime.date.today() + datetime.timedelta(days=1)).isoformat()
# 构建明日预设
preset = {
"date": tomorrow,
"generated_from": today,
"generated_at": datetime.datetime.now().isoformat(),
"trimester": ctx.briefing.get("trimester", "孕中期"),
"nutrient_focus": ctx.briefing.get("nutrient_focus", []),
"recommended_foods": ctx.briefing.get("recommended_foods", []),
"need_ask_weight": ctx.briefing.get("need_ask_weight", False),
"need_ask_recipe": ctx.briefing.get("need_ask_recipe", False),
"conversation_topics": ctx.briefing.get("conversation_topics", []),
"family_memory_summary": str(ctx.briefing.get("family_memory", {})),
"three_day_summary": ctx.briefing.get("three_day_summary", {}),
}
# 写入文件
preset_file = PRESETS_DIR / f"今日简报_{tomorrow}.json"
with open(preset_file, 'w', encoding='utf-8') as f:
json.dump(preset, f, ensure_ascii=False, indent=2)
# 标记今日总结完成
DailyStatus.mark_summary_done()
return PluginResult(
success=True,
data={"preset_file": str(preset_file)},
message=f"明日预设已写入 {preset_file.name}"
)