Files
WorkBuddy/.codebuddy/memory/2026-08-15.md
T
2026-08-16 16:29:06 +08:00

2.4 KiB
Raw Blame History

2026-08-15

CNC 销售工作台前端分析(2026-08-15-13-49-49/

  • 单文件 PWAcnc-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 + SQLitemodernc.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 外键级联。
  • APIJWT 鉴权,72h):auth 注册/登录/me(首个用户自动 admin);customers CRUD+筛选+联系人/跟进子接口;tasks CRUD+toggle(完成时按 repeat 自动生成下一周期任务);notes CRUD;聚合 pipeline/stages、stats/overview、todaybackup 导出导入(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)。