实现 Debug EML 上传到 SuperAgent 链路

This commit is contained in:
andy
2026-07-09 14:22:24 +08:00
parent 9fa608f602
commit fcb30d460a
50 changed files with 3527 additions and 1 deletions

View File

@@ -31,6 +31,30 @@ superagent:
task-result:
# dev SuperAgent HMAC 密钥;优先使用 dev 专属变量,兼容旧通用变量。
hmac-secret: ${SUPERAGENT_DEV_TASK_RESULT_HMAC_SECRET:${SUPERAGENT_TASK_RESULT_HMAC_SECRET:}}
open-api:
# dev Debug EML 调用 SuperAgent Open API默认关闭配置完整后再显式开启。
enabled: ${SUPERAGENT_DEV_OPEN_API_ENABLED:${SUPERAGENT_OPEN_API_ENABLED:false}}
base-url: ${DEERFLOW_DEV_BASE_URL:${DEERFLOW_BASE_URL:}}
api-key: ${DEERFLOW_DEV_OPEN_API_KEY:${DEERFLOW_OPEN_API_KEY:}}
external-subject-id: ${SUPERAGENT_DEV_DEBUG_EML_EXTERNAL_SUBJECT_ID:${SUPERAGENT_DEBUG_EML_EXTERNAL_SUBJECT_ID:th-hotel-debug-eml-upload}}
connect-timeout: ${SUPERAGENT_DEV_DEBUG_EML_CONNECT_TIMEOUT:${SUPERAGENT_DEBUG_EML_CONNECT_TIMEOUT:15s}}
read-timeout: ${SUPERAGENT_DEV_DEBUG_EML_READ_TIMEOUT:${SUPERAGENT_DEBUG_EML_READ_TIMEOUT:180s}}
aliyun:
oss:
endpoint: ${ALIYUN_OSS_DEV_ENDPOINT:${ALIYUN_OSS_ENDPOINT:}}
bucket: ${ALIYUN_OSS_DEV_BUCKET:${ALIYUN_OSS_BUCKET:}}
access-key-id: ${ALIYUN_OSS_DEV_ACCESS_KEY_ID:${ALIYUN_OSS_ACCESS_KEY_ID:}}
access-key-secret: ${ALIYUN_OSS_DEV_ACCESS_KEY_SECRET:${ALIYUN_OSS_ACCESS_KEY_SECRET:}}
public-base-url: ${ALIYUN_OSS_DEV_PUBLIC_BASE_URL:${ALIYUN_OSS_PUBLIC_BASE_URL:}}
debug-eml-prefix: ${ALIYUN_OSS_DEV_DEBUG_EML_PREFIX:${ALIYUN_OSS_DEBUG_EML_PREFIX:debug/eml/}}
debug:
eml-upload:
# dev 默认关闭,需要本地或联调环境显式开启并配置访问口令。
enabled: ${DEBUG_EML_UPLOAD_DEV_ENABLED:${DEBUG_EML_UPLOAD_ENABLED:false}}
access-key: ${DEBUG_EML_UPLOAD_DEV_ACCESS_KEY:${DEBUG_EML_UPLOAD_ACCESS_KEY:}}
max-file-bytes: ${DEBUG_EML_UPLOAD_DEV_MAX_FILE_BYTES:${DEBUG_EML_UPLOAD_MAX_FILE_BYTES:10485760}}
reservation:
demo-data:

View File

