Follow-up to #592 / PR #670 , filed by the PM per the scope ruling recorded there(种子数据被明确裁定在 #592 之外,由本 issue 承接)。
现状(PR #670 合并后)
活动模型的元数据与动作全部就位,但演示库里没有一行 crm_event / crm_event_attendee:
Sales Activity 仪表盘全是 0 (widget 绑定已通过 ADR-0021 校验,缺的只是行);
crm_event 的日历视图与互动历史视图为空;
at_risk_accounts / customer_churn_signals 依赖的 crm_account.last_activity_date 在种子客户上仍是 null,三个「沉默 30/60/90 天」tile 无从分层。
要做的
在 src/data/ 补一批 crm_event + crm_event_attendee 种子(跨 lead/contact/account/opportunity/case 的 related_to_*,含 held 与 planned 两种状态 —— 注意 Activity model: first-class meetings/events + call logging on every sales object #592 的语义:只有 held 代表已发生的接触)。
把现有种子客户的 last_activity_date 铺开成 30/60/90 天各有落点的分布,让三个流失 tile 各自非空。注意 src/data/_shared.ts 的种子教条(hook 拥有的派生字段不手抄;last_activity_date 已随 feat(activity): first-class events, per-object call logging, and real interaction recency (#592) #670 去掉 readonly,种子作为历史状态直接写入是允许的 —— 与教条第 3 条的 billing_country 类不同,请在实现时确认边界并在注释中记录)。
种子按对象家族落到 src/data/index.ts sits ~1.5KB under the 100KB hygiene cap, so the next seed edit fails pnpm hygiene #635 拆分后的对应 *.seed.ts 模块(sales/service 家族),不要回填进 index.ts。
验收
pnpm demo:reset && pnpm dev 后,Sales Activity 仪表盘每个 widget 非零;
三个流失 tile(30/60/90 天)各覆盖至少一个客户;
test/territory-seed-coverage.test.ts 一类既有种子守卫不回归。
Filed unassigned(PM 循环当前处于暂停态,由下次循环取用)。
Follow-up to #592 / PR #670, filed by the PM per the scope ruling recorded there(种子数据被明确裁定在 #592 之外,由本 issue 承接)。
现状(PR #670 合并后)
活动模型的元数据与动作全部就位,但演示库里没有一行
crm_event/crm_event_attendee:crm_event的日历视图与互动历史视图为空;at_risk_accounts/customer_churn_signals依赖的crm_account.last_activity_date在种子客户上仍是 null,三个「沉默 30/60/90 天」tile 无从分层。要做的
src/data/补一批crm_event+crm_event_attendee种子(跨 lead/contact/account/opportunity/case 的related_to_*,含held与planned两种状态 —— 注意 Activity model: first-class meetings/events + call logging on every sales object #592 的语义:只有held代表已发生的接触)。last_activity_date铺开成 30/60/90 天各有落点的分布,让三个流失 tile 各自非空。注意src/data/_shared.ts的种子教条(hook 拥有的派生字段不手抄;last_activity_date已随 feat(activity): first-class events, per-object call logging, and real interaction recency (#592) #670 去掉 readonly,种子作为历史状态直接写入是允许的 —— 与教条第 3 条的billing_country类不同,请在实现时确认边界并在注释中记录)。src/data/index.tssits ~1.5KB under the 100KB hygiene cap, so the next seed edit failspnpm hygiene#635 拆分后的对应*.seed.ts模块(sales/service 家族),不要回填进index.ts。验收
pnpm demo:reset && pnpm dev后,Sales Activity 仪表盘每个 widget 非零;test/territory-seed-coverage.test.ts一类既有种子守卫不回归。Filed unassigned(PM 循环当前处于暂停态,由下次循环取用)。