企业数据助手v2升级方案
修订版 · 架构重构 · 安全加固 · 双模式查询
第一章 v1现状诊断
安全评级:极度危险。红队评估结论:5分钟即可拿下财务数据。
一句话定性:数据库是存数据的,不是当接口用的。
致命问题清单
- SA账号公网直连 + 弱口令——数据库直接暴露在公网,攻击者可直接登录
- 无鉴权任何人可查——接口层缺失,前端直连数据库,没有身份验证
- DeepSeek密钥硬编码——API密钥写在代码里,泄露即失控
- 无备份机制——数据一旦丢失或被勒索,无法恢复
- 单点部署——无冗余,服务宕机即全停
- 会话记忆容器内重启丢失——对话上下文存在容器内存,重启即清空
- AI直接生成SQL打库——LLM生成的SQL直接执行,注入风险极高
第二轮论证补充发现
- 原v2方案过度设计约六成,大量功能短期内用不上
- 方案缺失分析能力,只有查询没有对比解读,回答不了"为什么"
- 因此本次修订以MVP为核心,砍掉非必要功能,新增双模式设计中的分析模式
第二章 v2目标架构
完整七层架构
对话窗(前端交互)
▼
接入层(鉴权 / 限流 / 路由)
▼
业务服务层(固化接口 / 业务逻辑)
▼
AI意图层(意图识别 / 参数提取 / 不生成SQL)
▼
会话管理层(上下文记忆 / 历史存储)
▼
数据层(只读账号 / 白名单查询)
▼
支撑层(日志 / 监控 / 备份 / 审计)
MVP精简版(四层核心)
对话窗
▼
业务服务层(固化10个接口)
▼
AI意图层(意图识别 + 参数提取)
▼
数据层(只读账号)
接入层 / 会话层 / 支撑层简化为内置能力,后续迭代补齐
核心原则:AI不生成SQL,只做意图识别。业务逻辑固化在服务层,数据库藏到底层。
第三章 核心设计修订
3.1 双模式设计
查询模式固定接口,100%准确
快捷按钮 + 明确查询指令
走预设SQL,结果可控可靠
适用于固定报表、数据查看
分析模式多接口取数 + AI解读
"为什么差距这么大"→先查应收汇总+收款汇总→AI对比解读
AI只负责解读,不生成SQL
适用于对比、归因、趋势分析
上下文继承机制
会话记忆保存上次查询参数,实现多轮对话的自然延续。例如:
- 上一轮查了"4月应收汇总"
- 下一轮问"明细呢"——自动带上"4月"参数,查询4月应收明细
- 再问"为什么差这么多"——进入分析模式,对比4月应收 vs 4月收款
3.2 AI参数提取边界规则表
AI从自然语言中提取查询参数时,必须严格遵循以下映射规则,低置信度时必须反问澄清。
| 自然语言表达 |
解析规则 |
示例 |
置信度 |
| 上个月 |
上月自然月 |
2026-05 |
高 |
| 最近三个月 |
近90天(含今天) |
2026-05-10 ~ 2026-08-10 |
高 |
| 同比 |
与去年同期对比 |
2026年4月 vs 2025年4月 |
高 |
| 累计 |
年初至今(YTD) |
2026-01-01 ~ 今天 |
高 |
| 季度 |
自然季度 |
Q2 = 4~6月 |
高 |
| 本月 |
当月1号至今天 |
2026-08-01 ~ 2026-08-10 |
高 |
| 含糊不清 / 多歧义 |
低置信度 → 反问澄清 |
"前阵子" → 请问是最近一周还是一个月? |
低 |
3.3 技术选型修订
后端框架
- FastAPI 保留——异步性能好,自动生成文档,适合数据接口
- SQL Server驱动坑规避:pyodbc在容器环境下配置复杂,推荐二选一:
- 方案A:改用 pymssql(纯Python,依赖少)
- 方案B:用 ODBC Driver 18 容器方案(Dockerfile内置安装)
JWT密钥管理
- 密钥必须通过环境变量注入,绝对不进入代码库
- Token存储:优先 HttpOnly Cookie 防XSS,次选内存存储
- 过期策略:AccessToken 2小时,RefreshToken 7天
SSE推送优化
- nginx配置必须加:
proxy_buffering off + proxy_read_timeout 120s
- 否则SSE流会被nginx缓冲,前端收不到实时推送
3.4 接口清单修订(MVP优先10个)
| 序号 |
接口名 |
用途 |
数据来源 |
优先级 |
| 1 |
应收汇总 |
按期间汇总应收金额 |
FM_ReceivableFee |
P0 核心 |
| 2 |
应收明细 |
逐条应收记录详情 |
FM_ReceivableFee + 关联 |
P0 核心 |
| 3 |
收款汇总 |
按期间汇总收款金额 |
FM_ReceiptBill |
P0 核心 |
| 4 |
欠款TOP |
欠款最多的客户排行 |
应收 - 已收 |
P0 核心 |
| 5 |
经营趋势 |
按月/季的收入趋势图 |
应收/收款按月聚合 |
P0 核心 |
| 6 |
账龄分析 |
按账龄段统计欠款分布 |
FM_ReceivableFee |
P0 核心 |
| 7 |
客户列表 |
客户基础信息查询 |
客户主表 |
P1 基础 |
| 8 |
合同列表 |
合同信息查询 |
合同主表 |
P1 基础 |
| 9 |
库存 |
库存数量/金额查询 |
库存表 |
P1 基础 |
| 10 |
商品 |
商品基础信息查询 |
商品表 |
P1 基础 |
后续迭代4个:客户详情 / 合同详情 / 收款明细 / 账龄明细
3.5 权限简化
- MVP阶段:简单两级权限(管理员 / 普通用户),或单账号密码登录
- 后续版本:五级权限体系(超级管理员 / 财务管理员 / 部门主管 / 普通员工 / 只读访客)
- 建议:MVP先用单账号起步,快速验证业务价值,再逐步细化权限
3.6 安全修订要点(12项)
01 AI参数白名单校验——params只能是数字/日期/白名单枚举,杜绝注入
02 LIKE通配符转义——防止用户输入%_等通配符注入
03 JWT密钥环境变量——密钥不进代码库,启动时注入
04 管理员MFA可选——后台登录支持双因素认证
05 老webhook关闭计划——/n8n-proxy/query、/n8n-proxy/chat 彻底下线
06 备份异地+加密——防勒索,多副本异地存储
07 审计日志脱敏——手机号打码,金额可见
08 .env不进镜像——配置与镜像分离
09 /docs关闭——生产环境禁用Swagger文档
10 速率限制——简单实现防暴力调用
11 Redis加密码——如使用Redis缓存,必须设置密码
12 数据库只读账号——应用层面只给SELECT权限
3.7 实施路线修订
- MVP版:2周 / 10人天——核心功能上线,验证业务价值
- 完整版:45~55人天(后续迭代)——体验增强 → 多人使用 → 企业级安全
第四章 数据库业务逻辑挖掘成果(简述)
数据规模概览
核心发现
合同状态字典
| 状态值 |
含义 |
占比 |
| -1 | 待提交 | 少量 |
| 0 | 审批中 | 少量 |
| 1 | 待签约 | 少量 |
| 2 | 待执行 | 少量 |
| 3 | 执行中 | 23.5% |
| 4 | 已作废 | 少量 |
| 5 | 已终止 | 69.9% |
应收核算逻辑
- 已收 / 未收判断:按 ReceiveAmount 与 ReceivedAmount 对比
- 主流状态:State = 0 占比约 96%
两套核算体系并存
- 现金流核算:FM_ReceivableFee / FM_ReceiptBill —— 按实际发生
- 权责发生制:FM_SysReceivableFee —— 按月拆分确认收入
- 接口口径必须明确选一套,否则数据对不上
收款 - 应收关联路径
FM_ReceiptBill → FM_ReceiptBillDetail.BillId → FeeRecordId → FM_ReceivableFee.Id
业务逻辑分布
六张核心表无触发器,业务逻辑全部封装在存储过程中。共1061个存储过程,是v2接口开发的重要参考依据。
第五章 实施路线
MVP版(2周 / 10人天)
第1周 · 基础骨架
搭建服务层骨架 + 鉴权体系 + 数据库只读账号 + 前3个核心接口(应收汇总 / 应收明细 / 收款汇总)
第2周 · 功能闭环 + 上线
完成剩余7个接口 + AI意图层 + 前端双模式切换 + 安全加固 + 部署上线
完整版(后续迭代 / 45~55人天)
第一阶段 · 体验增强
图表可视化 / 导出功能 / 更多接口 / 上下文记忆优化
第二阶段 · 多人使用
多级权限 / 多用户管理 / 操作审计 / 团队协作
第三阶段 · 企业级安全
MFA双因素 / 异地备份 / 数据加密 / 合规审计 / 高可用部署
第六章 风险与注意事项
平滑过渡策略
- 第一步:加服务层——新接口独立开发,不影响现有系统
- 第二步:前端切到服务层——前端逐步调用新接口,n8n退居二线
- 第三步:n8n退场——确认新系统稳定后,关闭老webhook接口
业务口径风险
- 两套核算体系(现金流 vs 权责发生制)并存,数据口径必须在接口层定死
- 如果口径选错,所有数字都对不上,会严重影响信任
- 建议MVP阶段先明确一套口径,后续再增加口径切换功能
数据安全红线
- 只读账号,绝不放开写权限——应用层只能查不能改
- AI永远不直接接触数据库,只和业务服务层交互
- 敏感字段(手机号、身份证等)必须脱敏展示
备份先行
- 任何改造前先做全量备份
- 备份要异地存储 + 加密,防勒索软件
- 定期演练恢复流程,确保备份可用
第七章 需决策的关键事项(5个)
决策点 01
核算口径:现金流 还是 权责发生制?
建议:现金流。符合企业经营直觉,数据容易对账,MVP先用这一套验证。后续再增加权责发生制口径。
决策点 02
部署节奏:先MVP 还是 直接上完整版?
建议:先MVP。2周快速上线核心功能,验证业务价值和用户接受度,再迭代补齐完整版。避免一次性投入过大、周期过长。
决策点 03
账号体系:单账号 还是 多账号两级权限?
建议:单账号起步。MVP阶段先用单账号密码登录,快速验证。等多人使用需求明确后,再升级为管理员/普通用户两级。
决策点 04
分析能力:"为什么差距这么大"这类分析,优先级多高?
建议:高优先级。这是v2相比v1的核心增值能力,通过双模式设计实现——查询模式保准确,分析模式提供洞察。建议MVP阶段就包含基础分析能力。
决策点 05
备份策略:预算多少?
建议:异地加密备份。数据是企业生命线,备份不能省。建议采用本地+异地双副本,加密存储,定期演练恢复。根据数据量确定具体预算。