1. 📂 核心内容
功能模块设计
-
分享链接生成模块:
-
根据用户的文件ID、分享人WSID、分享时间等信息生成唯一的分享链接。
-
链接格式示例:
https://pdfelment.agent/{分享人WSID}/{机房ID}/{分享文档ID}/{时间戳}。 -
分享链接域名前缀通过配置文件动态设置
-
-
打开分享页面逻辑模块:
-
游客模式:
-
前端检测用户是否登录,未登录则进入游客模式, 增加Visitor-Id游客ID。
-
根据分享人ID、文档ID和分享时间,后端返回会话记录列表,前端渲染
-
游客模式下允许免费使用3次AI会话功能,超限后提示登录。
-
游客会话次数需要进行区分标识,以同个文档+浏览器ID进行唯一标识, 记录到数据库
-
游客模式下不保存会话记录。
-
-
登录模式:
- 登录后用户可正常使用AI会话功能,并保存会话记录。
-
-
会话记录模块:
-
游客模式:
-
增加
Visitor-Id游客ID处理中间件,接口层配置对应游客ID数据。 -
不保存会话记录,仅记录使用次数。
-
-
登录模式:
- 正常业务逻辑,将会话记录存储到数据库中,关联用户ID和文档ID。
-
调用RAG服务接口:
-
增加是否保存记录的标识。
-
用户ID传分享者的用户ID,避免重复解析相同文档内容。
-
-
-
权限控制模块:
-
限制游客模式的使用次数:
- 同一文档+同一浏览器ID最多免费使用3次。
-
游客模式下,被分享用户打开同文档的分享记录时,使用AI次数进行数据落库。
-
-
Redis缓存模块:
- 分享页面的会话记录列表内容可以进行缓存,不同游客访问相同分享链接可以快速打开显示会话记录。缓存key根据分享人ID、文档ID和分享时间,缓存设置过期时间(如2小时)。
2. 🔱 核心流程图
AI分享主流程图
保存分享者文档至自己云盘的流程图
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分享功能免费使用次数记录表';
暂无评论,快来抢沙发!