You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

29 lines
2.6 KiB

1 week ago
# 05 — 测试数据 seed 脚本(API 幂等)
Type: task
Status: resolved
Blocked by: 03, 04(均已解决)
## Question
写并执行 `.scratch/opportunity-e2e/seed-opportunity.py`,在远程 DB 造**商机业务数据精简矩阵**(用户/部门/角色/字典等基础数据不动):
- **约 15 条商机**:待领取(公海) / 推进中 / 暂缓中 / 已关闭 各 2-3 条,跨 2 个部门归属(验 DataScope 四视图差异);
- **推进中商机带样例**:跟进记录 ≥1、方案卡 ≥1(主要意向客户卡带预算)、团队成员 1-2 人;抽 1-2 条带现场勘察、附件引用、关注、自定义视图(crm-preference saved view);
- **幂等可重跑**:按票 04 拍板的标记约定先清后造;清理只动自己造的行,不碰他人数据;
- **顺带验证**:seed 全程走真实 API,任何一步非预期响应都记入缺陷草稿(这是 E2E 的第一手数据)。
产出:`seed-opportunity.py` + `seed-data-manifest.md`(每条数据 id→形态→用途,demo 与 E2E 都按它取数)。
## Answer
已解决 · 20260828 · 产出 `seed-opportunity.py`(593 行,幂等可重跑,重跑 5 次验证)+ `seed-data-manifest.md` + `seed-manifest.json`(机读)。
**落地矩阵(12 条商机,全部 e2e- 前缀)**:待领取 2(A/B 各 1,release-pool 造)+ 推进中 6(3 部门归属,含阶段切 seq2/seq3 样例)+ 暂缓 2(pause)+ 已关闭 2(close);已转项目(5) 按拍板不造。子表/偏好样例:跟进×2、勘察×1、方案卡×1(草稿→已提交,预算 88 万)、关联客户×1(DB 直插——**add API 不存在,缺陷证据**)、关注×1(A 关注 B)、自定义视图×1(B,scopeKey=opportunity)。规则前置:公海规则 + 方案卡模板各 1 条发布中(copy→publish,重跑幂等复用)。
**校验全过**:MANAGE=12 / PUBLIC_POOL=2 / A_MINE=4 / A_FOLLOWED=1;board summary 3 阶段分布;**U01 实测:新建初始 oppStatus=2(推进中)**。
**seed 过程实锤缺陷候选(喂票 07/09)**:① 关联客户无 add 端点(原型有按钮);② 团队成员无写端点(仅 team/list);③ 方案卡 valuesJson 的 fieldKey 只认绑定模板显示字段(66007);④ publish=保存并发布,校验请求 DTO 的 fields 列表(库里有不够);⑤ `Result<Void>` 端点 data=null(api 客户端勿当失败判)。
**过程坑**:清理级联删走 DB(API 无商机删除端点,8 控制器已核实);team/attachment 等 12 子表列名动态探测;文本值带类型猜错自愈(date/数字关键词替换)。