@@ -29,6 +29,30 @@ superagent:
task-result:
# prod SuperAgent HMAC 密钥不能为空;生产优先使用 prod 专属变量,兼容旧通用变量。
hmac-secret: ${SUPERAGENT_PROD_TASK_RESULT_HMAC_SECRET:${SUPERAGENT_TASK_RESULT_HMAC_SECRET}}
open-api:
# prod 默认不开放 Debug EML 真实调用;如需启用,必须先接入正式权限和审计策略。
enabled: ${SUPERAGENT_PROD_OPEN_API_ENABLED:false}
base-url: ${DEERFLOW_PROD_BASE_URL:${DEERFLOW_BASE_URL}}
api-key: ${DEERFLOW_PROD_OPEN_API_KEY:${DEERFLOW_OPEN_API_KEY}}
external-subject-id: ${SUPERAGENT_PROD_DEBUG_EML_EXTERNAL_SUBJECT_ID:${SUPERAGENT_DEBUG_EML_EXTERNAL_SUBJECT_ID:th-hotel-debug-eml-upload}}
connect-timeout: ${SUPERAGENT_PROD_DEBUG_EML_CONNECT_TIMEOUT:${SUPERAGENT_DEBUG_EML_CONNECT_TIMEOUT:15s}}
read-timeout: ${SUPERAGENT_PROD_DEBUG_EML_READ_TIMEOUT:${SUPERAGENT_DEBUG_EML_READ_TIMEOUT:180s}}
aliyun:
oss:
endpoint: ${ALIYUN_OSS_PROD_ENDPOINT:${ALIYUN_OSS_ENDPOINT}}
bucket: ${ALIYUN_OSS_PROD_BUCKET:${ALIYUN_OSS_BUCKET}}
access-key-id: ${ALIYUN_OSS_PROD_ACCESS_KEY_ID:${ALIYUN_OSS_ACCESS_KEY_ID}}
access-key-secret: ${ALIYUN_OSS_PROD_ACCESS_KEY_SECRET:${ALIYUN_OSS_ACCESS_KEY_SECRET}}
public-base-url: ${ALIYUN_OSS_PROD_PUBLIC_BASE_URL:${ALIYUN_OSS_PUBLIC_BASE_URL}}
debug-eml-prefix: ${ALIYUN_OSS_PROD_DEBUG_EML_PREFIX:${ALIYUN_OSS_DEBUG_EML_PREFIX:debug/eml/}}
debug:
eml-upload:
# prod 默认关闭;不要在未接入正式用户权限前开放。
enabled: ${DEBUG_EML_UPLOAD_PROD_ENABLED:false}
access-key: ${DEBUG_EML_UPLOAD_PROD_ACCESS_KEY:${DEBUG_EML_UPLOAD_ACCESS_KEY}}
max-file-bytes: ${DEBUG_EML_UPLOAD_PROD_MAX_FILE_BYTES:${DEBUG_EML_UPLOAD_MAX_FILE_BYTES:10485760}}
reservation:
demo-data:

View File

@@ -31,6 +31,30 @@ superagent:
task-result:
# test SuperAgent HMAC 密钥;优先使用 test 专属变量,兼容旧通用变量。
hmac-secret: ${SUPERAGENT_TEST_TASK_RESULT_HMAC_SECRET:${SUPERAGENT_TASK_RESULT_HMAC_SECRET:}}
open-api:
# test Debug EML 调用 SuperAgent Open API默认关闭联调时显式开启。
enabled: ${SUPERAGENT_TEST_OPEN_API_ENABLED:${SUPERAGENT_OPEN_API_ENABLED:false}}
base-url: ${DEERFLOW_TEST_BASE_URL:${DEERFLOW_BASE_URL:}}
api-key: ${DEERFLOW_TEST_OPEN_API_KEY:${DEERFLOW_OPEN_API_KEY:}}
external-subject-id: ${SUPERAGENT_TEST_DEBUG_EML_EXTERNAL_SUBJECT_ID:${SUPERAGENT_DEBUG_EML_EXTERNAL_SUBJECT_ID:th-hotel-debug-eml-upload}}
connect-timeout: ${SUPERAGENT_TEST_DEBUG_EML_CONNECT_TIMEOUT:${SUPERAGENT_DEBUG_EML_CONNECT_TIMEOUT:15s}}
read-timeout: ${SUPERAGENT_TEST_DEBUG_EML_READ_TIMEOUT:${SUPERAGENT_DEBUG_EML_READ_TIMEOUT:180s}}
aliyun:
oss:
endpoint: ${ALIYUN_OSS_TEST_ENDPOINT:${ALIYUN_OSS_ENDPOINT:}}
bucket: ${ALIYUN_OSS_TEST_BUCKET:${ALIYUN_OSS_BUCKET:}}
access-key-id: ${ALIYUN_OSS_TEST_ACCESS_KEY_ID:${ALIYUN_OSS_ACCESS_KEY_ID:}}
access-key-secret: ${ALIYUN_OSS_TEST_ACCESS_KEY_SECRET:${ALIYUN_OSS_ACCESS_KEY_SECRET:}}
public-base-url: ${ALIYUN_OSS_TEST_PUBLIC_BASE_URL:${ALIYUN_OSS_PUBLIC_BASE_URL:}}
debug-eml-prefix: ${ALIYUN_OSS_TEST_DEBUG_EML_PREFIX:${ALIYUN_OSS_DEBUG_EML_PREFIX:debug/eml/}}
debug:
eml-upload:
# test 默认关闭,测试机联调时显式开启并配置访问口令。
enabled: ${DEBUG_EML_UPLOAD_TEST_ENABLED:${DEBUG_EML_UPLOAD_ENABLED:false}}
access-key: ${DEBUG_EML_UPLOAD_TEST_ACCESS_KEY:${DEBUG_EML_UPLOAD_ACCESS_KEY:}}
max-file-bytes: ${DEBUG_EML_UPLOAD_TEST_MAX_FILE_BYTES:${DEBUG_EML_UPLOAD_MAX_FILE_BYTES:10485760}}
reservation:
demo-data:

