- 后端新增 AI 模块:DeepSeek 客户端、用户级配置表 t_ai_config、用量记录表 t_ai_usage - 批量设置支持 AI 推荐分类与标签,并可一键应用 - 交易列表支持自然语言查询,解析为筛选条件确认后应用 - 支持自然语言记账,解析后预填新增表单 - 新增 AI 设置页:启用开关、API Key、接口地址、模型、连通性测试与用量统计 - 交易列表重排:AI 查询区、已激活筛选标签、备注与查询历史缓存 - 账单导入默认分类下拉补充分类图标 - 顶部用户入口改为下拉菜单(AI 设置 / 退出登录)
99 lines
6.2 KiB
SQL
99 lines
6.2 KiB
SQL
-- 用户表:存储系统用户的基本信息和登录凭证
|
|
CREATE TABLE IF NOT EXISTS t_user (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID,主键自增',
|
|
username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名,唯一标识,用于登录',
|
|
password_hash VARCHAR(255) NOT NULL COMMENT '密码哈希值,使用BCrypt加密存储',
|
|
nickname VARCHAR(50) COMMENT '用户昵称,显示名称',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
|
|
);
|
|
|
|
-- 分类表:存储收支分类信息,支持用户自定义
|
|
CREATE TABLE IF NOT EXISTS t_category (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '分类ID,主键自增',
|
|
user_id BIGINT NOT NULL COMMENT '所属用户ID',
|
|
name VARCHAR(50) NOT NULL COMMENT '分类名称',
|
|
type VARCHAR(10) NOT NULL COMMENT '分类类型:INCOME-收入,EXPENSE-支出',
|
|
icon VARCHAR(50) COMMENT '分类图标,可选',
|
|
sort_order INT NOT NULL DEFAULT 0 COMMENT '排序序号,数值越小越靠前',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
INDEX idx_user_id (user_id) COMMENT '用户ID索引',
|
|
INDEX idx_user_type (user_id, type) COMMENT '用户ID+类型联合索引'
|
|
);
|
|
|
|
-- 收支记录表:存储每一笔收入或支出的详细信息
|
|
CREATE TABLE IF NOT EXISTS t_transaction (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '记录ID,主键自增',
|
|
user_id BIGINT NOT NULL COMMENT '所属用户ID',
|
|
category_id BIGINT COMMENT '所属分类ID,可为空表示未分类',
|
|
type VARCHAR(10) NOT NULL COMMENT '记录类型:INCOME-收入,EXPENSE-支出',
|
|
amount DECIMAL(12, 2) NOT NULL COMMENT '金额,精确到分',
|
|
payment_method VARCHAR(30) COMMENT '支付方式:WECHAT-微信,ALIPAY-支付宝,CASH-现金,BANK-银行卡',
|
|
remark VARCHAR(255) COMMENT '备注说明',
|
|
remark_hidden TINYINT(1) NOT NULL DEFAULT 0 COMMENT '备注是否隐藏:1-隐藏,0-显示',
|
|
external_no VARCHAR(64) COMMENT '外部账单交易号,用于账单导入去重',
|
|
transaction_time DATETIME NOT NULL COMMENT '交易发生时间',
|
|
include_in_stats TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否计入统计:1-计入,0-不计入(如借款、转账等)',
|
|
raw_data JSON COMMENT '账单导入的原始完整数据(结构化JSON),手动记录为空',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
INDEX idx_user_id (user_id) COMMENT '用户ID索引',
|
|
INDEX idx_category_id (category_id) COMMENT '分类ID索引',
|
|
INDEX idx_transaction_time (transaction_time) COMMENT '交易时间索引',
|
|
INDEX idx_user_time (user_id, transaction_time) COMMENT '用户ID+交易时间联合索引',
|
|
UNIQUE INDEX uk_user_external (user_id, external_no) COMMENT '用户ID+外部交易号唯一索引,用于导入去重'
|
|
);
|
|
|
|
-- 标签表:存储用户自定义标签,用于给交易打标签
|
|
CREATE TABLE IF NOT EXISTS t_tag (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '标签ID,主键自增',
|
|
user_id BIGINT NOT NULL COMMENT '所属用户ID',
|
|
name VARCHAR(50) NOT NULL COMMENT '标签名称',
|
|
color VARCHAR(20) COMMENT '标签颜色,用于前端展示',
|
|
sort_order INT NOT NULL DEFAULT 0 COMMENT '排序序号,数值越小越靠前',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
INDEX idx_user_id (user_id) COMMENT '用户ID索引',
|
|
UNIQUE INDEX uk_user_name (user_id, name) COMMENT '用户ID+标签名唯一索引'
|
|
);
|
|
|
|
-- 交易标签关联表:交易与标签的多对多关系
|
|
CREATE TABLE IF NOT EXISTS t_transaction_tag (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '关联ID,主键自增',
|
|
transaction_id BIGINT NOT NULL COMMENT '交易记录ID',
|
|
tag_id BIGINT NOT NULL COMMENT '标签ID',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
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+创建时间联合索引'
|
|
);
|