1. 📂 核心内容

功能模块设计

  1. 分享链接生成模块:

    • 根据用户的文件ID、分享人WSID、分享时间等信息生成唯一的分享链接。

    • 链接格式示例:https://pdfelment.agent/{分享人WSID}/{机房ID}/{分享文档ID}/{时间戳}

    • 分享链接域名前缀通过配置文件动态设置

  2. 打开分享页面逻辑模块:

    • 游客模式:

      • 前端检测用户是否登录,未登录则进入游客模式, 增加Visitor-Id游客ID。

      • 根据分享人ID、文档ID和分享时间,后端返回会话记录列表,前端渲染

      • 游客模式下允许免费使用3次AI会话功能,超限后提示登录。

      • 游客会话次数需要进行区分标识,以同个文档+浏览器ID进行唯一标识, 记录到数据库

      • 游客模式下不保存会话记录。

    • 登录模式:

      • 登录后用户可正常使用AI会话功能,并保存会话记录。
  3. 会话记录模块:

    • 游客模式:

      • 增加Visitor-Id游客ID处理中间件,接口层配置对应游客ID数据。

      • 不保存会话记录,仅记录使用次数。

    • 登录模式:

      • 正常业务逻辑,将会话记录存储到数据库中,关联用户ID和文档ID。
    • 调用RAG服务接口:

      • 增加是否保存记录的标识。

      • 用户ID传分享者的用户ID,避免重复解析相同文档内容。

  4. 权限控制模块:

    • 限制游客模式的使用次数:

      • 同一文档+同一浏览器ID最多免费使用3次。
    • 游客模式下,被分享用户打开同文档的分享记录时,使用AI次数进行数据落库。

  5. Redis缓存模块:

    • 分享页面的会话记录列表内容可以进行缓存,不同游客访问相同分享链接可以快速打开显示会话记录。缓存key根据分享人ID、文档ID和分享时间,缓存设置过期时间(如2小时)。

2. 🔱 核心流程图

AI分享主流程图

image

保存分享者文档至自己云盘的流程图

image

3. ⚛️ 业务表设计

用户AI分享功能免费使用次数记录表

CREATE TABLE `gpt_share_free_use_times` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
  `file_id` char(32) NOT NULL DEFAULT '' COMMENT '文件id,唯一字符串',
  `browser_id` varchar(64) NOT NULL DEFAULT '' COMMENT '浏览器唯一标识id',
  `pid` int(11) NOT NULL DEFAULT '0' COMMENT '各产品端pid',
  `m_pid` int(11) NOT NULL DEFAULT '0' COMMENT '主pid',
  `ctype` tinyint(1) NOT NULL DEFAULT '1' COMMENT '问答类型,1: 为chatpdf, 2:为chatai, 3: agent, 默认为1',
  `use_times` tinyint(1) NOT NULL DEFAULT '0' COMMENT '使用次数',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_file_browser_id` (`file_id`,`browser_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户AI分享功能免费使用次数记录表';