commercial-renewal-tracker · git:20260529.efece30 · 2026-05-29 · sha256 5736008500a82465
commercial-renewal-tracker git:20260529.efece30A
Immutable. This exact content is served forever at /api/v1/blob/5736008500a82465.
--- name: commercial-renewal-tracker description: > 展示具有即将到来的取消截止日期的合同,在通知窗口关闭前发出预警, 基于维护的续约登记册运行。当用户询问"什么即将续约""哪些续约即将到期" "我们是否错过了取消窗口""将此添加到续约追踪器"时使用,或按计划运行。 接收来自 saas-msa-review 的交接数据。 argument-hint: "[--days N 变更窗口 | --missed 查看已过期的窗口]" --- # /renewal-tracker 呈现哪些合同即将续约以及必须在何时之前取消。 ## 指令 1. **读取 `$LEGAL_AGENT_PROFILE_HOME/commercial-legal/renewal-register.yaml`**(配置目录——插件更新后仍保留)。 2. **默认模式:** 模式2——未来90天内即将到来的事项,按紧急程度分组。 3. **`--days N`:** 变更窗口。 4. **`--missed`:** 模式4——已过期的取消截止日期。 5. **如果登记册为空且合同管理系统已连接:** 提供模式3——扫描合同管理系统获取当前协议并批量加载。 6. **输出包含建议操作:** 联系谁(每条登记记录中的业务负责人)、哪些具有无上限定价。 ## 示例 ``` commercial-renewal-tracker commercial-renewal-tracker --days 180 commercial-renewal-tracker --missed ``` --- ## 目的 没有人读合同第二遍。续约日期在审查时提取一次,然后存于某处——最好是在取消截止日期前45天大声提醒,而不是45天后。 本技能基于一个核心区分运行:**`cancel_by_effective`**(通知必须送达的最后一天)与 **`send_by_effective`**(为确保通知在截止日期前送达,你必须*发出*通知的日期)。仅以 `send_by_effective` 触发预警——发送截止日期而非到达截止日期。这两个日期不同,差别可能让你在截止日期错过。 ## 登记册 位于 `$LEGAL_AGENT_PROFILE_HOME/commercial-legal/renewal-register.yaml`。 ```yaml - counterparty: "Acme SaaS Inc." agreement: "Acme平台订阅协议" signed_date: 2025-06-15 initial_term_end: 2026-06-15 current_term_end: 2026-06-15 renewal_mechanism: "自动续约年度" notice_period_days: 60 notice_method: "书面通知/邮件" transit_buffer_days: 3 cancel_by_calendar: 2026-04-16 cancel_by_effective: 2026-04-16 send_by_effective: 2026-04-13 cancel_by_roll_note: "" cancel_by_provenance: "[模型计算 — 对照通知条款核实]" price_on_renewal: "当时价目表(无上限)" annual_value: 48000 business_owner: "jane@company.com" clm_id: "IC-12345" status: "active" notes: "定价无上限——续约前重审。替代供应商:X, Y。" ``` ### transit_buffer_days 字段说明 `transit_buffer_days` 是发出通知与通知实际送达之间所需的额外天数。计算方式: ``` send_by_effective = cancel_by_effective - transit_buffer_days ``` 以 `send_by_effective` 触发预警,而非 `cancel_by_effective`。 **常见缓冲天数:** | 通知方式 | 建议缓冲 | |---|---| | 电子邮件(合同约定) | 0–1天 | | 挂号信/EMS | 3–5天 | | 公证送达 | 5–7天 | | 合同约定"书面通知"但未指定方式 | 3天(保守) | | 合同约定"提前[N]日送达" | 3天 | 如果合同通知条款对送达时间有明确规定(如"送达后次日起算"),缓冲按该规定计算,而非按上表。送达时间存疑时,向上取整。 ### 滚动续约字段说明 存储 `initial_term_end` 供历史记录。从 `current_term_end` 计算 `cancel_by_*`。 **当续约自动触发后,须更新 `current_term_end`。** 如果登记册条目的 `current_term_end` 已过期且状态为 `active`,提示用户: > [对方当事人] 的 `current_term_end`([日期])已过去。是否已发生续约?如果是,请提供新的到期日以更新登记册。如果否,这可能是一个错过的取消窗口——运行 `--missed` 查看详情。 ## 工作日回退——五步流程 每个 `cancel_by_calendar` 日期必须回退至最近的工作日,才能得出 `cancel_by_effective`。中国法下,以合同约定的管辖法域确定节假日范围。 **五步流程:** 1. **读取合同约定的管辖法律。** 大多数中国境内合同适用中国法,工作日以中国法定节假日为准。如适用境外法律,相应调整节假日范围。 2. **识别法定节假日。** 中国法定节假日共11天(元旦1天、春节7天、清明1天、劳动节1天、端午1天、中秋1天、国庆7天),但每年具体日期由国务院提前公布,可能因调休制度前移或后移。使用 `web_search` 搜索"[YYYY]年国务院节假日安排"确认当年调休日期,标注 `[联网检索 — 需复核]`。 3. **识别调休工作日。** 为凑足连休,部分周六/周日被调整为工作日(调休)。调休日视为工作日,即使是周末。 4. **计算回退日期。** 调用 `mcp_date_add` 工具:以 `current_term_end` 为基准日,减去 `notice_period_days` 天,得到 `cancel_by_calendar`。再判断该日期是否为工作日;如落在节假日或非调休周末,向前回退至最近的工作日(即更早的日期)。向前回退而非顺延,因为截止日期是不可让步的。 5. **记录两个字段并写明依据。** `cancel_by_calendar`(协议文字计算出的日期)+ `cancel_by_effective`(回退后的有效工作日)。在 `cancel_by_roll_note` 中记录回退原因(例如:"2026年4月16日(周四)—— 无需回退,为工作日"或"2026年10月2日(节假日)—— 回退至2026年9月30日(周三)")。 **`cancel_by_provenance` 字段** 记录计算来源:`[模型计算 — 对照通知条款核实]`(初始录入)或 `[律师核实 — YYYY-MM-DD]`(经人工确认后更新)。 **节假日数据时效性。** 国务院通常于每年11-12月公布次年节假日安排。如果审查时次年调休日期尚未公布,在 `cancel_by_provenance` 中标注:`[模型计算 — [YYYY]年调休安排尚未公布,回退日期待次年公告后核实]`。 ## 模式 ### 模式1:录入续约(来自审查的交接) 当SaaS审查或供应商协议审查发现续约条款时,自动准备登记记录。 接收来自 `saas-msa-review` 的交接数据,格式: ```yaml counterparty: "[名称]" agreement: "[协议标题]" signed_date: "[ISO日期]" current_term_end: "[ISO日期]" renewal_mechanism: "[按合同原文]" notice_period_days: [天数] notice_method: "[按合同原文]" transit_buffer_days: [建议缓冲天数] price_on_renewal: "[按合同原文]" annual_value: [年度金额] business_owner: "[联系人]" ``` 追加至登记册前,运行工作日回退流程计算 `cancel_by_effective` 和 `send_by_effective`。展示计算结果请用户确认,再写入登记册。 ### 模式2:即将到来的事项 **默认回顾窗口:** 未来90天。调用 `mcp_get_datetime` 获取当前日期作为计算基准,调用 `mcp_days_between` 计算各条目的 `send_by_effective` 距今天数,按以下半开区间分组: - 🔴 **0-13天** - 🟠 **14-44天** - 🟡 **45-89天** ```markdown ## 续约——未来90天 *以发送截止日(send_by_effective)计,非到达截止日* ### 🔴 取消通知须在0-13天内发出 | 对方当事人 | 发送截止日 | 到达截止日 | 续约日 | 年度金额 | 负责人 | 备注 | |---|---|---|---|---|---|---| ### 🟠 取消通知须在14-44天内发出 [同上表格] ### 🟡 取消通知须在45-89天内发出 [同上表格] --- **建议操作:** - [ ] [对方当事人] — 联系 [业务负责人]:我们还要这个吗? - [ ] [对方当事人] — 定价无上限;在失去谈判优势前获取替代报价 ``` ### 模式3:扫描合同管理系统/电子签章工具填充登记册 如果MCP已连接且登记册为空或过期: 1. **查询合同管理系统**(e签宝、法大大等)——搜索状态为"已生效"且包含续约/自动续约条款的协议。 2. **提取以下字段**:对方当事人名称、协议类型、签署日期、期限结束日期、通知窗口(如元数据中有)。 3. **如元数据中无通知窗口**:标注该条目需人工补全——技能不从正文推断(推断可能错误)。列出合同名称,提示用户提供缺失信息。 4. **对每条提取记录运行工作日回退流程**,计算 `cancel_by_effective` 和 `send_by_effective`。 5. **批量展示**供用户确认后写入登记册。不要在未经确认的情况下覆盖现有条目。 如果MCP未连接,提示: > 合同管理系统未连接。你可以手动提供协议,或从SaaS/供应商协议审查交接数据录入。逐份录入:将协议拖入此对话,技能将提取续约条款并计算截止日期。 ### 模式4:错过的窗口(坏消息报告) ```markdown ## 错过的取消窗口 | 对方当事人 | 取消截止日为 | 已过去天数 | 续约日 | 状态 | |---|---|---|---|---| **选项:** - 与对方协商逾期取消(很少成功,但值得一问,尤其是长期关系中) - 接受续约,现在标记下一轮取消截止日(`current_term_end` 已更新为新到期日) - 检查协议中是否存在其他终止权利(如重大违约终止、不满意条款) ``` ## 关卡:非律师用户 续约追踪是研究。*行动*——发送不续约通知、让自动续约生效或签署续约——是产生法律后果的步骤。 阅读 `$LEGAL_AGENT_PROFILE_HOME/commercial-legal/profile.md` → `## 使用者`。如果角色为非律师: > 发送不续约通知是具有法律效力的行为,可能对公司的合同权利和义务产生重大影响。你是否已与律师审阅?如需寻找律师:请联系中华全国律师协会或所在地地方律师协会获取推荐服务。 未经明确同意,不得越过此关卡。 ## 仪表盘选项 当登记册条目超过10条时,在输出末尾提供: > 📊 **想以仪表盘形式查看?** 我将构建一个交互视图,包含:摘要统计(按紧急程度计数、年度总价值)、彩色可排序表格、取消截止日时间线图,以及标注无上限定价风险的高亮行。如已连接图表工具,调用 `mcp_generate_bar_chart` 生成按紧急程度分组的续约分布图,调用 `mcp_generate_line_chart` 生成时间线视图,直接在对话中渲染;否则写入HTML文件可在浏览器中打开。 ## 集成:续约提醒代理 续约提醒代理按计划运行本技能(默认每周),将"即将到来的事项"报告发布到审查指引中配置的频道(飞书/企业微信/钉钉/邮件)。如需按日触发🔴紧急项,代理每日运行检查并仅在存在🔴项时推送。 ## 本技能不做的事 - 不取消合同。告知你何时应做决定。 - 不决定是否续约。呈现截止日期和业务负责人。 - 不阅读合同以查找续约日期——这在审查时完成。 - 不在未经用户确认的情况下覆盖登记册现有条目。