2.4 KiB
2.4 KiB
2026-08-15
CNC 销售工作台前端分析(2026-08-15-13-49-49/)
- 单文件 PWA:
cnc-sales-workbench.html(原生 JS/CSS,无构建无依赖)+manifest.webmanifest+sw.js(离线缓存)。 - 存储:
localStorage["wb_cncsales_state"],SCHEMA=1;顶层{settings, ui, drafts, customers[], tasks[], notes[]}。 - 业务常量:阶段 s1~s8(信息收集→售后维护)、等级 A/B/C、优先级 P0/P1/P2、状态 todo/doing/done、重复 daily/weekly/monthly、资料分类 5 类(报价模板/技术沟通要点/谈判话术/合同注意事项/其他)、联系人角色 老板/技术/采购/其他。
- 6 大模块:客户档案、销售流程看板、任务待办、数据看板、资料库、数据中心(JSON/Excel/CSV 导入导出,merge 幂等合并)。
- ID 生成:
id+ 时间戳36进制 + 随机串;导入用自然键哈希保证幂等。
后端搭建(cnc-sales-backend/,技术选型:Go + SQLite)
- 用户选定 Go + SQLite(modernc.org/sqlite 纯 Go 驱动,无 CGO)。
- 项目结构:
main.go(入口,PORT/DB_PATH/STATIC_DIR/JWT_SECRET 环境变量)+internal/{database,models,auth,api}。 - 数据库:users/customers/contacts/follow_ups/tasks/notes/audit_log 共 7 表;业务表软删除(deleted_at)+ owner_id 数据隔离;contacts/follow_ups 外键级联。
- API(JWT 鉴权,72h):auth 注册/登录/me(首个用户自动 admin);customers CRUD+筛选+联系人/跟进子接口;tasks CRUD+toggle(完成时按 repeat 自动生成下一周期任务);notes CRUD;聚合 pipeline/stages、stats/overview、today;backup 导出导入(upsert,兼容前端备份格式)。
- 静态托管:static/ 复制了前端 3 个文件;根路径重定向:不可用
GET /{$}+GET /组合(实测 html 404),必须用HandleFunc("/")分流:r.URL.Path == "/"时 302 到/cnc-sales-workbench.html,否则交给http.FileServer。 - 环境:Go 1.26.6 在
/usr/local/go/bin(不在 PATH,需export PATH=$PATH:/usr/local/go/bin);GOPROXY=https://goproxy.cn,direct才能拉依赖(默认代理超时)。 - 已完成端到端冒烟测试(注册/登录/CRUD/重复任务/聚合/备份/401/静态页全部通过);测试数据已清理。
- 二进制:
bin/cnc-server,运行于 http://localhost:8080。前端尚未接入后端(仍 localStorage 单机模式),下一步可选做前端登录页 + 全量同步层(方案 A)。