| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- -- 创建研究任务相关表
- -- 1. 研究任务表
- CREATE TABLE IF NOT EXISTS aigcspace.research_tasks (
- -- 主键与基础信息
- id SERIAL PRIMARY KEY,
- task_id VARCHAR(64) UNIQUE NOT NULL,
- user_id VARCHAR(50) NOT NULL,
-
- -- 研究配置
- model VARCHAR(50) NOT NULL DEFAULT 'qwen-deep-research',
- output_format VARCHAR(50) DEFAULT 'model_detailed_report',
-
- -- 研究内容
- initial_query TEXT NOT NULL,
- clarification_questions TEXT,
- user_clarification TEXT,
- research_goal TEXT,
-
- -- 研究结果
- research_plan TEXT,
- final_report TEXT,
- web_sites JSONB,
- reference_sources JSONB,
-
- -- 任务状态
- status VARCHAR(20) NOT NULL DEFAULT 'pending',
- current_phase VARCHAR(50),
- phase_status VARCHAR(50),
- error_message TEXT,
-
- -- Token 统计
- input_tokens INTEGER DEFAULT 0,
- output_tokens INTEGER DEFAULT 0,
- total_tokens INTEGER DEFAULT 0,
-
- -- 费用统计
- bill NUMERIC(10, 4) DEFAULT 0,
-
- -- 时间戳
- created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
- updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
- clarified_at TIMESTAMP,
- completed_at TIMESTAMP,
-
- -- 软删除
- is_deleted BOOLEAN NOT NULL DEFAULT FALSE,
- deleted_at TIMESTAMP,
-
- -- 外键约束
- CONSTRAINT fk_research_tasks_user_id FOREIGN KEY (user_id)
- REFERENCES aigcspace.users(id) ON DELETE CASCADE
- );
- -- 创建索引
- CREATE INDEX IF NOT EXISTS idx_research_tasks_user_id ON aigcspace.research_tasks(user_id);
- CREATE INDEX IF NOT EXISTS idx_research_tasks_task_id ON aigcspace.research_tasks(task_id);
- CREATE INDEX IF NOT EXISTS idx_research_tasks_status ON aigcspace.research_tasks(status);
- CREATE INDEX IF NOT EXISTS idx_research_tasks_created_at ON aigcspace.research_tasks(created_at);
- CREATE INDEX IF NOT EXISTS idx_research_tasks_is_deleted ON aigcspace.research_tasks(is_deleted);
- CREATE INDEX IF NOT EXISTS idx_research_tasks_user_deleted ON aigcspace.research_tasks(user_id, is_deleted);
- CREATE INDEX IF NOT EXISTS idx_research_tasks_current_phase ON aigcspace.research_tasks(current_phase);
- -- 全文搜索索引
- CREATE INDEX IF NOT EXISTS idx_research_tasks_query_search ON aigcspace.research_tasks
- USING gin(to_tsvector('simple', initial_query));
- CREATE INDEX IF NOT EXISTS idx_research_tasks_report_search ON aigcspace.research_tasks
- USING gin(to_tsvector('simple', final_report));
- -- 添加表注释
- COMMENT ON TABLE aigcspace.research_tasks IS '研究任务表';
- COMMENT ON COLUMN aigcspace.research_tasks.id IS '主键ID';
- COMMENT ON COLUMN aigcspace.research_tasks.task_id IS '任务唯一标识(UUID)';
- COMMENT ON COLUMN aigcspace.research_tasks.user_id IS '用户ID';
- COMMENT ON COLUMN aigcspace.research_tasks.model IS '研究模型';
- COMMENT ON COLUMN aigcspace.research_tasks.output_format IS '输出格式:model_detailed_report/model_summary_report';
- COMMENT ON COLUMN aigcspace.research_tasks.initial_query IS '初始研究问题';
- COMMENT ON COLUMN aigcspace.research_tasks.clarification_questions IS '模型反问的澄清问题';
- COMMENT ON COLUMN aigcspace.research_tasks.user_clarification IS '用户的澄清回答';
- COMMENT ON COLUMN aigcspace.research_tasks.research_goal IS '最终确定的研究目标';
- COMMENT ON COLUMN aigcspace.research_tasks.research_plan IS '研究计划';
- COMMENT ON COLUMN aigcspace.research_tasks.final_report IS '最终研究报告';
- COMMENT ON COLUMN aigcspace.research_tasks.web_sites IS '搜索的网站列表';
- COMMENT ON COLUMN aigcspace.research_tasks.reference_sources IS '引用文献列表';
- COMMENT ON COLUMN aigcspace.research_tasks.status IS '任务状态:pending/clarifying/researching/completed/failed';
- COMMENT ON COLUMN aigcspace.research_tasks.current_phase IS '当前阶段:answer/ResearchPlanning/WebResearch/KeepAlive';
- COMMENT ON COLUMN aigcspace.research_tasks.phase_status IS '阶段状态:typing/finished/streamingQueries/streamingWebResult/WebResultFinished';
- COMMENT ON COLUMN aigcspace.research_tasks.error_message IS '错误信息';
- COMMENT ON COLUMN aigcspace.research_tasks.input_tokens IS '输入Token数';
- COMMENT ON COLUMN aigcspace.research_tasks.output_tokens IS '输出Token数';
- COMMENT ON COLUMN aigcspace.research_tasks.total_tokens IS '总Token数';
- COMMENT ON COLUMN aigcspace.research_tasks.bill IS '消费金额(元)';
- COMMENT ON COLUMN aigcspace.research_tasks.created_at IS '创建时间';
- COMMENT ON COLUMN aigcspace.research_tasks.updated_at IS '更新时间';
- COMMENT ON COLUMN aigcspace.research_tasks.clarified_at IS '澄清完成时间';
- COMMENT ON COLUMN aigcspace.research_tasks.completed_at IS '研究完成时间';
- COMMENT ON COLUMN aigcspace.research_tasks.is_deleted IS '是否已删除';
- COMMENT ON COLUMN aigcspace.research_tasks.deleted_at IS '删除时间';
- -- 2. 研究阶段日志表
- CREATE TABLE IF NOT EXISTS aigcspace.research_phase_logs (
- -- 主键与基础信息
- id SERIAL PRIMARY KEY,
- task_id VARCHAR(64) NOT NULL,
-
- -- 阶段信息
- phase VARCHAR(50) NOT NULL,
- status VARCHAR(50) NOT NULL,
- content TEXT,
-
- -- 额外信息
- extra_data JSONB,
-
- -- 时间戳
- created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
-
- -- 外键约束
- CONSTRAINT fk_research_phase_logs_task_id FOREIGN KEY (task_id)
- REFERENCES aigcspace.research_tasks(task_id) ON DELETE CASCADE
- );
- -- 创建索引
- CREATE INDEX IF NOT EXISTS idx_research_phase_logs_task_id ON aigcspace.research_phase_logs(task_id);
- CREATE INDEX IF NOT EXISTS idx_research_phase_logs_phase ON aigcspace.research_phase_logs(phase);
- CREATE INDEX IF NOT EXISTS idx_research_phase_logs_created_at ON aigcspace.research_phase_logs(created_at);
- -- 添加表注释
- COMMENT ON TABLE aigcspace.research_phase_logs IS '研究阶段日志表';
- COMMENT ON COLUMN aigcspace.research_phase_logs.id IS '主键ID';
- COMMENT ON COLUMN aigcspace.research_phase_logs.task_id IS '关联的研究任务ID';
- COMMENT ON COLUMN aigcspace.research_phase_logs.phase IS '阶段名称:answer/ResearchPlanning/WebResearch/KeepAlive';
- COMMENT ON COLUMN aigcspace.research_phase_logs.status IS '阶段状态';
- COMMENT ON COLUMN aigcspace.research_phase_logs.content IS '阶段输出内容';
- COMMENT ON COLUMN aigcspace.research_phase_logs.extra_data IS '额外数据(deep_research信息)';
- COMMENT ON COLUMN aigcspace.research_phase_logs.created_at IS '创建时间';
- -- 3. 研究统计表
- CREATE TABLE IF NOT EXISTS aigcspace.research_statistics (
- -- 主键与基础信息
- id SERIAL PRIMARY KEY,
- user_id VARCHAR(50) NOT NULL,
- stat_date TIMESTAMP NOT NULL,
-
- -- 统计数据
- total_researches INTEGER DEFAULT 0,
- completed_researches INTEGER DEFAULT 0,
- failed_researches INTEGER DEFAULT 0,
-
- -- Token 统计
- total_input_tokens INTEGER DEFAULT 0,
- total_output_tokens INTEGER DEFAULT 0,
- total_tokens INTEGER DEFAULT 0,
-
- -- 费用统计
- total_cost NUMERIC(10, 4) DEFAULT 0,
-
- -- 报告类型统计
- detailed_reports INTEGER DEFAULT 0,
- summary_reports INTEGER DEFAULT 0,
-
- -- 时间戳
- created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
- updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
-
- -- 外键约束
- CONSTRAINT fk_research_statistics_user_id FOREIGN KEY (user_id)
- REFERENCES aigcspace.users(id) ON DELETE CASCADE,
-
- -- 唯一约束
- CONSTRAINT uk_research_statistics UNIQUE (user_id, stat_date)
- );
- -- 创建索引
- CREATE INDEX IF NOT EXISTS idx_research_statistics_user_id ON aigcspace.research_statistics(user_id);
- CREATE INDEX IF NOT EXISTS idx_research_statistics_stat_date ON aigcspace.research_statistics(stat_date);
- CREATE INDEX IF NOT EXISTS idx_research_statistics_user_date ON aigcspace.research_statistics(user_id, stat_date);
- -- 添加表注释
- COMMENT ON TABLE aigcspace.research_statistics IS '研究统计表';
- COMMENT ON COLUMN aigcspace.research_statistics.id IS '主键ID';
- COMMENT ON COLUMN aigcspace.research_statistics.user_id IS '用户ID';
- COMMENT ON COLUMN aigcspace.research_statistics.stat_date IS '统计日期';
- COMMENT ON COLUMN aigcspace.research_statistics.total_researches IS '研究总数';
- COMMENT ON COLUMN aigcspace.research_statistics.completed_researches IS '完成的研究数';
- COMMENT ON COLUMN aigcspace.research_statistics.failed_researches IS '失败的研究数';
- COMMENT ON COLUMN aigcspace.research_statistics.total_input_tokens IS '总输入Token数';
- COMMENT ON COLUMN aigcspace.research_statistics.total_output_tokens IS '总输出Token数';
- COMMENT ON COLUMN aigcspace.research_statistics.total_tokens IS '总Token数';
- COMMENT ON COLUMN aigcspace.research_statistics.total_cost IS '总费用(元)';
- COMMENT ON COLUMN aigcspace.research_statistics.detailed_reports IS '详细报告数量';
- COMMENT ON COLUMN aigcspace.research_statistics.summary_reports IS '摘要报告数量';
- COMMENT ON COLUMN aigcspace.research_statistics.created_at IS '创建时间';
- COMMENT ON COLUMN aigcspace.research_statistics.updated_at IS '更新时间';
|