feat: 新增主动拉取与多类型回调功能

- 新增 ActivePull 实体、DAO、DTO 及 Service,支持主动拉取任务管理
- 新增 ComposeCallback、VideoCallback、HttpNodeCallback 多类型回调接口
- FlowExecution 增加 NodeGroupId 和 TotalTokens 字段,支持节点组追踪与 Token 统计
- ExecutedNodes 结构由字符串列表改为包含执行状态的节点对象列表
- 重构回调通知机制,统一 Notify 函数调用
- 优化输出项类型判断逻辑,新增文件类型标识
This commit is contained in:
2026-06-10 14:23:55 +08:00
parent ab3a2d967e
commit 03c95c3601
33 changed files with 3207 additions and 615 deletions

View File

@@ -406,6 +406,8 @@ CREATE TABLE IF NOT EXISTS black_deacon_flow_execution (
-- 业务字段
flow_user_id BIGINT NOT NULL, -- 流程ID
flow_name VARCHAR(128) NOT NULL DEFAULT '',
node_group_id varchar(64) NOT NULL DEFAULT '',
total_tokens integer NOT NULL DEFAULT 0,
trigger_type VARCHAR(32) NOT NULL DEFAULT '', -- 触发类型
duration_ms BIGINT NOT NULL DEFAULT 0, -- 执行时长(毫秒)
status SMALLINT NOT NULL DEFAULT 1, -- 状态:1-运行中,2-成功,3-失败
@@ -435,6 +437,8 @@ COMMENT ON COLUMN black_deacon_flow_execution.updated_at IS '更新时间';
COMMENT ON COLUMN black_deacon_flow_execution.deleted_at IS '删除时间(软删)';
COMMENT ON COLUMN black_deacon_flow_execution.flow_user_id IS '流程ID';
COMMENT ON COLUMN black_deacon_flow_execution.flow_name IS '流程名称';
COMMENT ON COLUMN black_deacon_flow_execution.total_tokens IS '总token消耗';
COMMENT ON COLUMN black_deacon_flow_execution.node_group_id IS '节点组ID';
COMMENT ON COLUMN black_deacon_flow_execution.trigger_type IS '触发类型';
COMMENT ON COLUMN black_deacon_flow_execution.duration_ms IS '执行时长(毫秒)';
COMMENT ON COLUMN black_deacon_flow_execution.status IS '状态:1-运行中,2-成功,3-失败';
@@ -518,4 +522,139 @@ COMMENT ON COLUMN black_deacon_flow_template.category_name IS '流程分类名
COMMENT ON COLUMN black_deacon_flow_template.flow_content IS '流程内容';
COMMENT ON COLUMN black_deacon_flow_template.node_input_params IS '节点输入参数';
COMMENT ON COLUMN black_deacon_flow_template.status IS '流程状态1启用/0停用';
--------------------pgsql创建black_deacon_flow_template表语句---------------------------
--------------------pgsql创建black_deacon_flow_template表语句---------------------------
--------------------pgsql创建black_deacon_active_pull表语句---------------------------
-- 主动拉取记录表
CREATE TABLE IF NOT EXISTS black_deacon_active_pull (
-- 基础字段(完全对齐项目规范)
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),
-- 业务字段
type VARCHAR(64) NOT NULL DEFAULT '',
request_parament JSONB DEFAULT '{}',
response_parament JSONB DEFAULT '{}',
extension JSONB DEFAULT '{}'
);
-- 索引
CREATE INDEX idx_active_pull_tenant_id ON black_deacon_active_pull(tenant_id);
CREATE INDEX idx_active_pull_type ON black_deacon_active_pull("type");
CREATE INDEX idx_active_pull_deleted_at ON black_deacon_active_pull(deleted_at);
-- 注释
COMMENT ON TABLE black_deacon_active_pull IS '主动拉取记录表';
COMMENT ON COLUMN black_deacon_active_pull.id IS '主键ID';
COMMENT ON COLUMN black_deacon_active_pull.tenant_id IS '租户ID';
COMMENT ON COLUMN black_deacon_active_pull.creator IS '创建人';
COMMENT ON COLUMN black_deacon_active_pull.created_at IS '创建时间';
COMMENT ON COLUMN black_deacon_active_pull.updater IS '更新人';
COMMENT ON COLUMN black_deacon_active_pull.updated_at IS '更新时间';
COMMENT ON COLUMN black_deacon_active_pull.deleted_at IS '删除时间(软删)';
COMMENT ON COLUMN black_deacon_active_pull.type IS '类型';
COMMENT ON COLUMN black_deacon_active_pull.request_parament IS '请求参数';
COMMENT ON COLUMN black_deacon_active_pull.response_parament IS '响应参数';
COMMENT ON COLUMN black_deacon_active_pull.extension IS '扩展信息';
--------------------pgsql创建black_deacon_active_pull表语句---------------------------
--------------------pgsql创建black_deacon_node_prompt表语句---------------------------
-- 节点提示词配置表
CREATE TABLE IF NOT EXISTS black_deacon_node_prompt (
-- 基础字段(完全对齐项目规范)
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),
-- 业务字段
node_type VARCHAR(64) NOT NULL DEFAULT '', -- 节点类型
prompt TEXT NOT NULL DEFAULT '', -- 提示词内容
source_type SMALLINT NOT NULL DEFAULT 1 -- 来源1=系统初始化2=用户自定义
);
-- 索引
CREATE INDEX idx_node_prompt_tenant_id ON black_deacon_node_prompt(tenant_id);
CREATE INDEX idx_node_prompt_node_type ON black_deacon_node_prompt(node_type);
CREATE INDEX idx_node_prompt_source_type ON black_deacon_node_prompt(source_type);
CREATE INDEX idx_node_prompt_deleted_at ON black_deacon_node_prompt(deleted_at);
-- 注释
COMMENT ON TABLE black_deacon_node_prompt IS '节点提示词配置表';
COMMENT ON COLUMN black_deacon_node_prompt.id IS '主键ID';
COMMENT ON COLUMN black_deacon_node_prompt.tenant_id IS '租户ID';
COMMENT ON COLUMN black_deacon_node_prompt.creator IS '创建人';
COMMENT ON COLUMN black_deacon_node_prompt.created_at IS '创建时间';
COMMENT ON COLUMN black_deacon_node_prompt.updater IS '更新人';
COMMENT ON COLUMN black_deacon_node_prompt.updated_at IS '更新时间';
COMMENT ON COLUMN black_deacon_node_prompt.deleted_at IS '删除时间(软删)';
COMMENT ON COLUMN black_deacon_node_prompt.node_type IS '节点类型';
COMMENT ON COLUMN black_deacon_node_prompt.prompt IS '提示词内容';
COMMENT ON COLUMN black_deacon_node_prompt.source_type IS '数据来源1=系统初始化2=用户自定义';
--------------------pgsql创建black_deacon_node_prompt表语句---------------------------
--------------------pgsql创建black_deacon_node_execution表语句---------------------------
-- 节点执行记录表
-- 记录每个节点的入参、出参、token消耗、执行状态等详细信息
CREATE TABLE IF NOT EXISTS black_deacon_node_execution (
-- 基础字段(完全对齐项目规范)
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),
-- 业务字段
flow_execution_id BIGINT NOT NULL, -- 流程执行ID
node_id VARCHAR(64) NOT NULL DEFAULT '', -- 节点ID
node_name VARCHAR(128) NOT NULL DEFAULT '', -- 节点名称
node_group_id VARCHAR(64) NOT NULL DEFAULT '', -- 节点分组ID
input_params JSONB DEFAULT '{}', -- 节点输入参数
output_params JSONB DEFAULT '{}', -- 节点输出参数
prompt_tokens INTEGER NOT NULL DEFAULT 0, -- 提示词token消耗
completion_tokens INTEGER NOT NULL DEFAULT 0, -- 补全token消耗
total_tokens INTEGER NOT NULL DEFAULT 0, -- 总token消耗
status SMALLINT NOT NULL DEFAULT 1, -- 执行状态:1-运行中,2-成功,3-失败,4-暂停,5-等待执行
duration_ms BIGINT NOT NULL DEFAULT 0, -- 执行时长(毫秒)
error_message TEXT 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);
CREATE INDEX IF NOT EXISTS idx_bne_node_id ON black_deacon_node_execution(node_id);
CREATE INDEX IF NOT EXISTS idx_bne_status ON black_deacon_node_execution(status);
CREATE INDEX IF NOT EXISTS idx_bne_deleted_at ON black_deacon_node_execution(deleted_at);
-- 表和字段注释
COMMENT ON TABLE black_deacon_node_execution IS '节点执行记录表';
COMMENT ON COLUMN black_deacon_node_execution.id IS '主键ID非自增';
COMMENT ON COLUMN black_deacon_node_execution.tenant_id IS '租户ID';
COMMENT ON COLUMN black_deacon_node_execution.creator IS '创建人';
COMMENT ON COLUMN black_deacon_node_execution.created_at IS '创建时间';
COMMENT ON COLUMN black_deacon_node_execution.updater IS '更新人';
COMMENT ON COLUMN black_deacon_node_execution.updated_at IS '更新时间';
COMMENT ON COLUMN black_deacon_node_execution.deleted_at IS '删除时间(软删)';
COMMENT ON COLUMN black_deacon_node_execution.flow_execution_id IS '流程执行ID';
COMMENT ON COLUMN black_deacon_node_execution.node_id IS '节点ID';
COMMENT ON COLUMN black_deacon_node_execution.node_name IS '节点名称';
COMMENT ON COLUMN black_deacon_node_execution.node_group_id IS '节点分组ID';
COMMENT ON COLUMN black_deacon_node_execution.input_params IS '节点输入参数';
COMMENT ON COLUMN black_deacon_node_execution.output_params 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.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表语句---------------------------