refactor(arch): 落地平台架构演进第一二阶段整改,消除OOM与越权风险并支持高并发缓冲与AI多租户BYOK
- [P0安全底座] 多租户数据闭环:公开留资与雷达足迹自动逆向追溯绑定名片 tenantId 与归属销售 userId - [P0性能稳定] 消除内存全量加载:公海池分批带条件扫描回收,雷达国家分布改用 SQL 原生 GROUP BY 聚合查询彻底消除 OOM 隐患 - [P0商业变现] 商业化配额门禁切面:在 Cool-Admin modifyBefore 生命周期织入 assertQuotaAvailable 校验,阻断超额名片创建 - [P0环境解耦] 客户端解耦本地硬编码:request.uts 支持 api_base_url 本地覆盖,生产数据库名修正为 crmmpdata - [P1高并发削峰] 雷达足迹批量缓冲引擎:引入 CrmRadarBufferService 环形缓冲队列与阈值/定时批量 Bulk Insert 落盘 - [P2中枢租户化] AI 智能中枢多租户 BYOK 与 Token 成本风控:支持企业自带 Key 隔离、Token 消耗账本、用量配额门禁与名片人设个性化联动 - [跨端规范] 对齐 Uni-app x 移动微官网原生首屏与底部原生 tabBar 规范 - [测试驱动] 全工程 116 个测试套件,1,175 个单元与集成测试用例全部 100% 绿色通过,管理后台 Vite 打包无错误
这个提交包含在:
@@ -23,24 +23,26 @@ import * as entity20 from './modules/crm/entity/lead';
|
||||
import * as entity21 from './modules/crm/entity/audit';
|
||||
import * as entity22 from './modules/card/entity/locale';
|
||||
import * as entity23 from './modules/card/entity/info';
|
||||
import * as entity24 from './modules/card/entity/cases';
|
||||
import * as entity25 from './modules/card/entity/bento';
|
||||
import * as entity26 from './modules/card/entity/article';
|
||||
import * as entity27 from './modules/base/entity/base';
|
||||
import * as entity28 from './modules/base/entity/audit';
|
||||
import * as entity29 from './modules/base/entity/sys/user_role';
|
||||
import * as entity30 from './modules/base/entity/sys/user';
|
||||
import * as entity31 from './modules/base/entity/sys/role_menu';
|
||||
import * as entity32 from './modules/base/entity/sys/role_department';
|
||||
import * as entity33 from './modules/base/entity/sys/role';
|
||||
import * as entity34 from './modules/base/entity/sys/param';
|
||||
import * as entity35 from './modules/base/entity/sys/menu';
|
||||
import * as entity36 from './modules/base/entity/sys/log';
|
||||
import * as entity37 from './modules/base/entity/sys/department';
|
||||
import * as entity38 from './modules/base/entity/sys/conf';
|
||||
import * as entity39 from './modules/ai/entity/knowledge';
|
||||
import * as entity40 from './modules/ai/entity/glossary';
|
||||
import * as entity41 from './modules/ai/entity/concierge';
|
||||
import * as entity24 from './modules/card/entity/exchange';
|
||||
import * as entity25 from './modules/card/entity/contact';
|
||||
import * as entity26 from './modules/card/entity/cases';
|
||||
import * as entity27 from './modules/card/entity/bento';
|
||||
import * as entity28 from './modules/card/entity/article';
|
||||
import * as entity29 from './modules/base/entity/base';
|
||||
import * as entity30 from './modules/base/entity/audit';
|
||||
import * as entity31 from './modules/base/entity/sys/user_role';
|
||||
import * as entity32 from './modules/base/entity/sys/user';
|
||||
import * as entity33 from './modules/base/entity/sys/role_menu';
|
||||
import * as entity34 from './modules/base/entity/sys/role_department';
|
||||
import * as entity35 from './modules/base/entity/sys/role';
|
||||
import * as entity36 from './modules/base/entity/sys/param';
|
||||
import * as entity37 from './modules/base/entity/sys/menu';
|
||||
import * as entity38 from './modules/base/entity/sys/log';
|
||||
import * as entity39 from './modules/base/entity/sys/department';
|
||||
import * as entity40 from './modules/base/entity/sys/conf';
|
||||
import * as entity41 from './modules/ai/entity/knowledge';
|
||||
import * as entity42 from './modules/ai/entity/glossary';
|
||||
import * as entity43 from './modules/ai/entity/concierge';
|
||||
export const entities = [
|
||||
...Object.values(entity0),
|
||||
...Object.values(entity1),
|
||||
@@ -84,4 +86,6 @@ export const entities = [
|
||||
...Object.values(entity39),
|
||||
...Object.values(entity40),
|
||||
...Object.values(entity41),
|
||||
...Object.values(entity42),
|
||||
...Object.values(entity43),
|
||||
];
|
||||
|
||||
在新工单中引用
屏蔽一个用户