feat: 新增业务字段路径读写工具

新增 TakeBusinessFields、WriteBusinessFields、SetByPath 与 GetByPath 等工具,支持按映射路径写入请求体与解析响应,并更新相关依赖。
This commit is contained in:
2026-08-18 10:11:09 +08:00
parent 55c797dd96
commit 76c55fbb73
41 changed files with 6011 additions and 56 deletions
+91 -1
View File
@@ -227,4 +227,94 @@ COMMENT ON COLUMN model_gateway_logs_op.success IS '是否成功:1成功/0失
COMMENT ON COLUMN model_gateway_logs_op.error_msg IS '错误信息(失败时)';
COMMENT ON COLUMN model_gateway_logs_op.cost_ms IS '耗时(毫秒)';
COMMENT ON COLUMN model_gateway_logs_op.request_payload IS '请求 JSON';
COMMENT ON COLUMN model_gateway_logs_op.response_payload IS '响应 JSON';
COMMENT ON COLUMN model_gateway_logs_op.response_payload IS '响应 JSON';
-- =====================================================================================
--------------------pgsql创建model_gateway_model_manage表语句---------------------------
-- 模型管理表
CREATE TABLE IF NOT EXISTS model_gateway_model_manage (
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),
model_supplier VARCHAR(64) NOT NULL DEFAULT '',
model_name VARCHAR(128) NOT NULL DEFAULT '',
model_type INT NOT NULL DEFAULT 0,
base_url VARCHAR(512) NOT NULL DEFAULT '',
http_method VARCHAR(32) NOT NULL DEFAULT '',
system_model BOOLEAN NOT NULL DEFAULT false,
private_model BOOLEAN NOT NULL DEFAULT false,
chat_model BOOLEAN NOT NULL DEFAULT false,
invoke_type VARCHAR(32) NOT NULL DEFAULT '',
api_key VARCHAR(255) NOT NULL DEFAULT '',
enabled BOOLEAN NOT NULL DEFAULT false,
request_mapping JSONB DEFAULT '{}',
response_mapping JSONB DEFAULT '{}',
max_concurrency INT NOT NULL DEFAULT 0
);
-- 索引
CREATE INDEX idx_model_manage_tenant_id ON model_gateway_model_manage(tenant_id);
CREATE INDEX idx_model_manage_supplier ON model_gateway_model_manage(model_supplier);
CREATE INDEX idx_model_manage_type ON model_gateway_model_manage(model_type);
CREATE INDEX idx_model_manage_enabled ON model_gateway_model_manage(enabled);
CREATE INDEX idx_model_manage_deleted_at ON model_gateway_model_manage(deleted_at);
-- 字段与表注释
COMMENT ON TABLE model_gateway_model_manage IS '模型管理表';
COMMENT ON COLUMN model_gateway_model_manage.id IS '主键ID';
COMMENT ON COLUMN model_gateway_model_manage.tenant_id IS '租户ID';
COMMENT ON COLUMN model_gateway_model_manage.creator IS '创建人';
COMMENT ON COLUMN model_gateway_model_manage.created_at IS '创建时间';
COMMENT ON COLUMN model_gateway_model_manage.updater IS '更新人';
COMMENT ON COLUMN model_gateway_model_manage.updated_at IS '更新时间';
COMMENT ON COLUMN model_gateway_model_manage.deleted_at IS '删除时间(软删)';
COMMENT ON COLUMN model_gateway_model_manage.model_supplier IS '模型供应商';
COMMENT ON COLUMN model_gateway_model_manage.model_name IS '模型名称';
COMMENT ON COLUMN model_gateway_model_manage.model_type IS '模型类型';
COMMENT ON COLUMN model_gateway_model_manage.base_url IS '模型地址';
COMMENT ON COLUMN model_gateway_model_manage.http_method IS 'http方法';
COMMENT ON COLUMN model_gateway_model_manage.system_model IS '是否系统模型';
COMMENT ON COLUMN model_gateway_model_manage.private_model IS '是否私有模型';
COMMENT ON COLUMN model_gateway_model_manage.chat_model IS '是否聊天模型';
COMMENT ON COLUMN model_gateway_model_manage.invoke_type IS '调用类型';
COMMENT ON COLUMN model_gateway_model_manage.api_key IS 'api key';
COMMENT ON COLUMN model_gateway_model_manage.enabled IS '是否启用';
COMMENT ON COLUMN model_gateway_model_manage.request_mapping IS '请求映射';
COMMENT ON COLUMN model_gateway_model_manage.response_mapping IS '响应映射';
COMMENT ON COLUMN model_gateway_model_manage.max_concurrency IS '最大并发数';
--------------------pgsql创建model_gateway_model_manage表语句---------------------------
-- =========================
-- 计费规则:model_manage 新增 price_configJSONB),model_session 新增 total_costNUMERIC
-- =========================
ALTER TABLE model_gateway_model_manage
ADD COLUMN IF NOT EXISTS price_config JSONB DEFAULT NULL;
COMMENT ON COLUMN model_gateway_model_manage.price_config
IS '计费规则:{currency,unit,dimensions,rules,discount},未配置为NULL(费用按0处理)';
ALTER TABLE model_gateway_session
ADD COLUMN IF NOT EXISTS total_cost NUMERIC DEFAULT 0;
COMMENT ON COLUMN model_gateway_session.total_cost
IS '本次调用总费用(元),未配置计费规则为0';
-- =========================
-- 异步任务计费:task_start 快照 media_typetask_end 记录 total_cost
-- 模型计费配置(price_config)任务完成时按 modelId 从 model_manage 现查,不在 task_start 快照
-- =========================
ALTER TABLE model_gateway_model_task_start
ADD COLUMN IF NOT EXISTS media_type VARCHAR(32) DEFAULT NULL;
COMMENT ON COLUMN model_gateway_model_task_start.media_type
IS '输入媒体类型快照(audio/no_video/has_video,创建任务时按请求体参考媒体字段推导)';
ALTER TABLE model_gateway_model_task_end
ADD COLUMN IF NOT EXISTS total_cost NUMERIC DEFAULT 0;
COMMENT ON COLUMN model_gateway_model_task_end.total_cost
IS '本次调用总费用(元),未配置计费规则为0';