feat(stat): 添加模型请求按天统计功能

- 新增统计控制器、服务层与数据访问层,提供按天统计接口
- 在 worker 处理任务时原子累加请求计数(仅实际调用模型时计数)
- 更新数据库表结构,添加 asynch_model_stat 表及索引
- 更新文档说明统计功能的使用方式与统计口径
This commit is contained in:
2026-04-27 10:42:42 +08:00
parent f6c70a451e
commit 4e6b98b7d3
11 changed files with 206 additions and 2 deletions

View File

@@ -2,6 +2,7 @@
-- 1) asynch_models模型配置
-- 2) asynch_task异步任务
-- 3) asynch_op_log操作日志统计用
-- 4) asynch_model_stat按天模型请求统计限流/监控用)
-- =========================
-- 1) asynch_models
@@ -161,3 +162,33 @@ COMMENT ON COLUMN asynch_op_log.error_msg IS '错误信息(失败时)';
COMMENT ON COLUMN asynch_op_log.cost_ms IS '耗时(毫秒)';
COMMENT ON COLUMN asynch_op_log.request_payload IS '请求 JSON';
COMMENT ON COLUMN asynch_op_log.response_payload IS '响应 JSON';
-- =========================
-- 4) asynch_model_stat
-- =========================
CREATE TABLE IF NOT EXISTS asynch_model_stat (
day DATE NOT NULL, -- 天YYYY-MM-DD
tenant_id BIGINT NOT NULL DEFAULT 0, -- 租户ID
creator VARCHAR(64) NOT NULL DEFAULT '', -- 创建人
model_name VARCHAR(128) NOT NULL DEFAULT '', -- 模型名称
request_count BIGINT NOT NULL DEFAULT 0, -- 请求次数
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(day, tenant_id, creator, model_name)
);
-- 便于时间段/租户/人/模型过滤
CREATE INDEX IF NOT EXISTS idx_asynch_model_stat_tenant_day ON asynch_model_stat(tenant_id, day);
CREATE INDEX IF NOT EXISTS idx_asynch_model_stat_day ON asynch_model_stat(day);
CREATE INDEX IF NOT EXISTS idx_asynch_model_stat_model_name ON asynch_model_stat(model_name);
CREATE INDEX IF NOT EXISTS idx_asynch_model_stat_creator ON asynch_model_stat(creator);
COMMENT ON TABLE asynch_model_stat IS '按天模型请求统计(用于限流/监控)';
COMMENT ON COLUMN asynch_model_stat.day IS 'YYYY-MM-DD';
COMMENT ON COLUMN asynch_model_stat.tenant_id IS '租户ID';
COMMENT ON COLUMN asynch_model_stat.creator IS '创建人';
COMMENT ON COLUMN asynch_model_stat.model_name IS '模型名称';
COMMENT ON COLUMN asynch_model_stat.request_count IS '请求次数';
COMMENT ON COLUMN asynch_model_stat.created_at IS '创建时间';
COMMENT ON COLUMN asynch_model_stat.updated_at IS '更新时间';