统计面板图表的点击下钻交互新增了可关闭开关(默认开启),可在统计面板筛选区或设置页「外观设置」关闭;关闭后点击趋势柱/饼图不再跳转,并隐藏点击提示与饼图手型光标。本次同步更新使用与开发文档,并重截外观设置面板配图。 变更内容: - `guide/dashboard.md`:筛选条件小节与「点击图表查看明细」小节补充开关说明(两处入口、关闭效果与实时同步)。 - `guide/settings.md`:外观设置由三组改为四组,新增「图表点击查看明细」并对其余分组重新编号;配图 `elements/panel-display.png` 重截并上传 OSS。 - `dev/preferences.md`:后端按用户同步偏好总览表加行,并新增「图表点击跳转明细」小节(接口、默认值、存储键、共享 composable 与消费入口)。 - `dev/api.md`:新增 `GET/PUT /api/setting/chart-click-navigation` 接口。 - `dev/data-model.md`:`t_user_preference` 已用偏好键补充 `chartClickNavigation`。
98 lines
6.0 KiB
Markdown
98 lines
6.0 KiB
Markdown
# API 文档
|
||
|
||
系统使用 **Knife4j(OpenAPI 3)** 生成接口文档,后端启动后可直接访问。
|
||
|
||
## 访问入口
|
||
|
||
| 入口 | 地址 | 说明 |
|
||
|---|---|---|
|
||
| Knife4j UI | `http://<host>:<port>/doc.html` | 增强版接口文档界面 |
|
||
| OpenAPI JSON | `http://<host>:<port>/v3/api-docs` | 标准 OpenAPI 描述 |
|
||
| Swagger UI | `http://<host>:<port>/swagger-ui/index.html` | 原生界面 |
|
||
|
||
开发模式下默认端口为 8080,例如 http://localhost:8080/doc.html。
|
||
|
||
## 认证
|
||
|
||
- 接口统一使用 **JWT Bearer** 鉴权,登录接口返回 token 后,在请求头携带:
|
||
|
||
```text
|
||
Authorization: Bearer <token>
|
||
```
|
||
|
||
- Knife4j 配置中已声明全局 `Bearer` 安全方案,可在文档界面直接填入 token 调试。
|
||
- 无需鉴权的接口:`/api/user/login`、`/api/user/register`、`/api/user/registration-status`、`/api/database/status`。
|
||
- 日志实时推送等 SSE 接口因 `EventSource` 无法自定义请求头,兼容通过 `?token=` 查询参数鉴权。
|
||
|
||
## 接口分组
|
||
|
||
| 控制器 | 路径前缀 | 说明 |
|
||
|---|---|---|
|
||
| `UserController` | `/api/user` | 登录、注册、用户信息、注册开关、修改密码 |
|
||
| `TransactionController` | `/api/transaction` | 收支记录增删改查、批量创建与操作、备注隐藏、导出、交易渠道选项 |
|
||
| `TransactionGroupController` | `/api/transaction/group` | 账单关系组的查询、创建、更新、删除与名称历史 |
|
||
| `BillImportController` | `/api/transaction/import` | 账单解析与确认导入 |
|
||
| `ChannelController` | `/api/channel` | 用户自定义交易渠道的增删改查 |
|
||
| `CategoryController` | `/api/category` | 分类管理 |
|
||
| `TagController` | `/api/tag` | 标签管理 |
|
||
| `RuleController` | `/api/rule` | 自定义规则(列表、分页查询、增删改、启停、批量删除) |
|
||
| `StatisticsController` | `/api/statistics` | 统计汇总、分类、趋势、分组 |
|
||
| `AiController` | `/api/ai` | AI 建议、查询、智能查数、文字/图片记账、渠道/关系/规则生成、统计搜索、用量 |
|
||
| `NotificationController` | `/api/notification` | 通知配置、渠道、发送日志 |
|
||
| `EmailBillController` | `/api/email-bill` | 邮箱配置、发件人规则、待处理账单 |
|
||
| `LogController` | `/api/log` | 访问日志、登录日志、运行日志与 SSE |
|
||
| `DatabaseController` | `/api/database` | 数据库状态、测试与配置(含 SSE 进度) |
|
||
| `AppConfigController` | `/api/app` | 应用配置(通知链接、日志保留) |
|
||
| `UserSettingController` | `/api/setting` | 用户偏好(账单来源统计默认值、展示样式、隐藏备注显示、分页、导航) |
|
||
|
||
## 关键接口
|
||
|
||
| 方法 | 路径 | 说明 |
|
||
|---|---|---|
|
||
| GET | `/api/transaction/channels` | 获取交易渠道选项(内置 + 当前用户自定义,含 `code`/`name`/`builtin`) |
|
||
| POST | `/api/transaction/batch` | 批量创建交易记录(逐条可带 `imageId`/`rawData`),导入时按「类型+金额+时间」跳过重复 |
|
||
| PUT | `/api/transaction/{id}/remark-hidden` | 隐藏 / 取消隐藏某条记录的备注 |
|
||
| GET / POST / PUT / DELETE | `/api/channel`、`/api/channel/{id}` | 自定义渠道列表(含使用账单数)、新建、改名、删除 |
|
||
| GET | `/api/transaction/group/by-transaction/{id}` | 查询某笔账单所属的全部关系组(含成员快照) |
|
||
| GET | `/api/transaction/group/names` | 关系名称历史(可按 `type` 过滤,去重、倒序) |
|
||
| POST / PUT / DELETE | `/api/transaction/group`、`/api/transaction/group/{id}` | 创建 / 更新 / 删除账单关系组(删除仅解除关联,不删除账单) |
|
||
| PUT | `/api/user/password` | 修改当前登录用户的密码(校验原密码,新旧需不同) |
|
||
| POST | `/api/ai/record/image` | 上传一至多张账单/支付截图(字段 `files`),调用视觉模型识别为多条交易记录 |
|
||
| POST | `/api/ai/record/image/stream` | 图片记账(SSE):实时推送识别进度,结束返回完整结果 |
|
||
| GET | `/api/ai/image/{id}` | 查看本人上传的图片记账图片,`?thumbnail=true` 返回缩略图 |
|
||
| POST | `/api/ai/channel` | 由自然语言描述生成交易渠道名称 |
|
||
| POST | `/api/ai/relation` | 由关联账单生成关系名称与备注 |
|
||
| POST | `/api/ai/sql` | 智能查数:自然语言生成只读 SQL 并执行 |
|
||
| GET / DELETE | `/api/ai/sql/history` | 查询 / 清空智能查数提问历史(`limit` 上限 200) |
|
||
| GET | `/api/rule/page` | 分页查询规则(`keyword` / `enabled` / `type`) |
|
||
| DELETE | `/api/rule/batch` | 批量删除规则(body `{ ids }`,返回实际删除数) |
|
||
| POST | `/api/ai/rule/suggest` | 依据所选已打标签记录生成规则建议(含 `duplicate` 标记) |
|
||
| POST | `/api/ai/rule/apply` | 批量创建规则(自动去重、按需新建分类/标签) |
|
||
| POST | `/api/ai/statistics` | 自然语言解析为统计面板参数 |
|
||
| GET / PUT | `/api/setting/excluded-display-style` | 查询 / 更新「不计入统计」记录展示样式 |
|
||
| GET / PUT | `/api/setting/show-hidden-data` | 查询 / 更新是否显示已隐藏备注的记录 |
|
||
| GET / PUT | `/api/setting/chart-click-navigation` | 查询 / 更新统计面板图表点击是否跳转明细 |
|
||
| GET / PUT | `/api/setting/pagination-prefs` | 查询 / 更新表格分页候选列表与默认每页条数 |
|
||
| GET / PUT | `/api/setting/nav-menu` | 查询 / 更新左侧导航顺序与显隐 |
|
||
| GET / PUT | `/api/setting/bill-source-include-in-stats` | 查询 / 更新按账单来源的「计入统计」默认值 |
|
||
| POST | `/api/database/config/stream` | 应用数据库配置并通过 SSE 推送进度(另有 `/api/database/test/stream`) |
|
||
|
||
## 统一响应结构
|
||
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "success",
|
||
"data": {}
|
||
}
|
||
```
|
||
|
||
- `code` 非 200 表示业务失败,`message` 为错误信息。
|
||
- 分页接口的 `data` 为 `PageResult`(`records` / `total` 等)。
|
||
- 数据库未配置时返回业务码 `5031`,前端据此跳转初始化引导页。
|
||
|
||
## 相关文档
|
||
|
||
- [整体架构](/dev/architecture)
|
||
- [项目结构](/dev/project-structure)
|