Skip to content

Demo seeds for the activity model: crm_event / crm_event_attendee rows + a last_activity_date distribution (follow-up to #592) #671

Description

@os-zhuang

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 无从分层。

要做的

  1. src/data/ 补一批 crm_event + crm_event_attendee 种子(跨 lead/contact/account/opportunity/case 的 related_to_*,含 heldplanned 两种状态 —— 注意 Activity model: first-class meetings/events + call logging on every sales object #592 的语义:只有 held 代表已发生的接触)。
  2. 把现有种子客户的 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 类不同,请在实现时确认边界并在注释中记录)。
  3. 种子按对象家族落到 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 循环当前处于暂停态,由下次循环取用)。

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestmetadataDeclarative metadata — schema, security posture, UI surfacespm:dispatchedDispatched to a dev agent by /pm-dispatch

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions