feat: 收支记录页支持基于勾选账单 AI 生成规则

在收支记录页批量操作区新增「AI 生成规则」入口,可基于勾选的账单调用 AI 归纳分类与标签规则,在弹窗中预览、勾选创建,并可选择同时将这些规则应用到所选账单,复用既有规则生成能力并补充本地匹配应用接口。

变更内容:
- 后端新增 `POST /api/ai/rule/apply-transactions`(`AiRuleService.applyToTransactions`):按传入规则对指定交易做本地匹配,命中则覆盖分类、追加标签,必要时新建分类与标签,复用 `AiSuggestionService.apply` 落库。
- 新增 DTO `AiRuleTransactionApplyRequest`,复用 `AiRuleApplyRequest.Item` 结构承载规则定义。
- 前端 `api/ai.ts` 抽出 `AiRuleApplyItem` 类型并新增 `applyRulesToTransactions`。
- 新增组件 `AiRuleSuggestModal.vue`:展示规则建议、勾选创建,并提供「同时应用到当前勾选的 N 条账单」开关。
- `TransactionList.vue` 批量操作区新增「AI 生成规则」按钮(受 AI 启用状态控制),勾选账单后一步生成并预览规则。
- `locales/messages.ts` 补充相关中文、英文、日文文案。

说明:
- `apply-transactions` 为纯本地匹配、不调用大模型,不外发任何敏感数据;`suggest` 仍遵循白名单只发送类型、备注、渠道与分类标签名称。
This commit is contained in:
2026-10-13 20:53:00 +08:00
parent bfd314a38e
commit 3b7b59ff6f
8 changed files with 488 additions and 18 deletions
+20
View File
@@ -1440,6 +1440,26 @@ export default {
en: 'All generated rules already exist',
ja: '生成されたルールはすべて既存です',
},
selectFirst: {
zh: '请先勾选要用于生成规则的账单',
en: 'Please select the records to derive rules from',
ja: 'ルール生成に使う記録を先に選択してください',
},
applyToSelection: {
zh: '同时应用到当前勾选的 {count} 条账单',
en: 'Also apply to the {count} selected records',
ja: '選択中の {count} 件の記録にも適用する',
},
applyToSelectionNote: {
zh: '命中规则时会覆盖这些账单的分类并追加标签(不改动备注与金额)',
en: 'Matching rules overwrite the category and append tags of these records (remark and amount unchanged)',
ja: 'ルールが一致した場合、これらの記録のカテゴリを上書きしタグを追加します(備考と金額は変更しません)',
},
appliedAndApplied: {
zh: '已创建 {rules} 条规则,并应用到 {transactions} 条账单',
en: 'Created {rules} rule(s) and applied to {transactions} record(s)',
ja: '{rules} 件のルールを作成し、{transactions} 件の記録に適用しました',
},
},
category: {
label: { zh: 'AI 生成分类', en: 'AI Category', ja: 'AI 生成カテゴリ' },