feat: 接入 DeepSeek,新增 AI 分类建议、自然语言查询与智能记账
- 后端新增 AI 模块:DeepSeek 客户端、用户级配置表 t_ai_config、用量记录表 t_ai_usage - 批量设置支持 AI 推荐分类与标签,并可一键应用 - 交易列表支持自然语言查询,解析为筛选条件确认后应用 - 支持自然语言记账,解析后预填新增表单 - 新增 AI 设置页:启用开关、API Key、接口地址、模型、连通性测试与用量统计 - 交易列表重排:AI 查询区、已激活筛选标签、备注与查询历史缓存 - 账单导入默认分类下拉补充分类图标 - 顶部用户入口改为下拉菜单(AI 设置 / 退出登录)
This commit is contained in:
@@ -65,3 +65,34 @@ CREATE TABLE IF NOT EXISTS t_transaction_tag (
|
||||
UNIQUE INDEX uk_transaction_tag (transaction_id, tag_id) COMMENT '交易+标签唯一索引',
|
||||
INDEX idx_tag_id (tag_id) COMMENT '标签ID索引'
|
||||
);
|
||||
|
||||
-- AI 配置表:存储每个用户的 AI 智能建议相关配置
|
||||
CREATE TABLE IF NOT EXISTS t_ai_config (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '配置ID,主键自增',
|
||||
user_id BIGINT NOT NULL COMMENT '所属用户ID',
|
||||
enabled TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否启用AI智能建议:1-启用,0-关闭',
|
||||
api_key VARCHAR(255) COMMENT 'DeepSeek API Key(明文存储)',
|
||||
base_url VARCHAR(255) NOT NULL DEFAULT 'https://api.deepseek.com' COMMENT 'API 基础地址',
|
||||
model VARCHAR(50) NOT NULL DEFAULT 'deepseek-chat' COMMENT '使用的模型名称',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
UNIQUE INDEX uk_user_id (user_id) COMMENT '用户ID唯一索引,每个用户一条配置'
|
||||
);
|
||||
|
||||
-- AI 使用记录表:记录每次调用 DeepSeek 的用量与结果
|
||||
CREATE TABLE IF NOT EXISTS t_ai_usage (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '记录ID,主键自增',
|
||||
user_id BIGINT NOT NULL COMMENT '所属用户ID',
|
||||
type VARCHAR(20) NOT NULL COMMENT '调用类型:SUGGEST-生成建议,TEST-测试连接',
|
||||
model VARCHAR(50) COMMENT '模型名称',
|
||||
transaction_count INT NOT NULL DEFAULT 0 COMMENT '本次分析的记录数',
|
||||
prompt_tokens INT NOT NULL DEFAULT 0 COMMENT '输入 token 数',
|
||||
completion_tokens INT NOT NULL DEFAULT 0 COMMENT '输出 token 数',
|
||||
total_tokens INT NOT NULL DEFAULT 0 COMMENT '总 token 数',
|
||||
cached_tokens INT NOT NULL DEFAULT 0 COMMENT '缓存命中的输入 token 数',
|
||||
success TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否成功:1-成功,0-失败',
|
||||
error_message VARCHAR(500) COMMENT '失败原因',
|
||||
duration_ms BIGINT COMMENT '调用耗时(毫秒)',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
INDEX idx_user_created (user_id, created_at) COMMENT '用户ID+创建时间联合索引'
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user