--- name: huanxi-report description: "寰汐员工日报:查看今日状态、填写并提交日报、撤回修改。当用户说「帮我写日报」「填日报」「提交日报」「今天要报什么」时使用。" --- # 寰汐员工日报 **前置:先读 `huanxi-shared`(缓存策略、状态模型、确认约定)。** --- ## 标准流程 ``` Step 1 report_get_context(date?) ↓ 一次拿全:是否工作日、是否免报、整体状态、按模块分组的待汇报条目 ↓ 非工作日 → 告知并询问是否仍要填(不中断) ↓ 已全部提交 → 转「修改已提交内容」分支 ↓ 免报日 → 告知无需提交,询问是否仍要记录 Step 2 展示待汇报任务,引导用户逐条说今天做了什么 ↓ 每条记住 task_id(后续提交要用) ↓ 用户说不清的任务,可用 task_get 补上下文,不要替他编 Step 3 (可选)润色 ↓ 你自己润色即可,**不要找工具**——你就是那个语言模型 ↓ 展示润色前后,让用户选 Step 4 report_save_draft(items=[...]) ↓ 存草稿,此时还没提交 ↓ 今天不报某条 → 该项加 dismissed=true;恢复 → restore=true Step 5 ⏸ 展示完整初稿,等待用户明确确认 Step 6 report_submit(task_ids=[...]) ↓ 只提交确认过的那些;不传 task_ids 则提交全部草稿 ``` **Step 5 不可省略。** 写日报和交日报是两个决定,用户可能只想先存着。 --- ## 修改已提交内容 ``` report_withdraw(task_ids=[...]) → 变回草稿 ↓ 修改 report_save_draft(...) ↓ ⏸ 确认 report_submit(task_ids=[...]) ``` **仅当天可撤回。** 隔天的日报已进入统计口径,撤回会被拒绝——这时应告诉用户去找管理员, 而不是反复重试。 --- ## 查历史 ``` report_history(scope="module", module_id=...) 某模块某天全体成员报了什么 report_history(scope="task", task_id=..., date_from=..., date_to=...) 某个任务被谁在哪天报过什么 ``` --- ## 几条容易踩的 - **条目用 `task_id` 定位**,不是条目自身的 id。`report_get_context` 返回里的 `task_id` 就是后续 save/submit/withdraw 都要传的那个。 - **空内容不能提交**:服务端会拒。要么写点内容,要么标 `dismissed`。 - **模块杂记**(`is_module_misc`)承载零散工作,可以报也可以不报,但它**不计入 「未提交」统计**——用户只写了杂记不算完成当天汇报,提醒他还有别的任务没写。 - **`progress_update` 是任务进度**(0-100),不是完成度描述。填了它会真的改任务进度。 - 免报日(`is_exempt`)不产生未提交统计,也不必催。