技术与安全

做出来容易,
每天扛住真实业务才难

这不是做完就放着的演示品 —— 它是立成自己每天在用的生产系统, 订单、钱、工厂结算全跑在上面。下面是支撑这件事的工程设计。

107道自动化质量闸门
135个登记在册的 AI 场景
2个接口实例,滚动重启
0次部署造成的服务中断

口径:闸门 = 仓库里的自动检查脚本数;中断 = 每 150 毫秒一次探针、连打 200 次期间的失败次数。

架构

一眼看完它是怎么搭的

接口是双实例,所以更新的时候可以一个一个重启,用的人感觉不到。

浏览器 / 手机业务、工厂、物流商同一个入口
网关TLS · 安全响应头 · 限流 · 静态直发
接口实例 A先重启它,流量自动走 B
接口实例 BA 真正就绪后才动 B
业务数据库独立部署,不与他人混库
文件与图片内容去重 · 异地加密备份
AI 模型服务按场景选,可降级切换
顺带说明这个宣传站自己的位置 ——
你正在看的这个站 独立域名、独立配置、纯静态文件。
这个域名下不存在后端 —— 打任何接口路径都是 404。
权限

一次写入,要过五道门

外贸公司里「谁能看到成本」「谁能改订单」是真金白银的事, 所以这块做得比一般 CRM 重 —— 绕开界面直接调接口,一样拦得住。

端点门

请求刚进来就按角色和模块判一次:这个角色能不能碰这个模块的这个动作。

服务层门

业务逻辑内部再判一次归属:是不是你名下的客户、你负责的订单。

写入前置校验

真正落库之前,独立再查一遍权限与合规,和前面两道各自独立、互不替代。

白名单登记

每个写操作必须登记在册才允许执行 —— 没登记的新功能一律拒绝,不会悄悄放行。

界面显隐

最后才是按钮显不显示。它是体验,不是安全 —— 安全在前面四道。

成本与毛利是单独一层

不跟随模块权限,单独一个开关。外部角色(工厂 / 物流商)在代码层面恒不可见 —— 不靠管理员记得取消勾选,勾了也没用。

用管理员账号测等于没测

管理员在每道门前都直接放行,所以权限缺陷用它永远复现不出来。 验收固定跑「非管理员角色 × 全部只读接口」的矩阵测试,一千多次调用。

删除不是真删

先进回收站,到期才真删;谁在什么时候改了什么全程留痕,可回溯。

AI 治理

「接了个大模型」和「把 AI 做进业务」,差的是这一套

135 个场景,每一个都要走完下面这条线才允许上线。

登记 叫什么、在哪一屏、属于哪类
选模型 按速度 / 成本 / 质量分别配
先取事实 价格库存从库里取,不让它编
调用 失败可自动切备选模型
记账 谁触发、用了多少,可查
人工确认 高影响动作不自动执行

查不到的,一律不报数字

涉及价格、库存、交期的场景,系统先把真实数据取出来递给模型,并明确告诉它哪些查不到。 没有的只写「我们正在确认」—— 这条是硬规则,不靠提示词碰运气。

AI 只建议,不拍板

风险识别、绩效、审批这些场景里,判断由确定性规则做, AI 负责总结、解释和排序。高影响动作一律要人工确认才执行。

提示词集中管理

各场景的提示词统一维护、可灰度开关,不散落在代码各处; 调整措辞不需要发版。按人按天有用量上限。

工程质量

靠闸门,不靠记性

系统规模大了以后,「记得检查」这件事必然失效。 所以每一类踩过的坑,都被做成了一道自动检查。

107 道自动检查

覆盖权限接线、数据一致性、接口注册、界面规范、时区换算、附件挂载等类别, 每次改动前后都要全绿才允许部署。

每道闸门都做过反向验证

新增一道检查时,先故意注入一个错误确认它真的报红,再还原确认它转绿 —— 一道从没红过的检查等于没有检查。

真实角色冒烟测试

八个非管理员角色乘以两百多个只读接口全跑一遍, 只认一种信号:换个角色一调就崩。

零停机滚动部署

接口双实例,严格串行重启并等前一个真正就绪。 实测部署期间服务中断为 0 次。

部署有哨兵

换版前先读线上当前版本当哨兵,版本漂移就中止且一个字节不动, 避免覆盖掉别人刚上线的东西。

旧页面不会白屏

前端更新后,还开着旧页面的人会收到提示而不是一片空白; 上一版资源保留一段时间,保证平滑过渡。

数据归属

数据是谁的,放在哪里

独立部署,不混库

每一套系统有自己独立的数据库与存储,不与其他公司共用一张表。 要迁走、要导出、要停用,使用方说了算。

敏感凭据统一托管

对外集成的 API Key、Token、Secret 集中加密存放, 不散落在配置文件里,也不明文出现在界面和日志上。

异地加密备份

数据库与上传文件每日备份到异地对象存储,传输与静态均加密, 备份完成后自动校验 —— 没校验过就不算备份。

日志脱敏

运行日志与 AI 调用日志里的联系方式、凭据等敏感字段在写入前就被脱敏, 并且有自动检查盯着这件事不被改回去。

集成

和外面的世界连起来

外贸的业务不在一个系统里发生,所以连接能力是刚需。

邮箱

多账号收发、会话线程、签名、附件自动进文件中心

独立站

询盘签名校验后直接入库并按规则分配给业务

物流轨迹

运单自动登记与轨迹回传,状态变化推送给相关的人

钉钉

待办与审批推送、经营简报定时发送

WhatsApp

会话同步、消息归属到客户、发送有多重确认闸

对象存储

文件与图片统一存放,内容去重,异地备份

AI 模型

支持多家模型服务,按场景切换与降级

导出

订单、报价、确认单、箱单中英双语导出

顺带说一下

这个网站自己是怎么做的

既然这一页讲安全,就把你正在看的这个页面也讲清楚。

  • 它和 CRM 是两套完全独立的东西。独立域名、独立服务配置、独立目录, 不共用一个应用、不共用一个进程。一个挂了另一个不受影响。
  • 这个域名下不存在后端接口。不是「接口有权限校验」, 是这个域名的路由里根本没有接口 —— 访问任何接口路径都是 404,连 401 都不会有。
  • 全站零接口调用、零数据库、零 cookie。你看到的每一个数字、客户名、金额 都是写死在页面里的虚构演示数据,不存在可以爬取的真实数据。
  • 零 JavaScript。整站一行脚本都没有,页面上所有动效都是 CSS 做的; 安全策略里直接把脚本和网络请求都禁掉了。
  • 不加载任何第三方资源。没有外部字体、图标库、统计代码 —— 打开这个页面不会产生任何对外请求。
  • CRM 系统本身不对搜索引擎开放,本站也不会链过去。

上线前的实测结果

这些不是设计意图,是上线当天在生产环境上一条条打出来的。

本域名下的接口路径 404
本域名下的回调 / 上传路径 404
整页对外请求数 0
页面上的脚本数 0