feat: 支持自定义分类与标签规则并优化 AI 查询交互
- 新增 t_rule、t_rule_tag 表(MySQL/SQLite 双脚本)与规则引擎,支持关键词(备注/交易对方/商品名称)、收支类型、金额区间组合匹配 - 新增 /api/rule 增删改查与启用停用接口,侧边栏新增「规则管理」页,支持排序与启停 - 账单导入解析阶段批量匹配,返回命中规则与建议分类/标签,预览表格新增「匹配规则/建议」列 - 确认导入时按行重新匹配:规则建议分类优先于面板默认分类,规则标签与默认标签合并去重 - 删除标签时同步清理规则标签关联 - AI 自然语言查询解析后直接应用筛选并搜索,移除二次确认弹窗,成功提示展示识别意图 - 修正登录日志筛选 success 参数类型为 'true'/'false'
This commit is contained in:
@@ -82,6 +82,7 @@ export default {
|
||||
transactions: { zh: '收支记录', en: 'Transactions', ja: '収支記録' },
|
||||
categories: { zh: '分类管理', en: 'Categories', ja: 'カテゴリ管理' },
|
||||
tags: { zh: '标签管理', en: 'Tags', ja: 'タグ管理' },
|
||||
rules: { zh: '规则管理', en: 'Rules', ja: 'ルール管理' },
|
||||
logs: { zh: '系统日志', en: 'Logs', ja: 'システムログ' },
|
||||
settings: { zh: '系统设置', en: 'Settings', ja: 'システム設定' },
|
||||
user: { zh: '用户', en: 'User', ja: 'ユーザー' },
|
||||
@@ -432,6 +433,35 @@ export default {
|
||||
deleteConfirm: { zh: '删除后将从所有交易记录中移除该标签,确定删除吗?', en: 'This tag will be removed from all transactions. Delete it?', ja: '削除するとすべての取引記録からこのタグが外れます。削除してもよろしいですか?' },
|
||||
},
|
||||
|
||||
// 规则管理
|
||||
rule: {
|
||||
title: { zh: '规则管理', en: 'Rules', ja: 'ルール管理' },
|
||||
add: { zh: '新增规则', en: 'Add Rule', ja: 'ルールを追加' },
|
||||
editTitle: { zh: '编辑规则', en: 'Edit Rule', ja: 'ルールを編集' },
|
||||
addTitle: { zh: '新增规则', en: 'Add Rule', ja: 'ルールを追加' },
|
||||
name: { zh: '规则名称', en: 'Rule Name', ja: 'ルール名' },
|
||||
namePlaceholder: { zh: '请输入规则名称', en: 'Enter rule name', ja: 'ルール名を入力してください' },
|
||||
nameRequired: { zh: '请输入规则名称', en: 'Please enter a rule name', ja: 'ルール名を入力してください' },
|
||||
condition: { zh: '匹配条件', en: 'Conditions', ja: '一致条件' },
|
||||
keyword: { zh: '关键词', en: 'Keyword', ja: 'キーワード' },
|
||||
keywordPlaceholder: { zh: '匹配备注/交易对方/商品名称,包含即命中', en: 'Matches remark / counterparty / product (contains)', ja: '備考/取引相手/商品名に含まれれば一致' },
|
||||
amountRange: { zh: '金额区间', en: 'Amount Range', ja: '金額範囲' },
|
||||
typeAny: { zh: '不限类型', en: 'Any type', ja: '種類を問わない' },
|
||||
targetCategory: { zh: '目标分类', en: 'Target Category', ja: '対象カテゴリ' },
|
||||
targetTags: { zh: '目标标签', en: 'Target Tags', ja: '対象タグ' },
|
||||
notSetCategory: { zh: '不设置分类', en: 'No category', ja: 'カテゴリなし' },
|
||||
notSetTag: { zh: '不设置标签', en: 'No tags', ja: 'タグなし' },
|
||||
enabled: { zh: '启用', en: 'Enabled', ja: '有効' },
|
||||
summaryKeyword: { zh: '含「{kw}」', en: 'contains "{kw}"', ja: '「{kw}」を含む' },
|
||||
summaryAmountRange: { zh: '{min} ~ {max}', en: '{min} ~ {max}', ja: '{min} ~ {max}' },
|
||||
summaryAmountMin: { zh: '≥ {min}', en: '≥ {min}', ja: '≥ {min}' },
|
||||
summaryAmountMax: { zh: '≤ {max}', en: '≤ {max}', ja: '≤ {max}' },
|
||||
summaryNone: { zh: '无条件', en: 'No condition', ja: '条件なし' },
|
||||
deleteConfirm: { zh: '确定要删除这个规则吗?', en: 'Are you sure you want to delete this rule?', ja: 'このルールを削除してもよろしいですか?' },
|
||||
loadCategoriesFailed: { zh: '加载分类失败', en: 'Failed to load categories', ja: 'カテゴリの読み込みに失敗しました' },
|
||||
loadTagsFailed: { zh: '加载标签失败', en: 'Failed to load tags', ja: 'タグの読み込みに失敗しました' },
|
||||
},
|
||||
|
||||
// 账单导入
|
||||
import: {
|
||||
title: { zh: '导入账单', en: 'Import Bill', ja: '明細をインポート' },
|
||||
@@ -478,6 +508,7 @@ export default {
|
||||
counterparty: { zh: '交易对方', en: 'Counterparty', ja: '取引相手' },
|
||||
product: { zh: '商品名称', en: 'Product', ja: '商品名' },
|
||||
status: { zh: '状态', en: 'Status', ja: 'ステータス' },
|
||||
matchedRule: { zh: '匹配规则/建议', en: 'Matched Rule', ja: '一致ルール' },
|
||||
},
|
||||
errorFileType: { zh: '账单类型「{label}」仅支持 {exts} 格式的文件', en: 'Bill type "{label}" only supports files in {exts} format', ja: '明細の種類「{label}」は {exts} 形式のファイルのみ対応しています' },
|
||||
selectFileFirst: { zh: '请先选择账单文件', en: 'Please select a bill file first', ja: '先に明細ファイルを選択してください' },
|
||||
|
||||
Reference in New Issue
Block a user