feat(密钥管理): 代理配置后台明文展示 + 按次统计各密钥调用损耗

- 后台密钥管理「代理设置」列改为完整明文展示(含账号密码),便于运维核对;
  新增 full 字段仅对代理模块下发,密钥两列保持脱敏
- 新增 biz_user_secret_usage_daily(V117):用户 × 模块 × 天累计真实对外请求次数
- 计次口径:LLM 每次真实 HTTP 请求(含重试)计 1 次;代理每次成功提取计 1 次
- LLM 埋点走 SecretUsageContext 上下文(批次外设置、线程池内快照恢复)
- 新增内部上报接口 /api/internal/user-secret-usage(X-Internal-Token)
- 新增后台页「密钥用量统计」:日期范围 + 用户名 + 分组筛选,含范围内汇总
This commit is contained in:
2026-09-13 21:56:46 +08:00
parent 0c98c5bc15
commit a0f6582914
35 changed files with 1545 additions and 76 deletions
@@ -0,0 +1,27 @@
-- V117: 用户密钥调用计次(按用户 × 模块 × 天聚合)
-- 口径:真实对外请求次数。货源/专利密钥按每次 LLM 请求(含重试)计 1 次;
-- 代理按每次成功提取计 1 次(供应商按次计费,租约复用不产生新提取)。
-- 单价字段本期不参与折算,仅预留后续「次数 × 单价」成本估算。
CREATE TABLE IF NOT EXISTS `biz_user_secret_usage_daily` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`user_id` BIGINT NOT NULL COMMENT '用户IDusers.id',
`module_key` VARCHAR(64) NOT NULL COMMENT '密钥模块:similar-asin/appearance-patent/proxy',
`business_date` DATE NOT NULL COMMENT '统计日期',
`call_count` INT NOT NULL DEFAULT 0 COMMENT '调用次数(真实对外请求)',
`unit_price` DECIMAL(10,4) NULL COMMENT '预留:单价(元/次),本期不折算',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_module_date` (`user_id`, `module_key`, `business_date`),
KEY `idx_date_module` (`business_date`, `module_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户密钥调用计次(按天聚合)';
-- 后台菜单:密钥用量统计(挂在「账号与权限」分组下;幂等,仅当 column_key 不存在时插入)
INSERT INTO columns (name, column_key, menu_type, route_path, sort_order, parent_id)
SELECT '密钥用量统计', 'admin_user_secret_usage', 'admin', 'account/user-secret-usage', 42, parent.id
FROM columns parent
WHERE parent.column_key = 'admin_group_account'
AND NOT EXISTS (
SELECT 1 FROM columns WHERE column_key = 'admin_user_secret_usage'
);