项目管理台账与定时推送(通用)
把分散在多份企微智能表格中的项目工作项,合并成一张统一的项目管理台账,并建立定时推送机制。任意项目通用——所有项目专属信息都放在 projects/<项目名>.md 配置文件里,本文件不含任何硬编码业务内容。
核心原则
- 配置驱动:每个项目一份配置(
projects/<项目名>.md),skill 读配置干活。没有配置 → 先走初始化引导。 - 零硬编码:源表文档名、台账名、字段名、群名、里程碑日期一律来自配置或运行时搜索,禁止写进 skill 文件本体。
- 别人可用:初始化流程要能引导一个完全不懂的用户完成配置,不需要他懂 CLI。
前置要求
wecomcli-shared前置检查(CLI ≥1.1.0、已授权)。- 按动作加载技能:搜索文档 →
wecomcli-doc-manage;读写智能表格 →wecomcli-smartsheet;发消息 →wecomcli-message。 - 加载本 skill 的 references:
init-guide.md/ledger-schema.md/sync-rules.md/push-template.md。
主流程
A. 初始化(首次使用某项目时)
- 查
projects/下是否已有该项目的配置。有 → 直接跳到 B;没有 → 走引导。 - 引导用户确认配置要素(见
init-guide.md第一节,用 AskUserQuestion 分批问,一次不超过 4 个问题):
- 项目名、里程碑/上线日期(早报倒计时基准)
- 源表:几份?文档名或链接?(1~N 份都支持)
- 台账名称,建在哪个位置
- 推送群名、推送时间、工作日 or 每天 - 自动探测源表结构:
wecom-cli doc search定位文档 → 读 sheets/fields/样例记录。 - 智能建议字段映射:按
init-guide.md的同义词表自动匹配源字段 → 通用台账字段,无法识别的作为自定义字段保留。把映射方案给用户过目确认(这是唯一必须人工拍板的环节)。 - 生成配置文件
projects/<项目名>.md(模板见projects/_template.md)。
B. 建表
- 按
ledger-schema.md的通用字段模板 + 用户确认的自定义字段,用wecom-cli smartsheet create一次性建台账(fields 全量传入)。 - 单选字段选项:扫描源表该字段的全部取值,去重后作为选项全集(保证状态不丢);数值风格可统一指定。
- 调整列宽、清理默认空记录。
C. 同步(每次推送前必做)
按 sync-rules.md 执行:以「条目编号」为唯一键做增量同步(源有目标无→add,两边都有→update,目标有源无→保留标记),写后按来源分组计数验证。
D. 推送早报
按 push-template.md 生成 Markdown 早报(数据全部来自台账 SQL 查询),用 wecomcli-message 发到项目群。
E. 定时自动化
为每个项目创建一个 automation,prompt 自包含并明确指向 projects/<项目名>.md 配置;创建前先 automation_update mode=list 查重。
F. 日常维护触发
| 用户说 | 动作 |
|---|---|
| 「同步一下 XX 台账」 | 只跑 C |
| 「发一下今天的 XX 早报」 | 跑 C + D |
| 「改推送时间/频率/群」 | automation_update 改既有 automation,不新建 |
| 「加一份源表 / 源表字段变了」 | 更新 projects/<项目名>.md,再同步 |
| 「新起一个项目」 | 走 A,新建配置 |
关键纪律
- 源表只读,禁止回写;台账只写机器人创建/拥有的数据。
- docid、sheet_id、record_id、chat_id 一律运行时搜索获取,禁止硬编码进任何文件,也不出现在给用户的回复里。
- 推送内容必须基于同步后的真实数据,查询无结果就如实写「无」,禁止编造进展。
- 一次性初始化脚本写在工作区,不写进 skill;skill 只保留可复用的规则与配置。