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.

32 lines
2.8 KiB

# 核心流程静态 demo
Label: wayfinder:prototype
Type: prototype
3 weeks ago
Status: resolved
Blocked by: 05
## Question
用 /prototype 技能做一个零构建的静态 HTML+JS 单页 demo(放 `demo/``deploy/demo/`,纯 fetch 直调后端 API,无 Node/构建链),覆盖核心流程的**点击级**验证,作为前端联调的「正确传参照」:
- 登录(token 存取)
- 省市区三级级联下拉(`/api/rule/region/*`)+ 字典下拉(渠道/品牌/需求产品/需求场景)
- 新增线索表单(含必填/非必填实测、字典与区划提交值)+ 连续新增
- 四列表页(线索公海/我的线索/我的关注/线索管理)分页 + 筛选
- 线索流转:领取/跟进反馈/释放/转商机/分配
- 公海池配置(新增/编辑)
要求:每个接口的请求/响应原文直接渲染在页面上;页面直接抛出的错误(4xx/5xx/字段缺失)一目了然。验完部署至测试服务器 `nginx/html/demo/`
3 weeks ago
## Answer
交付物:`deploy/demo/index.html`(零构建单文件 HTML+原生 JS,无任何构建链,浏览器直接打开即可;顶部标注 PROTOTYPE 一次性)。本地实测:`py -m http.server 8090 --directory deploy/demo` 后用浏览器 subagent 跑通全部 7 步(登录签发/区划三级级联/四组字典/公海池列表/四列表查询/新增线索返回 ID/全量请求日志),截图 `tmp/crm-demo-fullpage.png`
功能覆盖(对应票据清单):登录(调试端点签发 + 手工粘贴 token,localStorage 存取;钉钉扫码需 JSAPI 不在 demo 范围);省市区三级级联(/api/rule/region/level+list);字典四组下拉(enabled-list);新增线索(全字段 + claimOnCreate/followOnCreate,提交后改名保留表单支持连续新增);四列表(viewType 切换 + 状态/池/关键字筛选 + 分页);行内流转(领取/关注/反馈/释放/分池/分人/转商机/激活/详情/删除);公海池列表/详情回填编辑/新建保存/删除;每个操作原文面板 + 全量请求日志页签(新→旧)。
后端事实:CORS 全开(crm-base CorsConfig allowedOriginPatterns *),BASE 可指任意环境;测试服务器 compose 为 verify profile,调试 token 端点可用。nginx 现有 `location /` 直出 html 根目录,`/demo/` 无需改 conf。
发现项:①首次签发 token 偶发 HTTP 500(日志为 Redis Connection reset,远程 Redis 空闲断连的瞬时问题,重试即过,非代码 bug);②开发库存量数据(1 部门 + 3 线索)名称乱码,系早期写入编码问题,非接口 bug,联调库重建时自然消失。
部署(待测试服务器凭据后随最终交付一并执行):`scp deploy/demo/index.html <server>:/opt/crm/nginx/html/demo/index.html` 即上线(访问 http://<server>/demo/);同一轮把重打的 jar 推上去跑 `deploy/restart.sh`