View File

@@ -0,0 +1,31 @@
-- M004 Debug EML 上传链路记录单次上传、SourceMessage 捕获和 SuperAgent Open API 调用结果。
CREATE TABLE platform_debug_eml_superagent_run (
id BIGINT NOT NULL COMMENT 'Debug EML 运行 ID',
hotel_id VARCHAR(64) NOT NULL COMMENT '酒店或业务上下文 ID',
run_label VARCHAR(128) NULL COMMENT '前端传入的调试标签,仅用于联调筛选和排查',
source_message_id BIGINT NULL COMMENT '关联的内部 SourceMessage Inbox ID写入成功后回填',
external_message_id VARCHAR(256) NULL COMMENT 'Debug 链路生成或解析出的外部邮件 ID',
external_conversation_id VARCHAR(256) NULL COMMENT 'Debug 链路生成或解析出的外部邮件会话 ID',
original_file_name VARCHAR(512) NULL COMMENT '原始上传 .eml 文件名的安全清洗结果',
original_eml_oss_url VARCHAR(2048) NULL COMMENT '原始 .eml 文件在阿里云 OSS 上的访问 URL',
original_eml_sha256 CHAR(64) NULL COMMENT '原始 .eml 文件 SHA-256用于排查重复和内容追溯',
payload_json LONGTEXT NULL COMMENT '发送给 SuperAgent 的 AgentBus-like 邮件 payload JSON不包含 Secret',
superagent_session_id VARCHAR(128) NULL COMMENT 'SuperAgent Open API session ID',
superagent_run_id VARCHAR(128) NULL COMMENT 'SuperAgent 返回的 run ID',
superagent_profile_id VARCHAR(128) NULL COMMENT 'SuperAgent 实际使用的 profile ID',
superagent_profile_version_id VARCHAR(128) NULL COMMENT 'SuperAgent 实际使用的 profile version ID',
superagent_model_name VARCHAR(128) NULL COMMENT 'SuperAgent 响应元数据中的模型名称',
superagent_raw_answer LONGTEXT NULL COMMENT 'SuperAgent 最终 AI 文本回答,用于 Debug 展示和排查',
superagent_parsed_json LONGTEXT NULL COMMENT '后端从最终回答中解析出的 JSON无法解析时为空',
superagent_input_tokens INT NULL COMMENT 'SuperAgent 输入 token 数,供应商返回时保存',
superagent_output_tokens INT NULL COMMENT 'SuperAgent 输出 token 数,供应商返回时保存',
superagent_total_tokens INT NULL COMMENT 'SuperAgent 总 token 数,供应商返回时保存',
run_status VARCHAR(32) NOT NULL COMMENT 'Debug 运行状态CREATED、SOURCE_CAPTURED、SUPERAGENT_SUCCEEDED、SUPERAGENT_FAILED、FAILED',
safe_error_summary VARCHAR(512) NULL COMMENT '安全错误摘要不包含正文、HTML、Secret 或附件签名 URL',
created_at DATETIME(6) NOT NULL COMMENT '记录创建时间,按 UTC 写入',
updated_at DATETIME(6) NOT NULL COMMENT '记录更新时间,按 UTC 写入',
PRIMARY KEY (id),
KEY idx_debug_eml_hotel_time (hotel_id, created_at),
KEY idx_debug_eml_source_message (source_message_id),
KEY idx_debug_eml_status_time (run_status, created_at)
) COMMENT='Debug EML 上传到 SuperAgent 调试运行表记录来源捕获、OSS 转存和 AI 调用结果';