液冷销售管理系统 / Sales Board
本地部署 · 公司内网
系统全貌 · System Overview

看清销售全局,
辅助管理层决策。 The whole sales picture · for the decisions leadership makes

销售把一线沟通粘进来,系统沿着「录入 → 提取 → 推进表 → 画像 → 周报 → 周会闭环」一路流转,把零散的销售过程汇成清晰的全局,为管理层的每一个决策提供依据。

FastAPI 后端 单页前端 SQLite 单文件库 DeepSeek 文本分析 火山引擎 联网搜索
5个入口
销售记录 · 推进表 · 客户画像 · AI 周报 · 客户管理
7大板块
从登录鉴权到底层支撑,核心流程闭环
20+ 张表
含审计日志、AI 调用日志、画像版本
01

登录与权限

需求

系统部署在公司内网,要区分管理员和销售,并防止未登录访问。

逻辑
  • 用户名 + 密码登录;密码以加盐 PBKDF2 哈希存储、不存明文,登录成功发放有效期 7 天的会话 Cookie。main.py:88
  • 所有 /api/ 请求经中间件鉴权:未登录返回 401;销售只能读(GET),新增/修改等写操作仅管理员可执行。main.py:72
  • 防暴力破解:同一用户名 15 分钟内输错 5 次密码,锁定 15 分钟。
  • 首次启动自动创建 admin 账号。
02

销售记录录入 · 含 AI 提取

需求

销售把口头、微信里的沟通内容粘贴进来,AI 自动整理成结构化记录,减少手工填表。

逻辑
  • 点「AI 提取」调 DeepSeek,按 CEO 视角的提示词提取客户名、沟通日期、双方参与人、阶段、摘要等。services.py:308 未配 API Key 时退回本地关键词规则提取。services.py:293
  • 提取结果先存草稿(ai_extractions 表),供用户预览确认。
  • 点「保存到推进表」正式写入 sales_records,自动匹配 / 关联客户与商机。services.py:599
  • 保存成功后,后台自动触发该客户的画像刷新。main.py:283
  • 「线索」类零散信息无明确客户,统一挂到"其他线索"占位客户下,不触发画像刷新。
  • 每次 AI 调用都把耗时、token 用量、成败写入 ai_logs 表。
03

销售推进表

需求

管理层一张表看所有客户的推进状态——固定的 8 列格式。

公司名称
沟通日期
我方参与人
对方参与人
阶段
沟通摘要
形式
AI 总结
main.py:287 从 sales_records 联表查询,每条记录一行,按时间倒序展示(可左右滑动查看全部列)。
逻辑
  • 支持搜索过滤。
  • 每行可点开抽屉手动修改字段(PATCH 接口),改的是这条记录本身;手动修改不会触发画像重新生成main.py:360
04

客户画像

核心板块
需求

把零散的销售记录 + 公开网络信息,整合成管理层能直接看的客户全景。

01基础画像
02技术画像
03决策链
04商务画像
05竞争画像
技术成熟度tech_score
按里程碑打分(0–100),只看销售记录,附"计算方法"弹窗 · 示例:拿到 RFQ = 60 分
商业成熟度business_score
同样基于销售记录的里程碑,数值为示意。
逻辑 services.py:1573
  • 触发:新增销售记录后自动跑(用缓存的网络搜索结果),或点「刷新画像」强制重新联网搜索。
  • 联网搜索:用火山引擎搜客户相关新闻,结果存 web_research_results,带来源分类(官网 / 媒体 / 招标公告)。
  • 合成:取最近 20 条销售记录 + 30 条网络结果发给 DeepSeek 整体重写。规则——决策链与商务画像只信销售记录;基础信息两边可用;每个字段标注来源编号,前端可点击溯源。
  • 评分:tech_score 与 business_score 按里程碑打分,只看销售记录,有"计算方法"说明。
  • 防并发:每个客户一把锁,两个刷新同时跑时后到的直接跳过,防止互相覆盖。
  • 失败保护:AI 合成失败就不写库,保留旧画像。
  • 客户动态:网络结果单独生成新闻流(customer_news_feed),每条再由 AI 写一句"与销售的相关性分析"。
  • 画像页还支持手动添加备注(notes)。
05

AI 周报 + 经营周会决策分发

需求

每周自动汇总销售动态、生成行动建议清单;周会开完后,把会议决策原文一键拆回每个客户名下,形成管理层指令闭环。

周报生成 · services.py:1821

本地规则,不调 AI

取本周销售记录(线索除外),每条生成一条行动建议,用本地规则推断优先级与截止时间标签。已生成的不重复,只为新记录追加,可前后翻周。

周会决策分发 · services.py:2006

原文拆分到人

管理员粘贴周会决策原文,DeepSeek 对照"客户名单 + 本周建议"拆成每客户指令。

↓ 写入 management_instructions 并建任务
归属客户 → 指令 无法归属 → unmatched
补充
  • AI 给的客户 ID 会再校验一遍:对不上就用客户名反查,再对不上才算 unmatched、单独展示,不会乱塞。
  • 这些管理层指令之后会出现在对应客户的画像页里。
06

客户管理 · 仅管理员

需求

小助理批量导入客户主数据(Excel / CSV),维护客户名单。

逻辑
  • 支持上传 xlsx / csv,逐行解析、字段归一化,按客户名 upsert——已存在就更新,不存在就新建。main.py:582
  • 每次导入留痕:原始文件存档 + 导入批次记录 + 每行成功 / 失败明细,可回查历史导入。
  • 也可以单个新建 / 编辑客户。
07

底层支撑

逻辑
  • 数据库:SQLite 单文件,开启 WAL 模式与 5 秒忙等待(对小团队并发够用),共 20 多张表,含审计日志表、AI 调用日志表、画像版本表。
  • AI 日志:每次 DeepSeek / 火山调用都记录 token 与耗时,方便核算成本。
  • 启动:双击 start.command 本机启动。
生产环境评估 · Production Readiness

适配"内网、几人到几十人"的场景,核心流程闭环完整。

架构对公司内网、小团队使用的定位是合适的。从录入到周会闭环,主链路逻辑完整、各处衔接清晰。

录入 → 提取 → 推进表 → 画像 → 周报 → 周会闭环
密码哈希 登录限流 AI 失败不破坏旧数据 画像并发锁 信息可溯源 导入留痕