From 5de859582c128127e91abdca995d45c938c7617f Mon Sep 17 00:00:00 2001 From: WangLiZhao <1838393649@qq.com> Date: Tue, 7 Jul 2026 09:47:31 +0800 Subject: [PATCH] =?UTF-8?q?docs(readme):=20=E6=9B=B4=E6=96=B0=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E6=96=87=E6=A1=A3=E4=B8=BA=E6=99=BA=E8=83=BD=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E7=BD=91=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit chore(database): 优化模型配置表结构和索引设计 - 重新设计 model_gateway_models 表的字段结构和约束 - 新增 billing_config 和 special_params 配置字段 - 优化索引策略,包括复合索引和条件索引的创建 - 统一表注释格式和字段说明文档 - 移除过时的配置字段和冗余索引 --- README.md | 144 +++++++++++++++++++++++---------- update.sql | 231 +++++++++++++++++++++++++---------------------------- 2 files changed, 211 insertions(+), 164 deletions(-) diff --git a/README.md b/README.md index 90d2286..7665b5f 100644 --- a/README.md +++ b/README.md @@ -1,54 +1,118 @@ -# Prompts-Core 提示词核心服务 +# Prompts-Core 模型历史会话服务 ## 项目简介 -Prompts-Core 是基于 Go 语言开发的**多模态 AI 提示词构建与管理系统**,专注于统一管理各类 AI 模型的提示词模板、维护智能会话上下文、适配主流模型协议,并支持文件解析与外部技能集成,为 AI 应用提供标准化、高效的提示词服务。 +Prompts-Core 是基于 Go 语言开发的**模型历史会话管理服务**,专注于为多模态 AI 对话系统提供高效的会话上下文存储、查询与清理能力。本服务原是**提示词构建引擎**,v2 版本的提示词构建职责已移交至**模型网关服务(model-gateway)**,当前版本已降级为纯粹的**历史会话中间件**。 -## 核心功能 -1. **提示词构建引擎** - 支持文字/图片/音频/向量化/全模态 5 类任务提示词生成,提供完整流程、分步节点两种构建模式,支持超大内容按 Token 自动分批处理。 -2. **智能会话管理** - 基于缓存实现高效会话存储,自动控制会话轮数与过期时间,保障上下文连贯性。 -3. **多模型协议适配** - 动态适配 OpenAI、DeepSeek、Qwen、Gemini 等主流 AI 模型协议,支持角色、字段、消息顺序灵活映射。 -4. **文件与技能集成** - 自动提取文本、ZIP 压缩包内容,支持加载外部 Markdown 技能配置,扩展服务能力。 -5. **异步任务调度** - 支持异步任务处理、状态轮询与回调通知,自带可配置重试机制。 +## 版本说明:v1 → v2(降级) + +### v1 原貌 +v1 版本的核心链路为: +``` +客户端 → prompts-core(提示词构建) → model-gateway(异步任务) → AI 模型 + ↑ ↓ + prompts-core(回调处理) ← model-gateway(结果回调) +``` +v1 集成了以下能力: +- **提示词构建引擎**:通过 Prompt IR 中间表示,组合 System / History / User 分段,按多模型协议编译为对应厂商请求格式 +- **用户表单与文件处理**:支持表单拼接、Token 窗口自动分批、ZIP 解压、技能 Markdown 注入 +- **多模型协议适配**:通过协议配置表动态适配 OpenAI / DeepSeek / Qwen / Gemini / Anthropic 等 +- **异步任务调度**:创建推理任务、轮询状态、接收回调、通知业务方 +- **会话历史管理**:Redis ZSET + PostgreSQL 分层存储多轮对话 + +### v2 变化 +提示词构建的整体职责已移交至模型网关服务,涉及以下内容全部移除: +- `ComposeMessages` 提示词拼接接口 +- `GetComposeTask` / `Callback` 任务相关接口 +- Prompt IR 中间表示层与协议编译逻辑 +- 用户表单 Token 分批与文件内容提取 +- 外部技能 Markdown 注入 +- 数据库 `prompts_compose_task`、`prompts_provider_protocol` 不再使用 + +v2 调用链路变为: +``` +客户端/业务方 → model-gateway(构建 + 推理) → AI 模型 + model-gateway ──(回调)──→ prompts-core(写入会话历史) +客户端/业务方 ─────────────────────────→ prompts-core(查询/删除会话历史) +``` + +## 核心功能(v2) + +### 1. 会话回调写入 +- 地址:`POST /sessionCallback` +- 功能:接收模型网关回调,将当前轮的用户请求与模型回复写入 PostgreSQL 并同步缓存至 Redis ZSET +- 自动控制会话最大轮数与过期时间 + +### 2. 历史会话列表 +- 地址:`GET /historyList`(前端分页) +- 功能:按当前用户分页查询历史会话轮次列表,返回每轮的 SessionId、NodeId、用户消息、助手回复、时间戳 + +### 3. 会话历史查询 +- 地址:`GET /sessionHistory`(服务调用) +- 功能:按 SessionId + NodeId 查询完整历史消息列表,按时间排列 + +### 4. 历史消息获取 +- 地址:`GET /historyMessages` +- 功能:供提示词拼接场景使用,按 SessionId + NodeId 获取历史 FlatMessage 列表 +- 读取顺序:Redis → DB → 异步回种 Redis(缓存加速) + +### 5. 消息删除 +- 地址:`POST /deleteMessages` +- 功能:批量删除指定消息 ID,同步清理 Redis 与 PostgreSQL + +### 6. 会话删除 +- 地址:`POST /deleteSession` +- 功能:删除整个会话及其所有消息,同步清理 Redis 与 PostgreSQL ## 技术架构 -- 开发语言:Go 1.26.0 -- Web 框架:GoFrame v2.10.0 -- 核心存储:Redis(会话缓存) -- 服务组件:Consul(服务注册)、Jaeger(链路追踪) -- 调用链路:客户端 → Prompts-Core → 模型网关 → AI 模型 + +| 层级 | 选型 | +|---|---| +| 开发语言 | Go 1.26.1 | +| Web 框架 | GoFrame v2.10.0 | +| 核心存储 | PostgreSQL(模型网关共用库,表 `prompts_compose_session`) | +| 会话缓存 | Redis(ZSET 结构,Key 格式 `session:history:{tenantId}:{sessionId}:{nodeId}`) | +| 服务注册 | Consul | +| 链路追踪 | Jaeger(OpenTelemetry OTLP) | +| 部署方式 | Docker(提供 Dockerfile) | + +## 数据模型 + +### prompts_compose_session(历史会话轮次表) +| 字段 | 类型 | 说明 | +|---|---|---| +| id | BIGINT | 主键 ID | +| tenant_id | BIGINT | 租户 ID | +| creator | VARCHAR(64) | 创建人 | +| created_at | TIMESTAMP | 创建时间 | +| updated_at | TIMESTAMP | 更新时间 | +| deleted_at | TIMESTAMP | 软删除时间 | +| session_id | VARCHAR(64) | 会话 ID | +| node_id | VARCHAR(64) | 节点 ID | +| request_content | JSONB | 用户请求内容 | +| response_content | JSONB | 模型回复内容 | +| remark | VARCHAR(500) | 备注 | ## 快速开始 + ### 环境要求 -Go 1.26+、Redis、已部署模型网关服务 +Go 1.26+、Redis、PostgreSQL(依赖 model-gateway 库) ### 启动步骤 -1. 克隆项目代码 -2. 完成项目配置文件修改 -3. 执行命令启动服务: +1. 克隆项目代码,完成 `config.yml` 中 Redis / PostgreSQL / Consul / Jaeger 地址配置 +2. 执行以下命令启动服务: ```bash go run main.go ``` +3. 服务默认监听 `:3009` 端口 -## API 接口 -### 基础信息 -- 服务地址:`http://{host}:3009` -- 请求类型:`application/json` -- 认证方式:请求头携带 `Authorization`、`X-User` +### 请求认证 +所有 API 需在请求头中携带以下信息: +- `Authorization`:认证令牌 +- `X-User`:当前用户标识 -### 核心接口 -1. **提示词拼接接口** - - 地址:`POST /composeMessages` - - 功能:构建提示词并调用模型服务,同步返回结果 -2. **任务状态查询** - - 地址:`GET /getComposeTask` - - 功能:根据任务 ID 查询处理状态与结果 -3. **任务回调接口** - - 地址:`GET /composeMessagesCallback/prompts-core` - - 功能:接收模型服务处理完成回调 -4. **会话同步接口** - - 地址:`POST /sessionCallback` - - 功能:同步更新会话上下文历史 \ No newline at end of file +## 会话缓存机制 + +- **存储结构**:Redis ZSET,以毫秒时间戳作为 score,以 `HistoryRound` JSON 序列化字符串作为 member +- **上限控制**:配置项 `session.maxRounds`,默认 10 轮,写入时通过 `ZREMRANGEBYRANK` 自动裁剪 +- **过期控制**:配置项 `session.expireTime`,默认 1800 秒(30 分钟) +- **读取策略**:优先读 Redis 缓存,未命中则回查 PostgreSQL,查完后异步回种 Redis 为下次加速 +- **Key 粒度**:`session:history:{tenantId}:{sessionId}:{nodeId}`,支持多节点多会话隔离 diff --git a/update.sql b/update.sql index a146009..9f096b5 100644 --- a/update.sql +++ b/update.sql @@ -1,134 +1,117 @@ --- prompts_compose_task 提示词任务记录表 -CREATE TABLE IF NOT EXISTS prompts_compose_task ( - id BIGINT PRIMARY KEY, - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(64) NOT NULL, - created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - updater VARCHAR(64) NOT NULL, - updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - deleted_at TIMESTAMP(6), +-- ============================================ +-- 提示词服务 (prompts-core) 建表语句 +-- ============================================ - task_id VARCHAR(64) NOT NULL, - model_name VARCHAR(128) NOT NULL DEFAULT '', - skill_name VARCHAR(128) NOT NULL DEFAULT '', - build_type INT NOT NULL DEFAULT 0, - callback_url VARCHAR(512) NOT NULL DEFAULT '', - gateway_state INT NOT NULL DEFAULT 0, - request_payload JSONB NOT NULL DEFAULT '{}'::jsonb, - result_text TEXT NOT NULL DEFAULT '', - messages JSONB NOT NULL DEFAULT '{}'::jsonb, - status VARCHAR(32) NOT NULL DEFAULT 'pending', - error_message TEXT NOT NULL DEFAULT '', - oss_file VARCHAR(1024) NOT NULL DEFAULT '', - file_type VARCHAR(64) NOT NULL DEFAULT '' +-- 1. 提示词历史会话表 +CREATE TABLE "public"."prompts_compose_session" ( + "id" int8 NOT NULL, + "tenant_id" int8 NOT NULL DEFAULT 0, + "creator" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "created_at" timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "updated_at" timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deleted_at" timestamp(6), + "session_id" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "request_content" jsonb NOT NULL DEFAULT '{}'::jsonb, + "response_content" jsonb NOT NULL DEFAULT '{}'::jsonb, + "remark" varchar(500) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying, + "node_id" varchar(64) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying, + CONSTRAINT "prompts_compose_session_pkey" PRIMARY KEY ("id") +); + +ALTER TABLE "public"."prompts_compose_session" OWNER TO "postgres"; + +CREATE INDEX "idx_compose_session_creator_session_created" ON "public"."prompts_compose_session" USING btree ( + "creator", "session_id", "created_at" DESC ); --- 索引 -CREATE UNIQUE INDEX IF NOT EXISTS uk_prompts_compose_task_task_id ON prompts_compose_task(task_id); -CREATE INDEX IF NOT EXISTS idx_prompts_compose_task_status ON prompts_compose_task(status); -CREATE INDEX IF NOT EXISTS idx_prompts_compose_task_deleted_at ON prompts_compose_task(deleted_at); +CREATE INDEX "idx_compose_session_session_id" ON "public"."prompts_compose_session" USING btree ("session_id"); --- 注释 -COMMENT ON TABLE prompts_compose_task IS '提示词任务记录表'; -COMMENT ON COLUMN prompts_compose_task.id IS '主键ID'; -COMMENT ON COLUMN prompts_compose_task.tenant_id IS '租户ID'; -COMMENT ON COLUMN prompts_compose_task.creator IS '创建人'; -COMMENT ON COLUMN prompts_compose_task.created_at IS '创建时间'; -COMMENT ON COLUMN prompts_compose_task.updater IS '更新人'; -COMMENT ON COLUMN prompts_compose_task.updated_at IS '更新时间'; -COMMENT ON COLUMN prompts_compose_task.deleted_at IS '删除时间(软删)'; -COMMENT ON COLUMN prompts_compose_task.task_id IS 'model-gateway 任务ID'; -COMMENT ON COLUMN prompts_compose_task.model_name IS '业务模型名称'; -COMMENT ON COLUMN prompts_compose_task.skill_name IS '技能名称'; -COMMENT ON COLUMN prompts_compose_task.build_type IS '构建类型:0默认/1提示词构建/2节点构建'; -COMMENT ON COLUMN prompts_compose_task.callback_url IS '回调地址'; -COMMENT ON COLUMN prompts_compose_task.gateway_state IS 'model-gateway 状态:0排队/1执行/2成功/3失败/4已下载'; -COMMENT ON COLUMN prompts_compose_task.request_payload IS '发给 model-gateway 的请求内容'; -COMMENT ON COLUMN prompts_compose_task.result_text IS '回调返回的文本结果'; -COMMENT ON COLUMN prompts_compose_task.messages IS '最终解析后的 messages'; -COMMENT ON COLUMN prompts_compose_task.status IS '业务状态:pending/success/failed'; -COMMENT ON COLUMN prompts_compose_task.error_message IS '业务错误信息'; -COMMENT ON COLUMN prompts_compose_task.oss_file IS '网关返回的结果文件地址'; -COMMENT ON COLUMN prompts_compose_task.file_type IS '结果文件类型'; +CREATE INDEX "idx_prompts_compose_session_deleted_at" ON "public"."prompts_compose_session" USING btree ("deleted_at"); + +COMMENT ON TABLE "public"."prompts_compose_session" IS '提示词历史会话表'; +COMMENT ON COLUMN "public"."prompts_compose_session"."session_id" IS '会话ID'; +COMMENT ON COLUMN "public"."prompts_compose_session"."node_id" IS '节点ID'; +COMMENT ON COLUMN "public"."prompts_compose_session"."request_content" IS '请求内容(JSON格式)'; +COMMENT ON COLUMN "public"."prompts_compose_session"."response_content" IS '返回内容(JSON格式)'; +COMMENT ON COLUMN "public"."prompts_compose_session"."remark" IS '备注'; - --- prompts_compose_session 提示词历史会话表 -CREATE TABLE IF NOT EXISTS prompts_compose_session ( - id BIGINT NOT NULL, - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(64) NOT NULL, - created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - updater VARCHAR(64) NOT NULL, - updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - deleted_at TIMESTAMP(6), - - session_id VARCHAR(64) NOT NULL, - request_content JSONB NOT NULL DEFAULT '{}'::jsonb, - response_content JSONB NOT NULL DEFAULT '{}'::jsonb, - remark VARCHAR(500) NOT NULL DEFAULT '' +-- 2. 模型协议配置表 +CREATE TABLE "public"."prompts_provider_protocol" ( + "id" int8 NOT NULL, + "tenant_id" int8 NOT NULL DEFAULT 0, + "creator" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "created_at" timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "updated_at" timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deleted_at" timestamp(6), + "provider_name" varchar(64) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying, + "request_template" jsonb NOT NULL DEFAULT '{}'::jsonb, + "system_prompt_template" text COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::text, + "status" int4 NOT NULL DEFAULT 1, + CONSTRAINT "prompts_provider_protocol_pkey" PRIMARY KEY ("id") ); --- 索引 -CREATE INDEX IF NOT EXISTS idx_prompts_compose_session_session_id ON prompts_compose_session(session_id); -CREATE INDEX IF NOT EXISTS idx_prompts_compose_session_deleted_at ON prompts_compose_session(deleted_at); --- 注释 -COMMENT ON TABLE prompts_compose_session IS '提示词历史会话表'; -COMMENT ON COLUMN prompts_compose_session.id IS '主键ID'; -COMMENT ON COLUMN prompts_compose_session.tenant_id IS '租户ID'; -COMMENT ON COLUMN prompts_compose_session.creator IS '创建人'; -COMMENT ON COLUMN prompts_compose_session.created_at IS '创建时间'; -COMMENT ON COLUMN prompts_compose_session.updater IS '更新人'; -COMMENT ON COLUMN prompts_compose_session.updated_at IS '更新时间'; -COMMENT ON COLUMN prompts_compose_session.deleted_at IS '删除时间(软删)'; -COMMENT ON COLUMN prompts_compose_session.session_id IS '会话ID'; -COMMENT ON COLUMN prompts_compose_session.request_content IS '请求内容(JSON格式)'; -COMMENT ON COLUMN prompts_compose_session.response_content IS '返回内容(JSON格式)'; -COMMENT ON COLUMN prompts_compose_session.remark IS '备注'; + +ALTER TABLE "public"."prompts_provider_protocol" OWNER TO "postgres"; + +CREATE INDEX "idx_provider_protocol_provider_status" ON "public"."prompts_provider_protocol" USING btree ( + "provider_name", "status" + ); + +COMMENT ON TABLE "public"."prompts_provider_protocol" IS '模型协议映射配置表'; +COMMENT ON COLUMN "public"."prompts_provider_protocol"."provider_name" IS '运营商名称'; +COMMENT ON COLUMN "public"."prompts_provider_protocol"."request_template" IS '请求模板(含 {_system_} / {_user_} 占位符)'; +COMMENT ON COLUMN "public"."prompts_provider_protocol"."system_prompt_template" IS '系统提示词模板(含 %s 输出结构占位符)'; +COMMENT ON COLUMN "public"."prompts_provider_protocol"."status" IS '状态:1启用/0禁用'; - --- prompts_provider_protocol 模型协议映射配置表 -CREATE TABLE IF NOT EXISTS prompts_provider_protocol ( - id BIGINT PRIMARY KEY, - tenant_id BIGINT NOT NULL DEFAULT 0, - creator VARCHAR(64) NOT NULL, - created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - updater VARCHAR(64) NOT NULL, - updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - deleted_at TIMESTAMP(6), - - provider_name VARCHAR(64) NOT NULL DEFAULT '', - target_field VARCHAR(64) NOT NULL DEFAULT '', - merge_order JSONB NOT NULL DEFAULT '[]'::jsonb, - role_mapping JSONB NOT NULL DEFAULT '{}'::jsonb, - content_mapping JSONB NOT NULL DEFAULT '{}'::jsonb, - capabilities JSONB NOT NULL DEFAULT '{}'::jsonb, - request_template JSONB NOT NULL DEFAULT '{}'::jsonb, - system_prompt_template TEXT NOT NULL DEFAULT '', - user_prompt_template TEXT NOT NULL DEFAULT '', - status INT NOT NULL DEFAULT 1, - remark VARCHAR(500) NOT NULL DEFAULT '' +-- 3. 提示词任务记录表 +CREATE TABLE "public"."prompts_compose_task" ( + "id" int8 NOT NULL, + "tenant_id" int8 NOT NULL DEFAULT 0, + "creator" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "created_at" timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "updated_at" timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deleted_at" timestamp(6), + "task_id" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, + "model_name" varchar(128) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying, + "skill_name" varchar(128) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying, + "build_type" int4 NOT NULL DEFAULT 0, + "callback_url" varchar(512) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying, + "gateway_state" int4 NOT NULL DEFAULT 0, + "request_payload" jsonb NOT NULL DEFAULT '{}'::jsonb, + "result_json" jsonb NOT NULL DEFAULT '{}'::jsonb, + "status" varchar(32) COLLATE "pg_catalog"."default" NOT NULL DEFAULT 'pending'::character varying, + "error_message" text COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::text, + "oss_file" varchar(1024) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying, + "file_type" varchar(64) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying, + CONSTRAINT "prompts_compose_task_pkey" PRIMARY KEY ("id") ); --- 索引 -CREATE INDEX IF NOT EXISTS idx_prompts_provider_protocol_provider_name ON prompts_provider_protocol(provider_name); -CREATE INDEX IF NOT EXISTS idx_prompts_provider_protocol_status ON prompts_provider_protocol(status); -CREATE INDEX IF NOT EXISTS idx_prompts_provider_protocol_deleted_at ON prompts_provider_protocol(deleted_at); --- 注释 -COMMENT ON TABLE prompts_provider_protocol IS '模型协议映射配置表'; -COMMENT ON COLUMN prompts_provider_protocol.id IS '主键ID'; -COMMENT ON COLUMN prompts_provider_protocol.tenant_id IS '租户ID'; -COMMENT ON COLUMN prompts_provider_protocol.creator IS '创建人'; -COMMENT ON COLUMN prompts_provider_protocol.created_at IS '创建时间'; -COMMENT ON COLUMN prompts_provider_protocol.updater IS '更新人'; -COMMENT ON COLUMN prompts_provider_protocol.updated_at IS '更新时间'; -COMMENT ON COLUMN prompts_provider_protocol.deleted_at IS '删除时间(软删)'; -COMMENT ON COLUMN prompts_provider_protocol.provider_name IS '运营商名称(openai/deepseek/qwen/anthropic/gemini等)'; -COMMENT ON COLUMN prompts_provider_protocol.target_field IS '目标字段(messages/contents/prompt)'; -COMMENT ON COLUMN prompts_provider_protocol.merge_order IS 'Prompt IR 拼接顺序(system/history/user)'; -COMMENT ON COLUMN prompts_provider_protocol.role_mapping IS '角色映射(system/user/assistant -> provider role)'; -COMMENT ON COLUMN prompts_provider_protocol.content_mapping IS '内容字段映射(content/parts.text等)'; -COMMENT ON COLUMN prompts_provider_protocol.capabilities IS '协议能力配置(system/history/tools/stream等支持情况)'; -COMMENT ON COLUMN prompts_provider_protocol.request_template IS '请求模板(JSON结构模板)'; -COMMENT ON COLUMN prompts_provider_protocol.system_prompt_template IS '系统提示词模板'; -COMMENT ON COLUMN prompts_provider_protocol.status IS '状态:1启用/0禁用'; -COMMENT ON COLUMN prompts_provider_protocol.remark IS '备注'; \ No newline at end of file + +ALTER TABLE "public"."prompts_compose_task" OWNER TO "postgres"; + +CREATE INDEX "idx_prompts_compose_task_creator_created" ON "public"."prompts_compose_task" USING btree ( + "creator", "created_at" DESC + ); + +CREATE INDEX "idx_prompts_compose_task_deleted_at" ON "public"."prompts_compose_task" USING btree ("deleted_at"); + +CREATE INDEX "idx_prompts_compose_task_status" ON "public"."prompts_compose_task" USING btree ("status") WHERE deleted_at IS NULL; + +CREATE UNIQUE INDEX "uk_prompts_compose_task_task_id" ON "public"."prompts_compose_task" USING btree ("task_id"); + +COMMENT ON TABLE "public"."prompts_compose_task" IS '提示词任务记录表'; +COMMENT ON COLUMN "public"."prompts_compose_task"."task_id" IS 'model-gateway 任务ID'; +COMMENT ON COLUMN "public"."prompts_compose_task"."model_name" IS '业务模型名称'; +COMMENT ON COLUMN "public"."prompts_compose_task"."skill_name" IS '技能名称'; +COMMENT ON COLUMN "public"."prompts_compose_task"."build_type" IS '构建类型:0默认/1提示词构建/2节点构建'; +COMMENT ON COLUMN "public"."prompts_compose_task"."callback_url" IS '回调地址'; +COMMENT ON COLUMN "public"."prompts_compose_task"."gateway_state" IS 'model-gateway 状态:0排队/1执行/2成功/3失败/4已下载'; +COMMENT ON COLUMN "public"."prompts_compose_task"."request_payload" IS '发给 model-gateway 的请求内容'; +COMMENT ON COLUMN "public"."prompts_compose_task"."result_json" IS '回调返回结果json'; +COMMENT ON COLUMN "public"."prompts_compose_task"."status" IS '业务状态:pending/success/failed'; +COMMENT ON COLUMN "public"."prompts_compose_task"."error_message" IS '业务错误信息'; +COMMENT ON COLUMN "public"."prompts_compose_task"."oss_file" IS '网关返回的结果文件地址'; +COMMENT ON COLUMN "public"."prompts_compose_task"."file_type" IS '结果文件类型'; \ No newline at end of file