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.
 
 
 
 
 

8.0 KiB

环境盘点(票 02 交付物)

生成:2026-09-03 22:10 · 本地起服 verify profile + 远程共享库 脚本:env-inventory.py / env-inventory2.py / env-inventory3.py(全在 .scratch/customer-e2e/

1. 环境拓扑与起服配方

MySQL 8.129.84.155:3306/crm(root,共享环境)
MinIO 远程共享(AK=admin)
应用 本机 8080,profile=verify,fat jar
打包 & "D:\IntelliJ IDEA 2025.1.3\plugins\maven\lib\maven3\bin\mvn.cmd" -B -pl crm-app -am package -DskipTests -q(JAVA_HOME=corretto-17.0.13)
起服 $env:SPRING_PROFILES_ACTIVE='verify'; $env:CRM_MINIO_AK='admin'; $env:CRM_MINIO_SK='...'; java -jar crm-app\target\crm-app-1.0.0-SNAPSHOT.jar
debug token GET /api/auth/debug/token?userId=739564171091247104(verify only)
Python py -X utf8(python 是 WindowsApps 空壳);pymysql 每步新连接 autocommit=True

2. 冒烟结果(D-01 修复后)

  • Started CrmAppApplication in 30.162s,无 ERROR
  • debug/token (token_len=177)→ /me (罗伟健 dept=744841292348915712,roles=[] 见 §6)→ pool/page http=200 code=0 total=0 → ping UP
  • D-01 修复真库复验通过:修复前 pool/page 500(Unknown column 'o.customer_id'),修复后 200。修复内容:CustomerMapper 两处 opportunity_count 子查询改走 opportunity_customer 真源 join(oc.delete_key=0 AND o.deleted=0),H2 测试 SCHEMA 同步(假列删除),23/23 全绿。缺陷仍登记 D-01(P0,H2 假列掩盖 + 票 12 冒烟未覆盖 workspace/page),修复随报告披露。

3. 库表全景(64 张)

  • crm_*:crm_auth_user / crm_auth_identity / crm_file_info
  • sys_*:sys_user_dept / sys_user_role / sys_role(+data_scope) / sys_dept / sys_menu / sys_region / sys_data_scope_module / sys_role_data_scope
  • dict_*:dict_group / dict_item / dict_group_default / dict_ref_count
  • 客户域 14 张:customer / customer_contact / customer_focus / customer_follow / customer_import_task / customer_import_fail / customer_oplog / customer_pending_notice / customer_reminder_rule / customer_team_member / customer_transfer / customer_transfer_detail / customer_view_log + user_saved_view / user_column_preference(偏好域)
  • lead_* 9 张、opportunity_* 25 张(商机域)
  • 计数(total/deleted=0):customer 5/4,customer_contact 0,customer_oplog 5/5,customer_follow 0,customer_team_member 0,customer_view_log 0(无 deleted 列),customer_focus 0(无 deleted 列),customer_pending_notice 0(无 deleted/审计列,列=id/customer_id/notice_status/notice_type/payload_json/plan_notify_time/target_user_id),customer_reminder_rule 1(全局规则,非 per-customer)

4. 存量客户数据(seed 输入)

customer_no 名称 owner arch stage deleted
KH202609030001 冒烟测试科技有限公司(库内 mojibake,坑㉑ 历史残留) 罗伟健 1 1 1(软删)
KH202609030002 编码判别科技有限公司 罗伟健 1 1 0
KH202609030003 关注冒烟科技有限公司 罗伟健 1 1 0
KH202609030004 冒烟诊断科技公司 罗伟健 1 1 0
KH202609030005 星辰大海贸易有限公司175909 罗伟健 1 1 0
  • 公海空池(owner IS NULL = 0 条);owner 全部=罗伟健/dept=744841292348915712
  • 编号水位:客户编号序列当前用到 KH202609030005,seed 从 0006 起(前缀 KH20260903
  • ⚠ 共享库:seed 数据必须可辨识(统一名称前缀)+ 可清理(登记 id 清单),禁 TRUNCATE

5. 商机域残留(票 05 跨模块口径输入)

  • opportunity 25 总 / 23 deleted=0;e2e- 前缀 15 条(lead 域 e2e 种子:e2e-A-推进/暂缓/公海/关闭 × e2e-B-…)
  • 非 e2e 残留:demo-验收-新建闭环、accept-自测-新建HHMMSS 系列、demo-12 系列(历史验收产物,不在本票清理范围
  • opportunity_customer 20 行 delete_key=0,customer_id=920000000000000100~800(lead 域假客户 id,不在 customer 表——孤儿绑定,对客户列表 opportunity_count 无影响:join customer 后无匹配)
  • opportunity 列陷阱:名称列=opp_nameparty_a/party_a_clear(老)与 partya/partyaclear(新,孤立单大写陷阱迁移痕迹)并存——D-01 修复正是绕开 opportunity.customer_id 幽灵列走 opportunity_customer

6. 账号矩阵

  • 用户 6047、部门 814(钉钉全量同步,非测试造数)
  • debug 用户 739564171091247104 罗伟健,dept=744841292348915712(广东保伦电子股份有限公司,根)
  • 角色仅 1 个ROLE_ADMIN(id=738108305758486528,data_scope=4(全部),builtin=1)——仅挂在罗伟健上
  • 其余 6046 用户无任何角色 → /me roles=[]。票 04 跨用户实测(协同人/转称接收人/公海领取)时:debug token 可给任意 userId 发 token,但无角色用户的权限拦截语义(放行 or 拒绝)待实测,列入票 04 观察点;若被拦,跨用户场景改用「同一 admin + 数据侧变化」替代视角切换

7. 部门树

  • 3 根:744636475731083264(名乱码)、744700334353416192 华南销售部(seed)、744841292348915712 广东保伦电子股份有限公司
  • 保伦下一级 16 部:职员 / 研发中心 / 行政稽查部 / 生产一~五厂 / 工厂管理部 / 研发权限组 / 临时组 / 蓝领新入职待分配 / 算法安全应急小组 / 西安保伦 / 湖北爱递思 / 实训实习
  • E2E 用部门:主=744841292348915712(admin 所在);跨部门场景任取叶子部门(如 744841292483133440 职员)

8. 字典(24 组 / 241 item,活跃 229)

code items code items
customer_status 客户状态 3 industry 所属行业 60
customer_type 客户类型 6 lead_source 渠道 38
brand 品牌 9 product 需求产品 16
scene 需求场景 18 opp_stage 商机阶段 5
opp_source 商机来源 3 opp_type 商机类型 3
bid_form 招标形式 4 result_tag 跟进结果标签 8
pause_reason 暂缓原因 6 design_config 设计配置 6
pool_reason 进入公海原因 5 project_role 商机项目角色 6
close_reason 关闭原因 6 locality_type 项目属地 2
follow_way 跟进方式 5 survey_seq 勘察次数 4
apply_way 申请方式 2 customer_role 客户角色 6
attachment_type 商机资料类型 5 transfer_reason 交接原因 3
  • 客户域可用:customer_status / customer_type / industry(60 项,含子级)/ lead_source;dict_item 挂 group_id(非 group_code),join dict_group 取 code

9. 列名陷阱速查(pymysql/SQL 直查时)

显示列 备注
crm_auth_user username 无 name/account 常有值
sys_dept dept_name 根部门 parent_id=0(非 NULL)
sys_role role_code/role_name/data_scope data_scope: 4=全部
dict_group code/name
dict_item group_id/code/name/value join dict_group.code
opportunity opp_name/opp_status party_a vs partya 并存
customer_view_log / customer_focus / customer_pending_notice 无 deleted 列

10. 给票 03(seed)的约束

  1. 编号接续 KH202609030006+;名称统一带可辨识标记(如 e2e客- 前缀或名称后缀日期戳)
  2. 幂等:按名称标记查存在则复用/清理重建;清理范围=客户域 14 表 + opportunity_customer 中关联行(删客户前先解绑/软删)
  3. 中文一律走 Python API(坑㉑),禁 PS 发 body
  4. seed 必须覆盖(spec-flows F-01..F-16 输入):多阶段客户、公海客户(owner 空)、协同客户(team_member)、跟进到期(customer_follow.next_follow_time 过去时)、关注(focus)、待合并重复客户(同名对)、转称目标客户、导入批次用客户
  5. 造数走 API 优先(同时喂 oplog/view_log 等副表),直插 DB 仅限 API 无法到达的行(如 last_view_time)