182 lines
9.2 KiB
SQL
182 lines
9.2 KiB
SQL
-- 小红书(LIKE AI → OMS)模块表结构
|
||
-- 设计文档:E:\oms0414\docs\小红书模块设计-063001.md
|
||
|
||
CREATE TABLE IF NOT EXISTS `t_xhs_agent` (
|
||
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||
`CustomerId` INT NOT NULL COMMENT '客户ID → t_customer.Id',
|
||
`DeviceId` VARCHAR(64) NOT NULL COMMENT 'Agent 本机设备标识',
|
||
`DeviceName` VARCHAR(128) NULL COMMENT '用户自定义名称',
|
||
`AgentVersion` VARCHAR(32) NULL COMMENT 'Agent 版本号',
|
||
`BridgePort` INT NOT NULL DEFAULT 9333 COMMENT 'Bridge WebSocket 端口',
|
||
`Status` VARCHAR(16) NOT NULL DEFAULT 'offline' COMMENT 'online/offline',
|
||
`EngineRunning` TINYINT NOT NULL DEFAULT 0 COMMENT 'Bridge 引擎是否运行',
|
||
`ExtensionConnected` TINYINT NOT NULL DEFAULT 0 COMMENT 'Chrome 扩展是否连上 Bridge',
|
||
`XhsLoggedIn` TINYINT NOT NULL DEFAULT 0 COMMENT '小红书是否已登录',
|
||
`LastHeartbeatTime` DATETIME NULL COMMENT '最后心跳时间',
|
||
`LastError` VARCHAR(512) NULL COMMENT '最近一次 Agent 上报错误摘要',
|
||
`IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是',
|
||
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳',
|
||
`CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`UpdateUserId` INT NULL COMMENT '更新人',
|
||
`UpdateTime` DATETIME NULL COMMENT '更新时间',
|
||
PRIMARY KEY (`Id`),
|
||
UNIQUE KEY `uk_xhs_agent_device` (`DeviceId`),
|
||
KEY `idx_xhs_agent_customer` (`CustomerId`, `Status`)
|
||
) COMMENT='小红书本地 Agent 设备表';
|
||
|
||
CREATE TABLE IF NOT EXISTS `t_xhs_task` (
|
||
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||
`CustomerId` INT NOT NULL COMMENT '客户ID',
|
||
`AgentId` INT NULL COMMENT '指定执行的 Agent;NULL 表示任意在线 Agent',
|
||
`TaskType` VARCHAR(32) NOT NULL COMMENT '任务类型',
|
||
`ToolName` VARCHAR(64) NULL COMMENT 'LIKE AI 工具名',
|
||
`Priority` INT NOT NULL DEFAULT 0 COMMENT '越大越优先',
|
||
`Status` VARCHAR(16) NOT NULL DEFAULT 'pending' COMMENT 'pending/claimed/running/succeeded/failed/cancelled',
|
||
`ArgumentsJson` JSON NOT NULL COMMENT '工具参数 JSON',
|
||
`ProgressText` VARCHAR(512) NULL COMMENT '执行过程摘要',
|
||
`ResultJson` JSON NULL COMMENT '成功时结构化结果',
|
||
`ErrorMessage` VARCHAR(1024) NULL COMMENT '失败原因',
|
||
`Source` VARCHAR(32) NOT NULL DEFAULT 'web' COMMENT 'web/schedule/skill',
|
||
`SourceRefId` VARCHAR(64) NULL COMMENT '来源关联 ID',
|
||
`ScheduledTime` DATETIME NULL COMMENT '计划执行时间',
|
||
`ClaimedAt` DATETIME NULL COMMENT 'Agent 认领时间',
|
||
`StartedAt` DATETIME NULL COMMENT '开始执行',
|
||
`FinishedAt` DATETIME NULL COMMENT '结束时间',
|
||
`IsDeleted` TINYINT NOT NULL DEFAULT 0,
|
||
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()),
|
||
`CreateUserId` INT NOT NULL DEFAULT 0,
|
||
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
`UpdateUserId` INT NULL,
|
||
`UpdateTime` DATETIME NULL,
|
||
PRIMARY KEY (`Id`),
|
||
KEY `idx_xhs_task_poll` (`CustomerId`, `Status`, `ScheduledTime`, `Priority`),
|
||
KEY `idx_xhs_task_agent` (`AgentId`, `Status`),
|
||
KEY `idx_xhs_task_source` (`Source`, `SourceRefId`)
|
||
) COMMENT='小红书 Agent 任务队列表';
|
||
|
||
CREATE TABLE IF NOT EXISTS `t_xhs_publish_record` (
|
||
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||
`CustomerId` INT NOT NULL COMMENT '客户ID',
|
||
`TaskId` INT NULL COMMENT '关联 t_xhs_task.Id',
|
||
`ToolName` VARCHAR(64) NOT NULL COMMENT 'publish_content / publish_with_video',
|
||
`Title` VARCHAR(256) NOT NULL COMMENT '笔记标题',
|
||
`ContentPreview` VARCHAR(512) NULL COMMENT '正文摘要',
|
||
`ContentFull` TEXT NULL COMMENT '完整正文',
|
||
`MediaJson` JSON NULL COMMENT '图片/视频 URL 列表',
|
||
`TagsJson` JSON NULL COMMENT '标签数组',
|
||
`Visibility` VARCHAR(32) NULL COMMENT '可见范围',
|
||
`Status` VARCHAR(16) NOT NULL DEFAULT 'draft' COMMENT 'draft/scheduled/publishing/succeeded/failed/cancelled',
|
||
`Success` TINYINT NULL COMMENT '最终是否成功',
|
||
`ResultSummary` VARCHAR(1024) NULL COMMENT 'Agent 回传结果摘要',
|
||
`ScheduledTime` DATETIME NULL COMMENT '定时发布时间',
|
||
`PublishedTime` DATETIME NULL COMMENT '实际发布完成时间',
|
||
`SkillId` INT NULL COMMENT '若来自技能卡片',
|
||
`IsDeleted` TINYINT NOT NULL DEFAULT 0,
|
||
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()),
|
||
`CreateUserId` INT NOT NULL DEFAULT 0,
|
||
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
`UpdateUserId` INT NULL,
|
||
`UpdateTime` DATETIME NULL,
|
||
PRIMARY KEY (`Id`),
|
||
KEY `idx_xhs_publish_customer_time` (`CustomerId`, `CreateTime`),
|
||
KEY `idx_xhs_publish_status_sched` (`CustomerId`, `Status`, `ScheduledTime`),
|
||
KEY `idx_xhs_publish_task` (`TaskId`)
|
||
) COMMENT='小红书发布记录表';
|
||
|
||
CREATE TABLE IF NOT EXISTS `t_xhs_analysis_session` (
|
||
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||
`CustomerId` INT NOT NULL COMMENT '客户ID',
|
||
`SessionName` VARCHAR(128) NULL COMMENT '用户备注名',
|
||
`AnalysisType` VARCHAR(32) NOT NULL COMMENT 'home_feed/search/my_feeds/feed_detail',
|
||
`Keyword` VARCHAR(128) NULL COMMENT '搜索关键词',
|
||
`TaskId` INT NULL COMMENT '采集任务 ID',
|
||
`FeedsJson` JSON NULL COMMENT '采集笔记列表',
|
||
`SelectedFeedId` VARCHAR(64) NULL COMMENT '当前选中笔记 ID',
|
||
`AiAnalysisMarkdown` MEDIUMTEXT NULL COMMENT 'AI 分析结果',
|
||
`SkillId` INT NULL COMMENT '技能配方 ID',
|
||
`IsDeleted` TINYINT NOT NULL DEFAULT 0,
|
||
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()),
|
||
`CreateUserId` INT NOT NULL DEFAULT 0,
|
||
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
`UpdateUserId` INT NULL,
|
||
`UpdateTime` DATETIME NULL,
|
||
PRIMARY KEY (`Id`),
|
||
KEY `idx_xhs_analysis_customer` (`CustomerId`, `CreateTime`)
|
||
) COMMENT='小红书内容分析会话表';
|
||
|
||
CREATE TABLE IF NOT EXISTS `t_xhs_skill` (
|
||
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||
`CustomerId` INT NOT NULL COMMENT '客户ID;0 表示系统预置',
|
||
`ExternalId` VARCHAR(32) NOT NULL COMMENT '对外稳定 ID',
|
||
`Title` VARCHAR(256) NOT NULL COMMENT '技能名称',
|
||
`SkillType` VARCHAR(32) NOT NULL DEFAULT 'ai_create' COMMENT '技能类型',
|
||
`PresetId` VARCHAR(64) NULL COMMENT '内置预设标识',
|
||
`RecipeJson` JSON NOT NULL COMMENT '配方 JSON',
|
||
`SortOrder` INT NOT NULL DEFAULT 0 COMMENT '排序',
|
||
`IsDeleted` TINYINT NOT NULL DEFAULT 0,
|
||
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()),
|
||
`CreateUserId` INT NOT NULL DEFAULT 0,
|
||
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
`UpdateUserId` INT NULL,
|
||
`UpdateTime` DATETIME NULL,
|
||
PRIMARY KEY (`Id`),
|
||
UNIQUE KEY `uk_xhs_skill_external` (`CustomerId`, `ExternalId`),
|
||
KEY `idx_xhs_skill_customer` (`CustomerId`, `SortOrder`)
|
||
) COMMENT='小红书技能卡片表';
|
||
|
||
CREATE TABLE IF NOT EXISTS `t_xhs_human_config` (
|
||
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||
`CustomerId` INT NOT NULL COMMENT '客户ID',
|
||
`BehaviorJson` JSON NOT NULL COMMENT 'human_behavior 配置',
|
||
`GuardJson` JSON NOT NULL COMMENT 'human_guard 配置',
|
||
`Version` INT NOT NULL DEFAULT 1 COMMENT '配置版本',
|
||
`IsDeleted` TINYINT NOT NULL DEFAULT 0,
|
||
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()),
|
||
`CreateUserId` INT NOT NULL DEFAULT 0,
|
||
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
`UpdateUserId` INT NULL,
|
||
`UpdateTime` DATETIME NULL,
|
||
PRIMARY KEY (`Id`),
|
||
UNIQUE KEY `uk_xhs_human_customer` (`CustomerId`)
|
||
) COMMENT='小红书拟人行为与防封配置表';
|
||
|
||
CREATE TABLE IF NOT EXISTS `t_xhs_ai_provider` (
|
||
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||
`CustomerId` INT NOT NULL COMMENT '客户ID;0 表示全局',
|
||
`ProviderKey` VARCHAR(32) NOT NULL COMMENT 'ai_chatgpt / ai_zhipu 等',
|
||
`ProviderType` VARCHAR(32) NOT NULL COMMENT 'chatgpt/doubao/deepseek/zhipu',
|
||
`DisplayName` VARCHAR(64) NOT NULL COMMENT '展示名',
|
||
`BaseUrl` VARCHAR(512) NOT NULL COMMENT 'API Base URL',
|
||
`ApiKeyEnc` VARCHAR(512) NULL COMMENT 'API Key(暂明文,后续可加密)',
|
||
`ApiSecretEnc` VARCHAR(512) NULL COMMENT 'Secret/模型名',
|
||
`IsDefault` TINYINT NOT NULL DEFAULT 0 COMMENT '是否默认',
|
||
`Enabled` TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用',
|
||
`IsDeleted` TINYINT NOT NULL DEFAULT 0,
|
||
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()),
|
||
`CreateUserId` INT NOT NULL DEFAULT 0,
|
||
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
`UpdateUserId` INT NULL,
|
||
`UpdateTime` DATETIME NULL,
|
||
PRIMARY KEY (`Id`),
|
||
UNIQUE KEY `uk_xhs_ai_provider` (`CustomerId`, `ProviderKey`),
|
||
KEY `idx_xhs_ai_customer` (`CustomerId`, `Enabled`)
|
||
) COMMENT='小红书 AI 提供商配置表';
|
||
|
||
CREATE TABLE IF NOT EXISTS `t_xhs_media` (
|
||
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||
`CustomerId` INT NOT NULL COMMENT '客户ID',
|
||
`FileName` VARCHAR(256) NOT NULL COMMENT '原始文件名',
|
||
`StoragePath` VARCHAR(512) NOT NULL COMMENT '相对路径',
|
||
`PublicUrl` VARCHAR(512) NOT NULL COMMENT '对外 HTTPS URL',
|
||
`MimeType` VARCHAR(64) NULL COMMENT 'MIME',
|
||
`FileSizeBytes` BIGINT NULL COMMENT '字节数',
|
||
`IsDeleted` TINYINT NOT NULL DEFAULT 0,
|
||
`CreateUserId` INT NOT NULL DEFAULT 0,
|
||
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
`UpdateUserId` INT NULL,
|
||
`UpdateTime` DATETIME NULL,
|
||
PRIMARY KEY (`Id`),
|
||
KEY `idx_xhs_media_customer` (`CustomerId`, `CreateTime`)
|
||
) COMMENT='小红书创作上传媒体表';
|