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.
 
 
 
 
 

5.9 KiB

商机 E2E · 环境盘点(远程库现状)

02-env-inventory(research)产出 · 20260828 · 走本地后端 API 盘点(后端已起,票 03 ),原始响应落 .scratch/opportunity-e2e/env-raw/*.json,分析脚本 env-inventory*.ps1 + analyze_env*.py

① 账号矩阵(推荐)

角色 姓名 userId 部门 依据
管理员 罗伟健 739564171091247104 无部门(primaryDeptId=null) roles=[管理员];hasRole('ADMIN') 通过(users/page 可调);MANAGE 视图回全量 26 条
普通用户 A 赖永利 744842565802524672 特战团队(营销中心子) roles=[] active
普通用户 B 肖琴 744842566742048768 冠军团队(营销中心子) roles=[] active;与 A 兄弟部门
普通用户 C 曾偲青 744842318024015872 职员(保伦公司子) roles=[] active;与 A/B 跨中心

备选:胡华波 744842555677474816(销售)、吴学纲 744842319282307072(行政稽查部)。 用户总数 6047(钉钉同步全公司);POST /api/system/users/page 筛选参数:deptId(含全部子孙)/employmentStatus(active/resigned/unassigned)/loginFrom/loginTo,需 ADMIN。

② 部门树(关键节点)

  • 根:广东保伦电子股份有限公司(744841292348915712)→ 职员 / 研发中心 / 行政稽查部 / 生产一~五厂 / 西安保伦 / 湖北爱递思 …
  • DEPT_AND_CHILD 现成样例:营销中心 744841295071019008(父)→ 特战团队 744841308564094976 + 冠军团队 744841308677341184(兄弟子部门)——A 挂特战、B 挂冠军即可验「含子孙可见兄弟不可见」。
  • 华南销售部(seed) 744700334353416192:独立根(上轮 seed 造),0 人挂靠
  • ⚠ 根节点 744636475731083264 的名称在库里就是坏字节(乱码不可还原),历史脏数据,不影响测试。

③ 字典可用性:22 组全在线

GET /api/dict/group/enabled-list 22 组、GET /api/dict/item/enabled-list?groupCode=<code> 逐组有项。商机相关枚举全齐:

项数 明细(code=xxx_N 递增,_99=其他)
opp_stage 5 客户圈定/关系摸排/资料采集/方案卡/已转项目(OPP_STAGE_01~05)
opp_source 3 线索转入/线下挖掘/客户转介绍
pause_reason 6 客户项目延期/预算冻结/招标暂停/政策不可抗力/个人原因/其他
close_reason 6 项目取消/客户放弃/竞争失败/重复商机/无效商机/其他
pool_reason 5 长期未有效跟进/客户暂无预算/项目暂停或延期/介入时机不成熟/其他
survey_seq 4 第一次/第二次/第三次/三次以上
follow_way 5 电话沟通/上门拜访/微信对接/线上会议/展会沟通
result_tag 8 暂无进展/需求确认/方案推进/…
attachment_type 5、customer_role 6、project_role 6、bid_form 4、locality_type 2、apply_way 2
industry 60(两级树) 一级 gov/edu/law/health/transport/energy/finance/park/tourism + 二级(gov_1 人大政协…),item.parentId 有值

④ 存量商机:26 条全是历史测试残留

  • 分布:status=2 推进中 25 条 + status=4 已关闭 1 条id=999999999001 手工 ID);待领取(1)/暂缓(3)/已转项目(5) 零覆盖 → seed 矩阵需补。
  • 归属:owner 全部=罗伟健、ownerDept 全部 null。
  • 编码污染实锤:部分 oppName 在库里就是 mojibake(如「B验证」「状态机验证」的坏字节版本)——上轮用 PS5.1 发 UTF-8 body 时编码错误所致,不可逆。结论:票 05 seed / 票 07/08 E2E 脚本一律用 Python requests(PS5.1 Invoke-RestMethod 发中文 body 必污染)。
  • poolReason 残留标记:e2e-assign / verify-assign / e2e / test / batch2(历史 seed 的隔离标记痕迹)。
  • 清理范围建议(票 04 拍):26 条无真实业务数据,可全量清理;保守方案=按上轮同名标记(sm-e2e/端到端回归/状态机e2e/回归测试/test-create/新增验证系列)圈定。全新 seed 建议统一 e2e- 前缀 + 记录 ID 清单。

⑤ 规则配置存量(crm-rule 三族)

条数 明细
阶段模板 1 OPP_STAGE_TPL_01 V1.0 发布中(status=2) 全公司默认(兜底种子)
方案卡模板 2 OPP_SCHEME_TPL_02 V1.0 草稿(status=1);OPP_SCHEME_TPL_01 V1.0 已停用(status=3)——无发布中版本
公海规则 0

缺口结论:① F09 方案卡的 selectable-templates 当前预期为空——票 08(或 seed)需先 save-draft→publish 一条方案卡模板;② 公海规则零配置 → F14 领取校验在「无规则」时的兜底行为本身是票 07/08 实测点,R03 需要 seed 造一条发布中规则。

⑥ API 契约事实(给票 05/07/08/10/11 的坑位清单)

  1. 分页参数 = current / size(BaseParam,size 上限 500),不是 pageNum/pageSize——传错不报错、静默走默认 current=1 size=10。
  2. 禁用 PS5.1 发中文 body:Invoke-RestMethod 发 UTF-8 body 编码错误 → 库里存 mojibake(④ 已有实锤);读响应也会把 UTF-8 按 Latin-1 解(可逆还原)。脚本一律 Python requests。
  3. dict item enabled-list 参数名 = groupCode(不是 code)。
  4. GET /api/auth/debug/token?userId= 签发即用;管理员 capabilities:users/page、MANAGE 视图、dict/role 全套 permCodes。

喂票 04 的决策点(承接 spec-flows U 清单)

  • seed 清理范围:全量清 26 条 vs 按标记圈定(④)。
  • 账号指认:上表 A/B/C 是否可用(他们无商机数据权限档位——debug token 是否绕过 DataScope 档位检查,票 05 设计时实测一条)。
  • 状态零覆盖的补法:待领取(1)/暂缓(3)/已转项目(5) 三态 seed 造法(转项目 ⊘,5 态可能造不出来——用关闭+重启对凑,或确认 5 态只能线索转入路径产生)。