# A5 项目管理 Demo 操作说明(票 14/15 产出 · 供 16 审计与 19 验收使用) ## 入口 - **单页入口**:`.scratch/crm-project/demo/index.html`(浏览器直接打开;默认 API=`http://localhost:8080`,可用 `?api=` 覆写,存 localStorage)。 - 被测后端:`crm-app` fat jar,verify profile(见下「环境」)。 ## 环境(起服) ``` 构建:mvn -s settings.xml clean package -DskipTests (JAVA_HOME=C:\Users\Administrator\.jdks\corretto-17.0.13,mvn=IDEA 捆绑 D:\INTELL~1.3\plugins\maven\lib\maven3\bin\mvn.cmd) 起服:SPRING_PROFILES_ACTIVE=verify + CRM_MINIO_AK=admin + CRM_MINIO_SK=Itc@123456 → java -jar crm-app\target\crm-app-1.0.0-SNAPSHOT.jar DB:远程共享库 8.129.84.155(凭据在 application.yml 默认值);本地 8080 占用时先杀 java 进程(jar 锁)。 ``` ## 种子数据(幂等) ``` py -X utf8 .scratch/crm-project/demo/seed_project_demo.py # 造客户/商机/方案卡/两个用户 py -X utf8 .scratch/crm-project/demo/seed_project_demo.py --wipe # 清理(demo 项目按名 A5DEMO-% 清) ``` 产出固定 id:客户 `99021001` / 方案卡 `99021008` / **销售总监 `99021002`**(title=销售总监,可回退)/ **普通销售 `99021003`**(回退被拒 68005)。 ## 角色切换 页头输入 userId → 「uid 登录」(verify profile `/api/auth/debug/token`,ADR-0014)。审计/验收至少切:`99021002`(总监,回退可见可操作)、`99021003`(普通销售,回退按钮可见但服务端 68005 拒绝——原型权限在服务端强制)。真实管理员角色用户(ROLE_ADMIN)同样可回退。 ## 全流程演示路径(对齐票 19 验收路径) 1. **建项**:`+ 新建项目` → 名称 + 客户 `99021001` + 方案卡 `99021008` → 创建。落库 stage=0 冲突处理 / 报备审核中(建项即报备,grill#12);自动跳详情。 2. **冲突解除=报备审核**(详情动作区或看板 stage0 卡「冲突解除」):通过 → filing=2 + stage 0→1 双写;驳回 → filing=3 停 stage0(可再审)。 3. **推进**:1→2→3 逐级(动作区按钮);stage3 有两颗按钮:`投标完成→4` 与 `无需招投标(3→5 连跳)`(唯一连跳)。 4. **回退**:stage≥2 出现「回退…」→ 弹窗列可选节点(已过节点、下限 stage1;3→5 连跳后 stage4 不在列)→ 选节点回退。总监可操作;普通销售服务端拒绝。 5. **赢/输分叉**(stage5):`标记赢单` → stage5 闭环锁死(回退 68003);`标记输单` → stage6 结项终态(status=3)。 6. **关闭**:任意 stage(进行中)→ 关闭类型/原因/备注 → status=2,关后无动作(终态锁)。 7. **详情 8 页签**:跟进(可新增)、附件(fileId 挂载/软删)、客户(目录单客户)、动态(全事件投影)、方案设计/商务报价/招投标(含标底等级名)/开标(赢输快照)——全读主表扩展列,零阶段子表。 ## 冒烟自检 ``` .scratch/customer-e2e/.venv10/Scripts/python.exe .scratch/crm-project/demo/smoke_a5.py ``` 25 步:登录→建项→看板 7 列/badge→列表双筛/mine→动态→冲突解除→推进→连跳→回退口径→赢单锁死(68003)→输单终态→关闭→8 页签→跟进新增→普通销售 68005→零 PUT/DELETE、零 console error。结果落 `smoke-result.json`,截图落 `shots/`。 ## 已知演示性简化(非缺陷) - 附件新增需先经 crm-file 上传拿 fileId(demo 不含上传控件,直接贴 fileId)。 - 「跟进时间」默认值取浏览器 UTC 时间(toISOString),演示时可手改本地时间。 - 看板卡/列表行点击进详情;详情依赖最近一次点击的项目(刷新页面后需重进)。