feat: 新增执行记录实体与文件上传能力

This commit is contained in:
2026-08-18 09:47:51 +08:00
parent 155a5cad0c
commit a939c45508
67 changed files with 7341 additions and 4001 deletions
+157 -32
View File
@@ -626,11 +626,15 @@ CREATE TABLE IF NOT EXISTS black_deacon_node_execution (
prompt_tokens INTEGER NOT NULL DEFAULT 0, -- 提示词token消耗
completion_tokens INTEGER NOT NULL DEFAULT 0, -- 补全token消耗
total_tokens INTEGER NOT NULL DEFAULT 0, -- 总token消耗
token_info JSONB DEFAULT '[]', -- 节点token明细(汇总节点聚合 total_tokens/total_fee 用)
status SMALLINT NOT NULL DEFAULT 1, -- 执行状态:1-运行中,2-成功,3-失败,4-暂停,5-等待执行
duration_ms BIGINT NOT NULL DEFAULT 0, -- 执行时长(毫秒)
error_message TEXT DEFAULT '' -- 错误信息
);
-- 存量库补列
ALTER TABLE black_deacon_node_execution ADD COLUMN IF NOT EXISTS token_info JSONB DEFAULT '[]';
-- 索引(高频查询)
CREATE INDEX IF NOT EXISTS idx_bne_tenant_id ON black_deacon_node_execution(tenant_id);
CREATE INDEX IF NOT EXISTS idx_bne_flow_execution_id ON black_deacon_node_execution(flow_execution_id);
@@ -658,46 +662,54 @@ COMMENT ON COLUMN black_deacon_node_execution.output_params_path IS '节点输
COMMENT ON COLUMN black_deacon_node_execution.prompt_tokens IS '提示词token消耗';
COMMENT ON COLUMN black_deacon_node_execution.completion_tokens IS '补全token消耗';
COMMENT ON COLUMN black_deacon_node_execution.total_tokens IS '总token消耗';
COMMENT ON COLUMN black_deacon_node_execution.token_info IS '节点token明细(汇总节点聚合 total_tokens/total_fee 用)';
COMMENT ON COLUMN black_deacon_node_execution.status IS '执行状态:1-运行中,2-成功,3-失败,4-暂停,5-等待执行';
COMMENT ON COLUMN black_deacon_node_execution.duration_ms IS '执行时长(毫秒)';
COMMENT ON COLUMN black_deacon_node_execution.error_message IS '错误信息';
--------------------pgsql创建black_deacon_node_execution表语句---------------------------
-- ========== 会话记录 + 工作流/普通会话结果表(2026-08-13 ==========
--------------------pgsql创建black_deacon_session表语句---------------------------
-- 会话记录表
CREATE TABLE IF NOT EXISTS black_deacon_session (
id BIGINT PRIMARY KEY, -- 主键ID(非自增,hook snowflake
tenant_id BIGINT NOT NULL DEFAULT 0, -- 租户ID
-- 基础字段(完全对齐项目规范
id BIGINT PRIMARY KEY, -- 主键ID(非自增)
tenant_id BIGINT NOT NULL DEFAULT 0, -- 租户ID int8
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, -- 会话ID(前端传入,雪花ID
session_name VARCHAR(128) NOT NULL DEFAULT '' -- 会话名称
);
CREATE TABLE IF NOT EXISTS black_deacon_workflow_session_result (
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),
session_id BIGINT NOT NULL DEFAULT 0, -- 所属会话ID
flow_id BIGINT NOT NULL DEFAULT 0, -- 工作流ID
flow_name VARCHAR(128) NOT NULL DEFAULT '', -- 工作流名称
request_params JSONB DEFAULT '{}', -- 请求参数
result_params JSONB DEFAULT '[]'::JSONB, -- 返回结果
status SMALLINT NOT NULL DEFAULT 1, -- 状态:1-运行中,2-成功,3-失败
total_tokens INTEGER NOT NULL DEFAULT 0, -- 总token
total_fee NUMERIC(10,4) NOT NULL DEFAULT 0, -- 总费用
error_msg TEXT NOT NULL DEFAULT '' -- 错误信息
);
CREATE INDEX idx_wsr_session ON black_deacon_workflow_session_result (session_id);
CREATE INDEX idx_wsr_flow ON black_deacon_workflow_session_result (flow_id, creator);
CREATE INDEX idx_wsr_created ON black_deacon_workflow_session_result (created_at);
-- 索引(高频查询)
CREATE UNIQUE INDEX IF NOT EXISTS uk_session_tenant_session_id ON black_deacon_session(tenant_id, session_id);
CREATE INDEX IF NOT EXISTS idx_session_tenant_id ON black_deacon_session(tenant_id);
CREATE INDEX IF NOT EXISTS idx_session_creator ON black_deacon_session(creator);
CREATE INDEX IF NOT EXISTS idx_session_deleted_at ON black_deacon_session(deleted_at);
CREATE TABLE IF NOT EXISTS black_deacon_chat_session_result (
-- 表和字段注释
COMMENT ON TABLE black_deacon_session IS '会话记录表';
COMMENT ON COLUMN black_deacon_session.id IS '主键ID(非自增)';
COMMENT ON COLUMN black_deacon_session.tenant_id IS '租户ID';
COMMENT ON COLUMN black_deacon_session.creator IS '创建人';
COMMENT ON COLUMN black_deacon_session.created_at IS '创建时间';
COMMENT ON COLUMN black_deacon_session.updater IS '更新人';
COMMENT ON COLUMN black_deacon_session.updated_at IS '更新时间';
COMMENT ON COLUMN black_deacon_session.deleted_at IS '删除时间(软删)';
COMMENT ON COLUMN black_deacon_session.session_id IS '会话ID(前端传入,雪花ID';
COMMENT ON COLUMN black_deacon_session.session_name IS '会话名称';
--------------------pgsql创建black_deacon_session表语句---------------------------
--------------------pgsql创建black_deacon_exec_chat表语句---------------------------
-- 普通会话执行记录表
CREATE TABLE IF NOT EXISTS black_deacon_exec_chat (
-- 基础字段(完全对齐项目规范)
id BIGINT PRIMARY KEY,
tenant_id BIGINT NOT NULL DEFAULT 0,
creator VARCHAR(64) NOT NULL,
@@ -705,12 +717,125 @@ CREATE TABLE IF NOT EXISTS black_deacon_chat_session_result (
updater VARCHAR(64) NOT NULL,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
deleted_at timestamp(6),
session_id BIGINT NOT NULL DEFAULT 0, -- 所属会话ID(级联软删)
question TEXT NOT NULL DEFAULT '', -- 用户问题
answer TEXT NOT NULL DEFAULT '', -- 模型返回结果
total_tokens INTEGER NOT NULL DEFAULT 0, -- 总token
total_fee NUMERIC(10,4) NOT NULL DEFAULT 0, -- 总费用
error_msg TEXT NOT NULL DEFAULT '' -- 错误信息
-- 业务字段
session_id VARCHAR(64) NOT NULL DEFAULT '', -- 会话ID
duration BIGINT NOT NULL DEFAULT 0, -- 执行时长(秒)
request_params JSONB DEFAULT '{}', -- 请求参数
result_file_url VARCHAR(512) DEFAULT '', -- 结果文件路径(OSS
total_tokens INTEGER NOT NULL DEFAULT 0, -- 总token消耗
total_fee DOUBLE PRECISION NOT NULL DEFAULT 0, -- 总费用
error_message TEXT DEFAULT '' -- 错误信息
);
CREATE INDEX idx_csr_session ON black_deacon_chat_session_result (session_id);
CREATE INDEX idx_csr_created ON black_deacon_chat_session_result (created_at);
-- 索引(高频查询)
CREATE INDEX IF NOT EXISTS idx_exec_chat_tenant_id ON black_deacon_exec_chat(tenant_id);
CREATE INDEX IF NOT EXISTS idx_exec_chat_session_id ON black_deacon_exec_chat(session_id);
CREATE INDEX IF NOT EXISTS idx_exec_chat_deleted_at ON black_deacon_exec_chat(deleted_at);
-- 表和字段注释
COMMENT ON TABLE black_deacon_exec_chat IS '普通会话执行记录表';
COMMENT ON COLUMN black_deacon_exec_chat.id IS '主键ID';
COMMENT ON COLUMN black_deacon_exec_chat.tenant_id IS '租户ID';
COMMENT ON COLUMN black_deacon_exec_chat.creator IS '创建人';
COMMENT ON COLUMN black_deacon_exec_chat.created_at IS '创建时间';
COMMENT ON COLUMN black_deacon_exec_chat.updater IS '更新人';
COMMENT ON COLUMN black_deacon_exec_chat.updated_at IS '更新时间';
COMMENT ON COLUMN black_deacon_exec_chat.deleted_at IS '删除时间(软删)';
COMMENT ON COLUMN black_deacon_exec_chat.session_id IS '会话ID';
COMMENT ON COLUMN black_deacon_exec_chat.duration IS '执行时长(秒)';
COMMENT ON COLUMN black_deacon_exec_chat.request_params IS '请求参数';
COMMENT ON COLUMN black_deacon_exec_chat.result_file_url IS '结果文件路径(OSS';
COMMENT ON COLUMN black_deacon_exec_chat.total_tokens IS '总token消耗';
COMMENT ON COLUMN black_deacon_exec_chat.total_fee IS '总费用';
COMMENT ON COLUMN black_deacon_exec_chat.error_message IS '错误信息';
--------------------pgsql创建black_deacon_exec_chat表语句---------------------------
--------------------pgsql创建black_deacon_exec_workflow表语句---------------------------
-- 工作流执行记录表
CREATE TABLE IF NOT EXISTS black_deacon_exec_workflow (
-- 基础字段(完全对齐项目规范)
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),
-- 业务字段
session_id VARCHAR(64) NOT NULL DEFAULT '', -- 会话ID
flow_id BIGINT NOT NULL DEFAULT 0, -- 工作流ID
duration BIGINT NOT NULL DEFAULT 0, -- 执行时长(秒)
request_params JSONB DEFAULT '{}', -- 请求参数
status SMALLINT NOT NULL DEFAULT 1, -- 状态:1-运行中,2-成功,3-失败
total_tokens INTEGER NOT NULL DEFAULT 0, -- 总token消耗
total_fee DOUBLE PRECISION NOT NULL DEFAULT 0, -- 总费用
error_message TEXT DEFAULT '' -- 错误信息
);
-- 索引(高频查询)
CREATE INDEX IF NOT EXISTS idx_exec_workflow_tenant_id ON black_deacon_exec_workflow(tenant_id);
CREATE INDEX IF NOT EXISTS idx_exec_workflow_session_id ON black_deacon_exec_workflow(session_id);
CREATE INDEX IF NOT EXISTS idx_exec_workflow_flow_id ON black_deacon_exec_workflow(flow_id);
CREATE INDEX IF NOT EXISTS idx_exec_workflow_status ON black_deacon_exec_workflow(status);
CREATE INDEX IF NOT EXISTS idx_exec_workflow_deleted_at ON black_deacon_exec_workflow(deleted_at);
-- 表和字段注释
COMMENT ON TABLE black_deacon_exec_workflow IS '工作流执行记录表';
COMMENT ON COLUMN black_deacon_exec_workflow.id IS '主键ID';
COMMENT ON COLUMN black_deacon_exec_workflow.tenant_id IS '租户ID';
COMMENT ON COLUMN black_deacon_exec_workflow.creator IS '创建人';
COMMENT ON COLUMN black_deacon_exec_workflow.created_at IS '创建时间';
COMMENT ON COLUMN black_deacon_exec_workflow.updater IS '更新人';
COMMENT ON COLUMN black_deacon_exec_workflow.updated_at IS '更新时间';
COMMENT ON COLUMN black_deacon_exec_workflow.deleted_at IS '删除时间(软删)';
COMMENT ON COLUMN black_deacon_exec_workflow.session_id IS '会话ID';
COMMENT ON COLUMN black_deacon_exec_workflow.flow_id IS '工作流ID';
COMMENT ON COLUMN black_deacon_exec_workflow.duration IS '执行时长(秒)';
COMMENT ON COLUMN black_deacon_exec_workflow.request_params IS '请求参数';
COMMENT ON COLUMN black_deacon_exec_workflow.status IS '状态:1-运行中,2-成功,3-失败';
COMMENT ON COLUMN black_deacon_exec_workflow.total_tokens IS '总token消耗';
COMMENT ON COLUMN black_deacon_exec_workflow.total_fee IS '总费用';
COMMENT ON COLUMN black_deacon_exec_workflow.error_message IS '错误信息';
--------------------pgsql创建black_deacon_exec_workflow表语句---------------------------
--------------------pgsql创建black_deacon_exec_workflow_result表语句---------------------------
-- 工作流执行结果表
CREATE TABLE IF NOT EXISTS black_deacon_exec_workflow_result (
-- 基础字段(完全对齐项目规范)
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),
-- 业务字段
session_id VARCHAR(64) NOT NULL DEFAULT '', -- 会话ID
flow_id BIGINT NOT NULL DEFAULT 0, -- 工作流ID
exec_id BIGINT NOT NULL DEFAULT 0, -- 执行ID
result_file_url VARCHAR(512) DEFAULT '' -- 结果文件路径(OSS
);
-- 索引(高频查询)
CREATE INDEX IF NOT EXISTS idx_exec_workflow_result_tenant_id ON black_deacon_exec_workflow_result(tenant_id);
CREATE INDEX IF NOT EXISTS idx_exec_workflow_result_session_id ON black_deacon_exec_workflow_result(session_id);
CREATE INDEX IF NOT EXISTS idx_exec_workflow_result_exec_id ON black_deacon_exec_workflow_result(exec_id);
CREATE INDEX IF NOT EXISTS idx_exec_workflow_result_deleted_at ON black_deacon_exec_workflow_result(deleted_at);
-- 表和字段注释
COMMENT ON TABLE black_deacon_exec_workflow_result IS '工作流执行结果表';
COMMENT ON COLUMN black_deacon_exec_workflow_result.id IS '主键ID';
COMMENT ON COLUMN black_deacon_exec_workflow_result.tenant_id IS '租户ID';
COMMENT ON COLUMN black_deacon_exec_workflow_result.creator IS '创建人';
COMMENT ON COLUMN black_deacon_exec_workflow_result.created_at IS '创建时间';
COMMENT ON COLUMN black_deacon_exec_workflow_result.updater IS '更新人';
COMMENT ON COLUMN black_deacon_exec_workflow_result.updated_at IS '更新时间';
COMMENT ON COLUMN black_deacon_exec_workflow_result.deleted_at IS '删除时间(软删)';
COMMENT ON COLUMN black_deacon_exec_workflow_result.session_id IS '会话ID';
COMMENT ON COLUMN black_deacon_exec_workflow_result.flow_id IS '工作流ID';
COMMENT ON COLUMN black_deacon_exec_workflow_result.exec_id IS '执行ID';
COMMENT ON COLUMN black_deacon_exec_workflow_result.result_file_url IS '结果文件路径(OSS';
--------------------pgsql创建black_deacon_exec_workflow_result表语句---------------------------