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.
105 lines
8.0 KiB
105 lines
8.0 KiB
|
3 days ago
|
# 环境盘点(票 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_name`;`party_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)
|