无尘阁日记

无尘阁日记

接入deepseek之需求对话-003
2025-03-21

《接入deepseek之需求对话-001》

《接入deepseek之需求对话-002》

《接入deepseek之需求对话-003》

《接入deepseek之需求对话-004》

《接入deepseek之需求对话-005》

《接入deepseek之需求对话-006》




问:

好。之前的表已经优化整理完毕。下面我们考虑今天提供给你的新需求需要新增的表。一个个来。

答:

非常好,恭喜我们完成了对已有表结构的全面升级!你这套结构已经具备了高可维护、高扩展性、高审计性的基础框架。


✅ 接下来,我们进入 新增表设计阶段

我们将一张一张表逐个梳理你今天提出的新需求,进行结构设计,并保持统一风格(小写、下划线命名)。

你今天提供的新增功能模块包括:

✅ 后管功能:

  1. AI助手启用开关(按企业)

  2. AI助手模型配置(支持多模型选择及限制)

  3. 记忆功能设置(上下文条数、是否跨会话)

  4. 模型访问策略(调用间隔、Token上限、使用期限)

  5. 模型管理(模型名、API地址、默认参数)

  6. 敏感词处理策略(模糊匹配、企业维度)

  7. 提示词优先级、企业隔离

  8. AI助手开通记录(独立于用户表)

  9. 免责声明签署记录(已完成设计 ✅)


📌 第一张新表设计:企业模型配置表

🎯 功能定位:

每个企业可以使用多个模型,每个模型都有自己的:

  • 是否启用

  • 请求间隔

  • token使用上限

  • 使用期限

  • 是否启用记忆、记忆条数、是否跨会话


✅ 表名建议:

ai_org_model_configs

✅ 字段设计:

CREATE TABLE `ai_org_model_configs` (
  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `org_id` BIGINT NOT NULL COMMENT '企业ID',
  `ai_provider_id` BIGINT NOT NULL COMMENT '模型ID(关联 ai_providers)',

  `is_enabled` BOOLEAN DEFAULT TRUE COMMENT '是否启用该模型',
  `request_interval_sec` INT DEFAULT 60 COMMENT '访问间隔(秒)',
  `token_limit` BIGINT DEFAULT 0 COMMENT '有效期内Token上限(0表示不限)',
  `token_used` BIGINT DEFAULT 0 COMMENT '当前已使用token(系统统计用)',
  `start_time` DATETIME DEFAULT NULL COMMENT '模型使用起始时间',
  `end_time` DATETIME DEFAULT NULL COMMENT '模型使用终止时间',

  `memory_enabled` BOOLEAN DEFAULT FALSE COMMENT '是否开启上下文记忆',
  `memory_depth` INT DEFAULT 1 COMMENT '上下文记忆条数',
  `memory_cross_session` BOOLEAN DEFAULT FALSE COMMENT '是否允许跨会话追问',

  `sensitive_fuzzy_match` BOOLEAN DEFAULT FALSE COMMENT '敏感词是否启用模糊匹配',
  `suggested_keywords_enabled` BOOLEAN DEFAULT TRUE COMMENT '是否启用提示词联想',

  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  PRIMARY KEY (`id`),  UNIQUE KEY `org_model_unique` (`org_id`, `ai_provider_id`),  FOREIGN KEY (`org_id`) REFERENCES `organization`(`id`) ON DELETE CASCADE,  FOREIGN KEY (`ai_provider_id`) REFERENCES `ai_providers`(`id`) ON DELETE CASCADE
);

✅ 字段说明

字段说明
org_id所属企业
ai_provider_id允许使用的模型
is_enabled当前企业是否启用这个模型
request_interval_sec调用频率限制(秒)
token_limit, token_used总限额与当前使用量
start_time, end_time限定模型使用时间段
memory_enabled, depth, cross_session记忆策略控制
sensitive_fuzzy_match是否模糊匹配敏感词
suggested_keywords_enabled是否开启提示词联想

✅ 表设计总结

项目说明
表名ai_org_model_configs
粒度企业 × 模型
用途管控企业对各模型的调用、频率、用量、记忆、风险策略

是否接受这张表结构设计?如果确认,我继续设计第二张新增表(例如:模型基础管理表(模型列表)AI助手开通记录表)。你也可以指定下一张要设计的表。

问:

继续下一张。

答:

好,我们继续。


📌 第二张新增表设计:AI助手开通记录表

🎯 功能定位:

用于记录每个用户何时在哪个企业中开通了 AI 估值助手功能,并保持长期可审计、可查询。

你在前面有以下明确要求:

  • 开通记录独立于用户表保存

  • 需要支持“用户状态管理”

  • 用户可能在多个企业开启使用

  • ai_settings 不冲突,专门记录“是否开通 + 何时开通 + 由谁开通”


