Files
X-Financial/document/development/receipt-folder/TODO.md
caoxiaozhu 678f64d772 feat: 统一后端分页查询与前端服务层适配
后端新增通用分页模块,为报销单、员工、预算、agent 资产等
端点统一接入分页参数和游标查询,优化 repository 层分页实
现,前端服务层适配分页响应结构,完善预算图表和全局样式,
优化侧边栏和企业选择器组件,引入 Element Plus 插件注册。
2026-05-29 14:11:06 +08:00

79 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 票据夹功能 TODO
更新时间2026-05-29
## 阶段一:调研与契约
- [x] 梳理现有单据中心导航、列表样式和详情入口。[CONCEPT: 方案设计]
证据:已确认 `DocumentsCenterView.vue``useNavigation.js``AppShellRouteView.vue` 是前端入口。
- [x] 梳理现有 OCR 和报销附件存储链路。[CONCEPT: 背景与问题]
证据:已确认 `/ocr/recognize` 只临时识别;报销明细附件由 `expense_claim_attachment_*` 写入 `expense_claims` 存储。
- [x] 确定本轮不做数据库结构变更,先用票据文件资产和元数据 JSON 完成闭环。[CONCEPT: 目标与非目标]
证据:避免新增迁移,降低本轮开发风险。
## 阶段二:文档
- [x] 创建 `document/development/receipt-folder/CONCEPT.md`。[CONCEPT: 全文]
证据:本文档已落地。
- [x] 创建 `document/development/receipt-folder/TODO.md`。[CONCEPT: 测试方案]
证据:本文档已落地。
## 阶段三:后端票据资产层
- [ ] 新增 `schemas/receipt_folder.py`,定义列表项、详情、字段更新和删除响应。[CONCEPT: 后端]
- [ ] 新增 `services/receipt_folder.py`,负责源文件保存、元数据读写、预览解析、列表过滤和安全路径校验。[CONCEPT: 票据持久化]
- [ ] 新增 `api/v1/endpoints/receipt_folder.py`,暴露列表、详情、更新、删除、预览和源文件接口。[CONCEPT: 后端]
- [ ]`api/v1/router.py` 注册票据夹接口。[CONCEPT: 后端]
- [ ] 改造 `/ocr/recognize`OCR 后保存源文件并把 `receipt_id` 等可选字段带回前端。[CONCEPT: OCR 改造]
## 阶段四:前端票据夹页面
- [ ] 新增 `services/receiptFolder.js`,封装票据夹接口和 Blob 文件读取。[CONCEPT: 前端]
- [ ] 新增 `ReceiptFolderView.vue`,实现列表、状态页签、搜索、一键关联入口和详情切换。[CONCEPT: 列表]
- [ ] 新增 `receipt-folder-view.css`,复用单据中心紧凑企业级视觉,避免继续拉大现有 `DocumentsCenterView.vue`。[CONCEPT: 列表]
- [ ]`useNavigation.js` 增加 `receiptFolder`,并放在 `documents` 后面。[CONCEPT: 前端]
- [ ]`accessControl.js` 增加默认可见权限和默认路由顺序。[CONCEPT: 前端]
- [ ]`AppShellRouteView.vue` 渲染票据夹页面,并让页面可打开报销对话。[CONCEPT: 一键关联票据]
## 阶段五:一键关联流程
- [ ] 实现未关联票据多选弹窗第一步。[CONCEPT: 一键关联票据]
- [ ] 实现未提交草稿选择和“新建报销单”选择第二步。[CONCEPT: 一键关联票据]
- [ ] 从票据源文件接口取回 Blob 并构造 `File` 对象传给报销对话。[CONCEPT: 对话衔接]
- [ ] 选择已有草稿时,打开对话并带入草稿单号和关联提示。[CONCEPT: 一键关联票据]
- [ ] 选择新建报销单时,打开对话并带入基于票据新建的提示。[CONCEPT: 一键关联票据]
## 阶段六:测试与验证
- [ ] 补充后端票据夹服务和接口测试,超时时间控制在 60s 内。[CONCEPT: 测试方案]
- [ ] 补充前端导航和票据夹视图模型测试。[CONCEPT: 测试方案]
- [ ] 运行前端构建或定向测试。[CONCEPT: 指标与验收]
- [ ] 在 Docker `x-financial-main``/app` 内运行后端定向测试。[CONCEPT: 测试方案]
- [ ] 手动核对侧边栏位置、列表密度、详情预览和关联弹窗。[CONCEPT: 指标与验收]
## 阶段七:收口
- [ ] 回看 `CONCEPT.md` 验收标准,确认已实现项均有证据。[CONCEPT: 指标与验收]
- [ ] 更新本 TODO 的完成状态和验证记录。[CONCEPT: 测试方案]