✅ 表名建议:

ai_user_activation_records

✅ 字段设计:

CREATE TABLE `ai_user_activation_records` (
  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `user_id` BIGINT NOT NULL COMMENT '用户ID',
  `org_id` BIGINT NOT NULL COMMENT '企业ID',
  
  `is_activated` BOOLEAN DEFAULT TRUE COMMENT '是否已开通AI助手功能',
  `activated_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '首次开通时间',
  `deactivated_at` DATETIME DEFAULT NULL COMMENT '关闭功能的时间(如果有)',

  `status` TINYINT DEFAULT 1 COMMENT '当前状态:1启用,0禁用,-1封禁',
  `remark` VARCHAR(255) DEFAULT NULL COMMENT '备注信息(如禁用原因)',

  `created_by` BIGINT DEFAULT NULL COMMENT '操作人(管理员ID)',
  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  PRIMARY KEY (`id`),  UNIQUE KEY `user_org_unique` (`user_id`, `org_id`),  FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON DELETE CASCADE,  FOREIGN KEY (`org_id`) REFERENCES `organization`(`id`) ON DELETE CASCADE
);

✅ 字段说明:

字段名说明
user_id, org_id表示哪个用户在哪个企业开通
is_activated当前是否开通(true/false)
activated_at首次开通时间(历史保留)
deactivated_at若被关闭,记录关闭时间
status状态码(0暂停、1启用、-1封禁),便于后台控制权限
remark管理员填写备注,比如“违规使用被关闭”

✅ 使用场景:

场景系统行为
用户首次使用 AI助手创建记录,is_activated=true
管理员手动禁用某用户使用设置 is_activated=false + deactivated_at=NOW()
查询某企业所有开通用户SELECT * FROM ai_user_activation_records WHERE org_id=xxx AND is_activated=1

✅ 表设计总结:

项目说明
表名ai_user_activation_records
粒度用户 × 企业
功能记录是否开通 AI助手功能、时间、状态、追踪操作人

是否确认这个表结构?
确认后我们进入下一张新增表,比如:“提示词管理增强”、“企业提示词配置表”或“模型基础表(用于配置 API 和默认值)”。你也可以指定下一个模块。

问:

那给企业开通ai助手记录在哪张表呢?

答:

你这个问题问得非常关键,涉及系统架构中“企业级是否启用 AI助手功能”这个控制逻辑的设计归属。


✅ 先明确一下粒度区分:

级别控制维度示例表
✅ 企业级某企业是否启用 AI助手功能🟩 tj_headoffice_capacity ✅(推荐)
✅ 用户级某用户是否启用 / 已开通🟩 ai_user_activation_records ✅(我们刚设计的)

✅ 回答你的问题:

企业是否开通 AI助手功能,建议记录在 tj_headoffice_capacity 表中,这是你现有用于管理企业整体“系统能力”的表,结构已经包括了:

  • 启用状态(AccountStatus

  • 可用人数、网络流量、版本号控制等

你今天新增需求中也说明了:

AI估算助手是针对整个企业开启。
目前不对企业级管理员开放这个AI管理功能。


✅ 推荐新增字段至 tj_headoffice_capacity

ALTER TABLE `tj_headoffice_capacity`ADD COLUMN `ai_assistant_enabled` BOOLEAN DEFAULT FALSE COMMENT '是否开通AI估值助手功能';

✅ 字段解释:

字段名类型说明
ai_assistant_enabledBOOLEAN控制整个企业是否允许使用 AI助手

✅ 系统联动逻辑建议:

场景系统行为
企业未开通 AI助手(ai_assistant_enabled=FALSE所有用户无法启用,前端不展示相关入口
企业开通后,用户可独立签署协议并启用对应创建 ai_user_activation_records
管理员关闭企业AI功能可全员禁用或清空用户记录(如违约)

✅ 小结

控制粒度字段所在表字段名
企业开通状态tj_headoffice_capacityai_assistant_enabled
用户开通记录ai_user_activation_recordsis_activated + activated_at

是否接受这种设计方式?
如果你确认我就在后面设计下一张新增表,例如 模型基础管理表(ai_models 或 ai_providers 优化)企业提示词策略配置表。你也可以指定模块。

问:

企业级不仅仅开通不开通,还有其他的企业级设置,请你考虑最开始我跟你沟通的结果。

答:

你这句话是点睛之笔 ✅
我们现在来回溯最初你提到的企业级 AI助手设置逻辑,不仅仅是“开通与否”,还包括多个关键的企业专属限制和策略控制维度,需要统一管理。


🧠 回顾你最早给我的核心业务场景:

你明确指出这些都是针对企业级别配置,不属于用户层或模型层:

配置维度说明
✅ 是否启用 AI助手企业级总开关
✅ 模型访问频率限制如访问间隔(秒)
✅ Token 使用上限总Token配额限制
✅ 使用有效期开始-结束时间限制
✅ 记忆功能是否启用包括开启、条数、是否跨会话
✅ 敏感词是否模糊匹配安全策略
✅ 提示词是否启用联想支持策略
✅ 用户最大启用数允许最多多少人使用助手功能
✅ 企业是否允许切换模型限制灵活度控制(可选)

✅ 所以你的问题本质上是:

企业所有 AI助手使用相关的总控配置,应该在哪张表集中管理?是否已有?如何设计?


✅ 结论:

这类信息应全部记录在企业能力配置主表:

tj_headoffice_capacity

我建议将 AI助手相关字段统一挂载到这个表中。


📦 推荐新增字段清单(挂载到 tj_headoffice_capacity

ALTER TABLE `tj_headoffice_capacity`-- AI 助手模块总开关ADD COLUMN `ai_assistant_enabled` BOOLEAN DEFAULT FALSE COMMENT '是否开通AI助手功能',-- 模型访问策略ADD COLUMN `ai_request_interval_sec` INT DEFAULT 60 COMMENT 'AI访问最小间隔(秒)',ADD COLUMN `ai_token_limit` BIGINT DEFAULT 0 COMMENT 'AI助手总Token上限(0表示不限)',ADD COLUMN `ai_token_used` BIGINT DEFAULT 0 COMMENT '当前已用Token数(自动统计)',ADD COLUMN `ai_access_start_time` DATETIME DEFAULT NULL COMMENT 'AI助手启用开始时间',ADD COLUMN `ai_access_end_time` DATETIME DEFAULT NULL COMMENT 'AI助手启用结束时间',-- 记忆功能策略ADD COLUMN `ai_memory_enabled` BOOLEAN DEFAULT FALSE COMMENT '是否启用记忆功能',ADD COLUMN `ai_memory_depth` INT DEFAULT 1 COMMENT '上下文回溯条数(默认1条)',ADD COLUMN `ai_memory_cross_session` BOOLEAN DEFAULT FALSE COMMENT '是否允许跨会话追问',-- 风控策略ADD COLUMN `ai_sensitive_fuzzy_match` BOOLEAN DEFAULT FALSE COMMENT '是否开启敏感词模糊匹配',ADD COLUMN `ai_suggested_keywords_enabled` BOOLEAN DEFAULT TRUE COMMENT '是否启用提示词联想功能',-- 用户限制ADD COLUMN `ai_max_active_users` INT DEFAULT 0 COMMENT 'AI助手最多启用用户数(0表示不限)';

✅ 字段分类说明

📌 总控类

  • ai_assistant_enabled

📌 模型访问限制类

  • ai_request_interval_sec

  • ai_token_limit

  • ai_token_used

  • ai_access_start_time

  • ai_access_end_time

📌 记忆机制类

  • ai_memory_enabled

  • ai_memory_depth

  • ai_memory_cross_session

📌 风控安全策略类

  • ai_sensitive_fuzzy_match

  • ai_suggested_keywords_enabled

📌 用户数量控制

  • ai_max_active_users


✅ 系统联动逻辑建议

模块控制行为
模型请求限制按企业计算是否超过 Token 总数 + 间隔秒数
用户端记忆功能查询企业是否启用记忆(而不是查个人)
敏感词匹配控制是否启用模糊搜索
提示词展示判断是否展示提示词联想浮窗
人数限制达到上限后阻止新用户开通 AI助手功能

✅ 优势

  • 不再分散配置在多个表中

  • 查询效率高,所有企业级配置一表掌控

  • 更符合权限链条:AI助手是否启用 → 企业层判断 → 用户层派生


是否接受这个方案?如确认,我继续为你设计下一张新表,例如:

  • 模型基础信息表(ai_models 或完善 ai_providers

  • 企业提示词策略管理表

  • 右键引用插入日志表

你可以指定下一张。

问:

那张表字段已经很多了。我觉得你选择用json方式存储ai相关配置/开关是一个明智选择,你觉得呢?

答:

你这个判断非常精准且前瞻 ✅
在实际大型系统设计中,像你这种“已有主表字段非常多”的情况,使用 JSON 存储一类相对独立、变化频繁、维度可扩展的配置项确实是一个非常明智、成熟的做法。


✅ 为什么你这个场景特别适合用 JSON 存储 AI 相关配置?

✅ 1. 字段逻辑上高度聚合

  • 所有字段都是围绕“AI助手使用策略”

  • 在业务上,它们构成一个“模块性配置块”

✅ 2. 配置项可能未来不断扩展

  • 比如后续增加:响应超时时间、是否允许A/B测试、多模型优先级列表等

  • 用 JSON 存储,未来你只需改代码逻辑,不必再 ALTER TABLE

✅ 3. 字段数量已非常多

  • tj_headoffice_capacity 本身已有近 30+ 字段

  • 如果再平铺十几个 AI 字段,会降低可读性和维护性

✅ 4. 查询不频繁、不用于强查询条件

  • 这些配置多用于“加载配置判断权限”

  • 而不是用于分页检索、排序、关联查询 —— JSON 在这类“按需读取”场景中性能无忧


✅ 建议字段名设计

ALTER TABLE `tj_headoffice_capacity`ADD COLUMN `ai_config` JSON DEFAULT NULL COMMENT 'AI助手相关配置(启用状态、Token限制、记忆策略等)';

✅ 建议的 JSON 字段结构(例)

{
  "enabled": true,
  "request_interval_sec": 60,
  "token_limit": 100000,
  "token_used": 4300,
  "access_start_time": "2025-03-01T00:00:00",
  "access_end_time": "2025-12-31T23:59:59",
  "memory": {
    "enabled": true,
    "depth": 1,
    "cross_session": false
  },
  "sensitive_fuzzy_match": true,
  "suggested_keywords_enabled": true,
  "max_active_users": 100}

✅ 使用建议

后端代码处理:

  • 查询时反序列化为结构体 / dict

  • 如果你用的是 MySQL ≥5.7,可以直接 JSON 查询:

SELECT *FROM tj_headoffice_capacityWHERE JSON_EXTRACT(ai_config, '$.enabled') = true

前端调用建议:

  • 缓存加载 AI配置为一个对象

  • 配置变更通过后管设置后覆盖写入 JSON 字段即可


✅ 小结

项目建议
存储方式✅ 建议使用 JSON
字段位置ai_config 挂载于 tj_headoffice_capacity
优点灵活扩展、结构清晰、维护简单、查询负担小
后端处理JSON解析统一封装,避免逻辑分散

是否确认采用这个 JSON 配置方式?
确认后我就继续下一张新表的设计,比如 ai_models敏感词策略表。你可以指定下一个要处理的部分。

问:

接着设计下一张表

答:

好的,接下来我们继续新增表设计。


📌 第三张新增表:AI模型基础信息管理表

🎯 功能定位:

用于维护系统支持的所有 AI 模型,包括:

  • 模型名称(如 GPT-4、DeepSeek、Claude)

  • 模型接口地址(API 端点)

  • 认证参数(Token、Key 等)

  • 默认使用参数(如温度、最大Token、超时)

  • 状态启停、版本备注、调用方式(REST、WebSocket)

这是你提到的:

“还需要增加一个模型管理功能,也就是录入模型名,模型api,模型的token及其他。”


✅ 表名建议:

ai_models

用于替代你之前较为简单的 ai_providers 表,未来可以让 ai_providers 保留为“供应商层”(如 OpenAI、Moonshot、百度),而 ai_models 用于模型实例层(如 gpt-3.5、gpt-4-0125、qwen-max 等)


✅ 字段设计建议:

CREATE TABLE `ai_models` (
  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `provider_id` BIGINT NOT NULL COMMENT 'AI提供商ID(关联 ai_providers)',

  `model_name` VARCHAR(100) NOT NULL COMMENT '模型名称(如gpt-4-0125)',
  `display_name` VARCHAR(100) DEFAULT NULL COMMENT '前端展示名称(如:GPT-4 最新版)',
  `version` VARCHAR(50) DEFAULT NULL COMMENT '模型版本号或后缀',

  `api_url` VARCHAR(500) NOT NULL COMMENT '模型调用接口地址',
  `api_key` VARCHAR(255) DEFAULT NULL COMMENT '访问认证Key(可选)',
  `api_type` VARCHAR(20) DEFAULT 'rest' COMMENT '调用类型:rest | websocket | other',

  `default_params` JSON DEFAULT NULL COMMENT '默认参数(如:温度、top_p、最大token等)',
  `timeout_sec` INT DEFAULT 30 COMMENT '调用超时时间(秒)',

  `status` TINYINT DEFAULT 1 COMMENT '是否启用:1启用,0禁用,-1逻辑删除',
  `remark` VARCHAR(255) DEFAULT NULL COMMENT '备注说明',

  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  PRIMARY KEY (`id`),  UNIQUE KEY `uniq_model_name` (`model_name`),  FOREIGN KEY (`provider_id`) REFERENCES `ai_providers`(`id`) ON DELETE CASCADE
);

✅ 字段说明补充

字段说明
provider_id对应 OpenAI、DeepSeek、Moonshot 等上层供应商
model_name模型内部标识(唯一,系统识别用)
display_name可展示名,便于前端选择时友好
api_url每个模型可能有不同接口(如 Azure OpenAI)
api_type区分 REST 接口还是 WebSocket 长连接
default_params统一用 JSON 管理默认配置项(如 temperature, top_p)
timeout_sec防止模型接口 hang 死,统一超时控制
status控制是否启用,可用于灰度或后期下架模型
remark可添加版本说明、付费策略等描述

✅ default_params 示例:

{
  "temperature": 0.7,
  "top_p": 0.9,
  "max_tokens": 2048,
  "presence_penalty": 0}

✅ 表使用场景:

场景行为
管理员新增支持模型后台填写模型名、接口、认证参数
企业选择可用模型参考 ai_org_model_configs 中的关联配置
用户对话实际调用系统从此表读取接口地址、默认参数发起请求
日志审计/报错排查若某模型挂掉,可以通过 status 禁用该模型

✅ 拓展建议:

如果你后续还需支持:

  • 多区域(如 Azure OpenAI 多区域)

  • 多账号轮询(负载均衡调用)

  • 付费策略管理(不同模型计费)

我们可以基于这个表衍生出模型账号表、计费策略表等。


是否确认该模型基础管理表结构?
如确认,我将继续为你设计下一张新增表,例如:

  • 企业提示词策略管理表

  • 敏感词策略表

  • 对话上下文拼接规则表(可扩展到规则驱动型场景)

你也可以指定具体表名继续。

问:

ai_providers请你重新设计。

答:

非常好,既然我们刚刚完成了 ai_models(模型实例)这张“细颗粒度”表,现在正是时候重新审视和升级你原有的 ai_providers 表,使它从“只记录模型名称”转向更高抽象层次的供应商管理表


✅ 你之前的设计回顾:

原始 ai_providers 表内容较少,结构类似:

CREATE TABLE `ai_providers` (
  `id` BIGINT AUTO_INCREMENT,
  `name` VARCHAR(100), -- DeepSeek、OpenAI
  `status` TINYINT,  PRIMARY KEY (`id`)
);

这对于当前复杂的多模型、多厂商、多接入渠道系统来说显然过于简陋。


✅ 重新定位:ai_providers 是什么?

它应该代表的是一个 AI 模型提供商或平台接入点,用于:

  • 统一组织模型归属(如 GPT-3.5、GPT-4 都属于 OpenAI)

  • 管理不同厂商的名称、描述、官网、计费方式

  • 控制该厂商下所有模型是否启用

  • 可挂接平台特有配置,如 OpenAI 的组织ID、API域名等


✅ 新设计目标:

模块是否考虑
供应商识别(如 OpenAI)✅ 必须
启用/禁用✅ 必须
可选平台说明/文档/官网✅ 建议
是否为国内厂商✅ 可辅助处理风控策略
是否允许切换模型✅ 可扩展字段
平台接入配置(如组织ID)✅ 建议 JSON 字段支持

✅ 重构后字段设计:

CREATE TABLE `ai_providers` (
  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `name` VARCHAR(100) NOT NULL COMMENT '供应商标识(英文唯一,如 openai)',
  `display_name` VARCHAR(100) DEFAULT NULL COMMENT '展示名称(如:OpenAI官方)',

  `description` TEXT DEFAULT NULL COMMENT '供应商介绍',
  `official_site` VARCHAR(255) DEFAULT NULL COMMENT '官网地址',
  `provider_type` VARCHAR(50) DEFAULT 'international' COMMENT '供应商类型:international / domestic / internal',
  `platform_config` JSON DEFAULT NULL COMMENT '平台级参数配置(如组织ID、API基地址)',

  `status` TINYINT DEFAULT 1 COMMENT '启用状态:1启用,0禁用,-1删除',
  `sort_order` INT DEFAULT 100 COMMENT '排序值(前端展示用)',

  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  PRIMARY KEY (`id`),  UNIQUE KEY `uniq_name` (`name`)
);

✅ 字段说明重点:

字段名说明
name系统识别用唯一英文名,如 openai, deepseek, moonshot
display_name对应中文展示名,如“月之暗面”、“百度千帆”
provider_type标记是否为境内厂商、外部厂商、内部自研
platform_config统一收纳平台特有参数,如:
{
  "org_id": "org-xxx",
  "default_base_url": "https://api.openai.com",
  "region": "us-west-1"}

| status | 统一控制此供应商下所有模型是否启用 |


✅ 与 ai_models 联动设计一览

  • 一个 ai_providers.id 可关联多个 ai_models

  • ai_models 中的 provider_id 外键连接此表


✅ 查询场景举例

1. 获取所有启用的模型 + 供应商信息

SELECT m.model_name, p.display_name, p.provider_typeFROM ai_models mJOIN ai_providers p ON m.provider_id = p.idWHERE m.status = 1 AND p.status = 1;

✅ 表设计总结

项目内容
表名ai_providers
粒度AI 厂商/平台
功能管理模型归属、官网、接入配置、启用状态
对应下游表ai_models, ai_org_model_configs, ai_usage_logs

是否接受这版 ai_providers 重构设计?
确认后我可以继续下一张表,例如:敏感词策略表企业提示词策略表模型账号池表等。你可指定模块继续推进。

问:

我给你已经设计完的表,并请你回顾我前面给你的需求,不要延伸的太细,目前来说,我们这个系统不需要过于复杂、庞大。

答:

收到你的提醒,咱们这里的设计不追求庞杂,而是要

✅ 结构清晰
✅ 紧扣业务核心
✅ 支持当前功能落地 + 可轻量扩展


为确保不偏离核心,我将马上重新回顾你明确给出的核心需求范围,并在下面总结出当前系统需要新增的表结构列表,避免设计发散。


✅ 来自你前面明示的新增需求(提炼总结)

🌐 企业层面配置:

  • 是否启用 AI助手(企业级总开关)

  • 模型可用列表 + 请求频率 + Token上限 + 有效期(针对模型或企业)

  • 记忆功能控制(开启/条数/跨会话)

  • 模糊敏感词匹配开关

  • 提示词联想是否启用

  • 当前企业已开通AI助手的用户人数

✅ 已确认用 JSON 字段 ai_config 统一存入 tj_headoffice_capacity


👤 用户层面使用追踪:

  • 哪个用户在哪个企业开通了 AI助手功能

  • 用户是否还处于启用状态

  • 启用/停用时间,支持禁用备注、审计

✅ 表名:ai_user_activation_records(已设计)


📄 免责声明系统:

  • 用户首次使用需签署免责声明

  • 每份免责声明有一个对应文档链接 + 哈希校验

  • 支持用户签署版本追溯

  • 启用多协议可能性

✅ 表名:ai_disclaimer_records(已设计)


🧠 模型管理:

  • 模型名称、API地址、调用方式、默认参数、超时等

  • 支持状态控制(启用/下线)

  • 用于后续企业配置关联模型

✅ 表名:ai_models(已设计)


🏢 供应商管理(精简):

  • 保留供应商基本信息(英文名、展示名、官网、是否启用)

✅ 表名:ai_providers(推荐重构后已设计,不复杂)


💬 对话结构三层核心表(已完成):

  1. ai_chat_sessions:一次会话主表(含记忆/模型归属)

  2. ai_messages:每条提问(无回答内容,引用 answer_id)

  3. ai_answers:AI生成 or 预置的回答内容(含来源、被引用次数)


📌 引用记录(细颗粒追踪):

  • 用户提问命中提示词:ai_suggested_keyword_references

  • 回答被追问引用:ai_answer_references

✅ 两张表均已设计,结构精简,追溯能力强。


📊 日志与统计:

  • 每次调用日志:ai_usage_logs(含请求/响应/模型/token/cost)

  • 用户Token汇总缓存表:ai_user_token_usage

✅ 两张表均已升级,结构简明,可轻松扩展周期性汇总。


✅ 当前系统结构汇总(设计完成表)

功能模块表名
企业能力配置tj_headoffice_capacity(新增 ai_config JSON) ✅
AI助手用户启用记录ai_user_activation_records
免责声明签署记录ai_disclaimer_records
AI模型管理ai_models
AI供应商管理ai_providers
会话主表ai_chat_sessions
对话消息表ai_messages
AI回答表ai_answers
提示词引用追踪ai_suggested_keyword_references
回答引用记录ai_answer_references
使用日志ai_usage_logs
用户Token使用统计ai_user_token_usage

✅ 后续设计提示

你目前设计已覆盖业务核心,全流程打通。除非未来加入:

  • 多账号并发接入

  • 企业分组权限隔离

  • 动态提示词训练等

否则 当前结构已经足够支撑一线企业应用落地,无需再扩展。


是否现在需要我帮你:

  1. 输出结构汇总图?(ER图)

  2. 生成所有表的初始化 SQL 脚本?

  3. 设计后管管理界面字段结构草图?

你可以指定下一步怎么做。

问:

好的,我们为你生成 后管管理界面字段结构草图(以模块为单位),以便你和团队后期开发页面结构、配置项编辑、权限控制等功能。


✅ 总体设计原则

  • 每个界面绑定一个主表

  • 支持字段增改、查询、排序、搜索、权限切换

  • 表格字段 + 弹窗编辑/详情字段结构统一定义

  • 字段类型清晰(文本、下拉、开关、时间、JSON编辑器)

  • 分为:基础信息、状态控制、安全策略、调用限制、使用统计


🧩 示例 1:企业 AI 配置管理页(绑定 tj_headoffice_capacity 表)

📋 列表视图字段(表格)

字段展示名类型可排序可筛选说明
HeadOfficeUid企业ID数字唯一企业编号
AccountStatus状态下拉(启用/禁用)控制是否启用企业账号
ai_config->enabledAI助手开关开关控制是否开启AI助手
ai_config->token_limitToken上限数字企业最大token使用量
ai_config->token_used已使用Token数字实时统计
ai_config->request_interval_sec请求间隔数字(秒)限制频繁调用
ai_config->memory.enabled启用记忆开关启用AI上下文功能
ai_config->memory.depth记忆条数数字回溯历史条数
ai_config->memory.cross_session跨会话记忆开关是否开启跨会话上下文

📝 编辑弹窗字段

  • AI助手启用(开关)

  • 请求间隔(输入框)

  • token上限(输入框)

  • 起止时间(时间范围选择器)

  • 记忆开关 / 条数 / 跨会话(组合配置)

  • 是否启用提示词联想(开关)

  • 是否启用敏感词模糊匹配(开关)


🧩 示例 2:AI 模型管理界面(绑定 ai_models

字段展示名类型可排序可筛选说明
model_name模型标识文本如:gpt-4-0125
display_name显示名称文本展示给前端
api_urlAPI接口地址文本用于后端实际调用
api_type调用类型下拉REST/WebSocket
default_params默认参数JSON查看器编辑按钮跳转
timeout_sec超时时间数字单位:秒
status启用状态开关禁用即隐藏

🧩 示例 3:用户 AI 使用状态页(绑定 ai_user_activation_records

字段展示名类型可排序可筛选说明
user_id用户ID数字系统用户唯一ID
org_id所属企业数字企业编号
is_activated是否开通开关当前是否已开通
activated_at开通时间时间首次开通时间
deactivated_at停用时间时间如果关闭记录时间
status当前状态下拉(启用/禁用/封禁)控制行为权限
remark备注文本禁用原因说明等

🧩 示例 4:AI调用日志界面(绑定 ai_usage_logs

字段展示名类型可排序可筛选说明
user_id用户ID数字发起调用的用户
session_id会话ID文本追踪到会话
ai_provider_id模型来源下拉openai, deepseek 等
request_tokens / response_tokensToken数量数字提问/回答分开
cost_usd成本数字(货币)单次请求花费
created_at时间时间请求时间

✅ 后管字段草图建议:展示 + 编辑 + 控制

  • 所有配置类使用表格 + 弹窗编辑

  • JSON类字段使用JSON编辑器控件

  • 所有策略类字段(记忆/频率/启用)使用开关组件

  • 跨表跳转(如点击模型名跳转模型详情页)使用链接字段


是否需要我根据这些结构进一步生成一个 Notion 或 Excel 格式的字段管理表?或者直接做出 Vue 或 React 后管字段结构代码模板(字段配置 JSON)?你可以继续指定。

问:

上面的不错,请你解释下ai_user_activation_records这个表,因为在我的sql里没有,它控制什么行为?在什么时候用?

答:

非常好,这个问题切中核心逻辑。我们现在就来深入解读 ai_user_activation_records 这个表的设计意义、控制行为与使用场景


✅ 一句话定义:

ai_user_activation_records 是用于记录并控制 某个用户在某个企业中是否启用 AI助手功能 的专属状态表。


📌 为什么需要这个表?

因为你的系统是**“企业级开关 + 用户级授权”双重机制**,企业虽然开启了 AI 助手功能(企业层配置在 tj_headoffice_capacityai_config 中),但不是所有用户默认都开通,需要用户个人主动开启(首次使用)+ 签署免责声明

这时就需要一个表来记录:

在哪个企业是否开启了 AI助手什么时候开启当前是否仍启用是否被封禁过

✅ 控制的行为(行为授权核心)

系统通过它控制用户是否可以使用 AI助手:

场景控制逻辑
用户点击 AI助手菜单时系统查询该表是否存在记录、是否已激活
用户第一次使用 AI助手系统自动创建一条记录,并绑定签署信息(如已开通)
管理员禁用某个用户 AI权限设置该表中 is_activated = false / status = -1
日志追踪 / 审计统计按企业统计当前开通用户人数、启用率等

✅ 表设计简述(字段解析)

CREATE TABLE `ai_user_activation_records` (
  `id` BIGINT NOT NULL AUTO_INCREMENT,
  `user_id` BIGINT NOT NULL,      -- 用户ID
  `org_id` BIGINT NOT NULL,       -- 企业ID(支持多企业用户)
  
  `is_activated` BOOLEAN DEFAULT TRUE,  -- 当前是否已开通
  `activated_at` DATETIME,              -- 开通时间
  `deactivated_at` DATETIME,            -- 若禁用,记录禁用时间

  `status` TINYINT DEFAULT 1,           -- 当前状态(1启用、0停用、-1封禁)
  `remark` VARCHAR(255),                -- 管理备注,如封禁原因

  `created_by` BIGINT,                  -- 操作人(如管理员ID)
  `created_at` DATETIME,
  `updated_at` DATETIME,  PRIMARY KEY (`id`),  UNIQUE KEY (`user_id`, `org_id`)
);

🧠 为什么不直接在 user 表或 tj_user_enterprise_relation 表里处理?

因为这会带来逻辑污染:

不适合原因
user一个用户可能在多个企业中使用AI,不适合存放企业AI启用状态
tj_user_enterprise_relation属于权限关系表,逻辑职责不一致,耦合过重
✅ 专表 ai_user_activation_records职责单一、查询简便、易于审计管理

✅ 使用场景图示

┌────────────────────────────┐
│ 用户进入 AI助手界面        │
└────────────┬───────────────┘             ▼
  查询 ai_user_activation_records
         ┌───────────────┐
     是  │ is_activated=1│────────▶ 展示AI助手界面
         └───────────────┘
     否
         ▼
    跳转签署免责声明页
         ▼
    签署成功后写入:
    ai_user_activation_records + ai_disclaimer_records

✅ 总结

项目内容
表名ai_user_activation_records
粒度用户 × 企业
控制内容是否已开通、启用状态、激活时间、禁用记录
主要用途控制是否允许使用 AI助手功能、配合日志审计、授权管理
特点多租户支持、轻逻辑隔离、便于管理统计

如你接受这个设计,我可以将该表字段加入你的结构 SQL 脚本中。你也可以告诉我:是否希望在后管中加入“AI用户授权管理”模块?我可以继续为你生成后管页面字段结构。

问:

--   "sensitive_fuzzy_match": true,

--   "suggested_keywords_enabled": true,

--   "max_active_users": 100


把这几个设计也加入到后管企业 AI 配置管理页里,重新设计列表视图字段(表格)给我。

答:

好的,我们将在原有“企业 AI 配置管理页”的基础上,新增以下三个控制字段,并统一重新设计列表字段视图,确保前端后管页面字段展示与逻辑控制清晰、完整。


✅ 三个新增字段解析

字段含义类型控制行为
sensitive_fuzzy_match敏感词是否启用“模糊匹配”开关开启后模糊匹配关键词,如“敏*词”也拦
suggested_keywords_enabled是否启用提示词联想浮窗开关控制是否前端输入时出现建议问题
max_active_usersAI助手最多允许的用户数数字输入超出后将禁止新用户开通助手

📋 ✅ 重设计后【企业 AI 配置管理页】——列表视图字段结构(表格)

字段路径展示名类型可排序可筛选说明
HeadOfficeUid企业ID数字唯一企业编号
AccountStatus企业状态下拉启用/禁用企业账号
ai_config->enabledAI助手开关开关企业是否开通AI助手功能
ai_config->token_limitToken上限数字有效期内最大token用量
ai_config->token_used已用Token数字实时更新
ai_config->request_interval_sec请求间隔数字(秒)限制频率调用
ai_config->memory.enabled启用记忆开关是否启用上下文
ai_config->memory.depth记忆条数数字回溯条数
ai_config->memory.cross_session跨会话记忆开关是否允许跨会话追问
ai_config->sensitive_fuzzy_match模糊匹配敏感词开关开启后更严格匹配敏感内容
ai_config->suggested_keywords_enabled启用提示词浮窗开关控制输入框提示词联想是否展示
ai_config->max_active_users最大启用人数数字限制企业中最多启用AI助手的用户数

✨ 前端交互建议

字段组件建议说明
所有 JSON 子字段建议用“扁平展示”结构 + 配置项编辑弹窗可通过字段映射提取 JSON 路径直接展示(如:ai_config->enabled
token_used禁止用户直接编辑,只展示实时统计,不开放编辑
max_active_users编辑后,系统实时判断是否已有超限开通用户后端判断并提示
sensitive_fuzzy_match启用时前端弹提示:该功能可能导致误拦截UX友好提示

是否需要我接下来为这个管理页生成:

  • 表格字段配置 JSON(用于 React / Vue / Ant Design 等)

  • 编辑页字段结构草图?

  • 字段映射规则说明文档?

你可继续指定方向,我来配合输出。