dingdanquanliucheng/缺口定位清单.md

432 lines
20 KiB
Markdown
Raw Normal View History

2026-05-19 18:44:47 +08:00
# 缺口定位清单
> 说明:本清单基于《确定版需求说明书.md》《开发细节/》系列文档,并结合当前代码扫描结果,按“未完成项 → 具体文件 → 具体函数/页面位置”的方式定位。目的不是复述需求,而是明确“缺口落点在哪里”,方便后续逐项补齐。
---
## 1. 订单流程缺口
### 1.1 订单编辑 / 草稿保存已补齐部分闭环
- **当前状态**:已完成后端更新接口和服务层骨架,仍需继续补前端联动与更完整的状态校验。
- **已落点文件**
- `backend/app/api/orders.py`
- `backend/app/schemas/orders.py`
- `backend/app/services/order_service.py`
- `backend/app/repositories/order_repository.py`
- **已落点位置**
- `backend/app/api/orders.py` 新增 `update_order()`,对应 `PUT /api/orders/{order_id}`
- `backend/app/schemas/orders.py` 新增 `UpdateOrderRequest`
- `backend/app/services/order_service.py` 新增 `OrderService.update_order()`,支持草稿/驳回单编辑。
- `backend/app/repositories/order_repository.py` 新增 `update_order_with_items()`
- **仍待继续完善**
- `frontend/web-sales/src/views/OrderFormPage.vue`
- `frontend/web-sales/src/views/OrdersPage.vue`
- `frontend/web-sales/src/views/OrderDetailPage.vue`
- **相关函数**
- `OrderService.update_order()`
- `OrderRepository.update_order_with_items()`
- `OrderService.create_order()`
- `OrderService.submit_order()`
- `OrderService.cancel_order()`
### 1.2 订单审批退回后的通知缺口
- **缺口描述**:需求要求审批退回后通知业务员;当前只有审批日志和审计日志,没有看到完整通知联动。
- **定位文件**
- `backend/app/services/order_service.py`
- `backend/app/services/reminder_service.py`
- `backend/app/api/reminders.py`
- **具体位置**
- `OrderService.approve_order()` 里写了审批日志,但未触发提醒创建或消息推送。
- `reminder_service` 目前只实现了欠款、沉默客户、物流超时三类提醒检查,没有订单审批通知入口。
- **相关函数**
- `OrderService.approve_order()`
- `ReminderService.check_all()`
- `ReminderService.list_reminders()`
### 1.3 取消订单的特殊审批链路仍不完整
- **缺口描述**:需求要求草稿/待审直接取消,已通过/履约中进入 `cancel_pending`,并支持取消审批通过/驳回恢复原状态;当前逻辑有状态字段,但完整业务规则还不够严密。
- **定位文件**
- `backend/app/api/orders.py`
- `backend/app/services/order_service.py`
- `backend/app/repositories/order_repository.py`
- **具体位置**
- `backend/app/services/order_service.py``cancel_order()`、`cancel_approve_order()` 已有基础实现,但对 `cancel_previous_status`、审批拒绝恢复、流程通知的闭环不完整。
- `backend/app/api/orders.py` 中虽有 `/cancel``/cancel-approve`,但前端取消弹窗、审批页与状态机联动仍需补齐。
- **相关函数**
- `OrderService.cancel_order()`
- `OrderService.cancel_approve_order()`
- `OrderRepository.update_cancel_fields()`
### 1.4 确认下发工厂文本的落库与留痕缺口
- **缺口描述**:需求要求生成工厂文本、复制、确认下发,并记录文本日志;当前接口返回文本和确认结果,但日志表/历史记录链路未完全形成闭环。
- **定位文件**
- `backend/app/api/orders.py`
- `backend/app/services/order_service.py`
- `backend/app/repositories/order_repository.py`
- `frontend/mini-manager/pages/supplier-text.js`
- **具体位置**
- `OrderService.get_supplier_text()` 仅返回文本内容,没有看到明确写入 `order_supplier_text_log` 的持久化动作。
- `OrderService.confirm_supplier_text()` 只更新订单状态,文本内容、模板类型、确认人/时间的完整日志留痕还不充分。
- `frontend/mini-manager/pages/supplier-text.js` 需要对照确认下发流程做页面联动。
- **相关函数**
- `OrderService.get_supplier_text()`
- `OrderService.confirm_supplier_text()`
### 1.5 订单状态机仍偏“手动改状态”
- **缺口描述**:需求中的订单状态是严格流程型状态机;当前有通用状态变更接口,但校验和联动不足。
- **定位文件**
- `backend/app/services/order_service.py`
- `backend/app/api/orders.py`
- **具体位置**
- `OrderService.change_order_status()` 允许多个目标状态直接切换,但没有严格限制状态路径。
- `backend/app/api/orders.py``/status` 接口暴露了通用状态修改能力。
- **相关函数**
- `OrderService.change_order_status()`
---
## 2. 司机任务与物流缺口
### 2.1 司机任务创建后订单联动已补齐部分闭环
- **当前状态**:已补充任务取消接口,并继续强化创建/接单/揽货/送达的状态联动与审计。
- **已落点文件**
- `backend/app/api/logistics.py`
- `backend/app/services/logistics_service.py`
- `backend/app/repositories/logistics_repository.py`
- `backend/app/models/business.py`
- **已落点位置**
- `LogisticsService.create_task()`:创建任务后将订单状态切到 `pending_driver`
- `LogisticsService.accept_task()` / `pickup_task()` / `deliver_task()`:形成司机状态流转闭环。
- `LogisticsService.cancel_task()`:新增任务取消入口,并回写订单状态。
- `backend/app/api/logistics.py` 新增 `/api/logistics/tasks/{task_id}/cancel`
- `backend/app/models/business.py` 新增 `OrderSupplierTextLog` 之外的任务取消字段模型支撑。
- **仍待继续完善**
- `frontend/mini-manager/pages/task-create.js`
- `frontend/web-admin/src/views/BusinessPage.vue`
- `frontend/mini-driver/pages/task-list.js`
- `frontend/mini-driver/pages/task-detail.js`
- **相关函数**
- `LogisticsService.create_task()`
- `LogisticsService.accept_task()`
- `LogisticsService.pickup_task()`
- `LogisticsService.deliver_task()`
- `LogisticsService.cancel_task()`
### 2.2 司机端任务可见字段与权限隔离仍需加强
- **缺口描述**:司机只能看到本人任务和脱敏信息;目前有基础限制,但页面与接口的字段控制仍不完全统一。
- **定位文件**
- `backend/app/services/logistics_service.py`
- `backend/app/api/logistics.py`
- `frontend/mini-driver/pages/task-detail.js`
- `frontend/mini-driver/pages/task-list.js`
- **具体位置**
- `LogisticsService._ensure_task_access()`、`LogisticsService._ensure_trace_access()` 已做基础权限控制。
- `LogisticsService._map_task_detail()` 仍返回较多业务字段,司机端页面是否完全隐藏敏感字段需要继续核对。
- **相关函数**
- `LogisticsService._ensure_task_access()`
- `LogisticsService._ensure_trace_access()`
- `LogisticsService._map_task_detail()`
### 2.3 物流轨迹第三方对接未完整上线
- **缺口描述**需求提到快递100/第三方物流轨迹;当前代码仅保留了远程抓取能力,更多是占位式接入。
- **定位文件**
- `backend/app/services/logistics_service.py`
- `backend/app/repositories/logistics_repository.py`
- **具体位置**
- `LogisticsService._load_third_party_traces()`
- `LogisticsService._fetch_remote_traces()`
- `LogisticsService.get_trace()`
- **相关函数**
- `LogisticsService._fetch_remote_traces()`
- `LogisticsService._merge_trace_list()`
### 2.4 司机揽货附件上传与 OSS 元数据未完全统一
- **缺口描述**:需求要求图片/视频上传到 OSS写入附件元数据当前已有附件写入但字段级元数据与实际 OSS 约束仍需核对。
- **定位文件**
- `backend/app/services/logistics_service.py`
- `backend/app/services/file_service.py`
- `backend/app/api/files.py`
- **具体位置**
- `LogisticsService._persist_task_attachments()` 将图片/视频落到附件表,但未完全看出对 `storage_provider`、`bucket_name`、`object_key` 的全链路使用。
- `file_service` 负责附件封装,需核对是否满足需求中的 OSS 字段。
- **相关函数**
- `LogisticsService._persist_task_attachments()`
- `FileService.build_attachment_payload()`
---
## 3. 提醒与配置缺口
### 3.1 提醒中心页面与接口联动已补齐
- **当前状态**:提醒列表筛选与已读操作已补齐前端联动,后端读接口已接通。
- **已落点文件**
- `backend/app/api/reminders.py`
- `backend/app/services/reminder_service.py`
- `frontend/web-sales/src/views/RemindersPage.vue`
- `frontend/web-sales/src/mockApi.js`
- **已落点位置**
- `ReminderService.list_reminders()`、`ReminderService.read_reminder()` 已支持列表与已读闭环。
- `frontend/web-sales/src/views/RemindersPage.vue` 已支持筛选和标记已读。
- **相关函数**
- `ReminderService.list_reminders()`
- `ReminderService.read_reminder()`
- `readReminder()`
### 3.2 欠款生成与提醒口径未完全固化
- **缺口描述**:需求明确欠款按 `shipped/delivered` 配置生成,且提醒只生成一次;当前提醒逻辑有雏形,但需要和订单状态/欠款状态完全对齐。
- **定位文件**
- `backend/app/services/reminder_service.py`
- `backend/app/services/arrears_service.py`
- `backend/app/repositories/config_repository.py`
- `backend/app/api/configs.py`
- **具体位置**
- `ReminderService.check_arrears()`、`check_inactive_customers()`、`check_logistics_timeout()` 有基本规则。
- 配置读取依赖 `ConfigRepository.get_by_key()`,需要确认欠款起算、物流超时、沉默客户阈值已在所有业务点统一引用。
- **相关函数**
- `ReminderService.check_arrears()`
- `ReminderService.check_inactive_customers()`
- `ReminderService.check_logistics_timeout()`
- `ReminderService._get_config_value()`
### 3.3 配置中心页面与即时生效闭环不足
- **缺口描述**:需求要求系统配置可视化管理并即时生效;当前后端有配置服务,但页面与缓存刷新未完全闭合。
- **定位文件**
- `backend/app/api/configs.py`
- `backend/app/services/config_service.py`
- `frontend/web-admin/src/views/SystemPage.vue`
- **具体位置**
- `ConfigService` 负责读取/写入配置,但前端系统配置页是否覆盖全部配置项、是否支持联动刷新,还需继续补齐。
- **相关函数**
- `ConfigService.get_config()`
- `ConfigService.update_config()`
---
## 4. 客户、产品、供应商缺口
### 4.1 客户导入接口未形成完整闭环
- **缺口描述**:需求要求客户导入、去重、失败返回;当前代码中客户创建和详情存在,但导入链路缺口明显。
- **定位文件**
- `backend/app/api/customers.py`
- `backend/app/services/customer_service.py`
- `frontend/web-admin/src/views/BusinessPage.vue`
- **具体位置**
- `CustomerService` 需要核对是否存在批量导入函数;从当前代码扫描看,导入链路未形成完整页面与接口闭环。
- **相关函数**
- `CustomerService.create_customer()`
- `CustomerService.list_customers()`
- `CustomerService.get_customer()`
### 4.2 产品分类独立维护未完全落地
- **缺口描述**:需求要求独立产品分类管理页面和接口;当前产品模块存在分类字段,但独立 CRUD 与前端页面还需补齐。
- **定位文件**
- `backend/app/api/products.py`
- `backend/app/services/product_service.py`
- `backend/app/repositories/product_repository.py`
- `frontend/web-admin/src/views/MasterDataPage.vue`
- **具体位置**
- `ProductService` 负责产品列表/详情/创建,但分类独立维护能力仍需核对。
- `frontend/web-admin/src/views/MasterDataPage.vue` 承担主数据页,分类管理是否完整展示需要补齐。
- **相关函数**
- `ProductService.list_products()`
- `ProductService.create_product()`
- `ProductService.get_product()`
### 4.3 工厂/供应商模板类型差异未完全实现
- **缺口描述**:需求要求工厂模板类型可配置并参与下发文案生成;当前只有基础 supplier 管理。
- **定位文件**
- `backend/app/api/suppliers.py`
- `backend/app/services/supplier_service.py`
- `backend/app/repositories/supplier_repository.py`
- **具体位置**
- `SupplierService` 负责供应商 CRUD但模板类型、下发文本模板差异的业务规则需要继续确认。
- **相关函数**
- `SupplierService.list_suppliers()`
- `SupplierService.create_supplier()`
- `SupplierService.update_supplier()`
---
## 5. 系统管理缺口
### 5.1 用户管理列表分页已补齐前端联动,后端仍保留简化分页
- **当前状态**:前端用户/角色/菜单管理页已接通真实接口;后端仍采用接口层切片分页,但已满足当前功能闭环。
- **已落点文件**
- `backend/app/api/system.py`
- `backend/app/services/system_service.py`
- `frontend/web-admin/src/views/SystemPage.vue`
- `frontend/web-admin/src/mockApi.js`
- **已落点位置**
- `SystemPage.vue` 已支持用户、角色、菜单的查询、新增、编辑、授权、重置密码。
- `mockApi.js` 已按真实接口路径完成联调封装。
- **相关函数**
- `SystemService.list_users()`
- `SystemService.list_roles()`
- `SystemService.list_menus()`
### 5.2 用户停用/启用与重置密码以外的生命周期未完整
- **缺口描述**:需求要求用户、角色、菜单的停用启用、权限变更、异常约束完整;当前实现还偏基础。
- **定位文件**
- `backend/app/services/system_service.py`
- `backend/app/api/system.py`
- **具体位置**
- `SystemService.create_user()`、`update_user()`、`reset_password()` 有实现,但用户停用/启用、批量操作等未完整。
- `SystemService.update_role()` 已拦截管理员角色停用,但其他角色生命周期还需补齐。
- **相关函数**
- `SystemService.create_user()`
- `SystemService.update_user()`
- `SystemService.reset_password()`
- `SystemService.update_role()`
### 5.3 菜单权限即时生效/缓存刷新缺口
- **缺口描述**:需求要求角色授权后菜单和按钮权限立即生效;当前代码能授权,但没有看到 token/缓存层的即时刷新。
- **定位文件**
- `backend/app/services/system_service.py`
- `backend/app/api/auth.py`
- `frontend/web-admin/src/store.js`
- **具体位置**
- `SystemService.assign_role_menus()` 写库后未见缓存失效逻辑。
- 登录后前端 store/路由刷新机制需继续核对。
- **相关函数**
- `SystemService.assign_role_menus()`
- `SystemService.get_role_menu_assignment()`
---
## 6. 报表、审计、导出缺口
### 6.1 报表口径与导出前端闭环已接通,细分口径仍可继续优化
- **当前状态**:报表查询与导出接口已接通前端;口径统一已作为后续优化项保留。
- **已落点文件**
- `backend/app/api/reports.py`
- `backend/app/services/report_service.py`
- `backend/app/repositories/report_repository.py`
- `frontend/web-admin/src/views/ReportsPage.vue`
- `frontend/web-admin/src/mockApi.js`
- **已落点位置**
- `ReportService.get_performance_report()`
- `ReportService.export_performance_report()`
- `fetchPerformanceReport()`
- `exportPerformanceReport()`
- **相关函数**
- `ReportService.get_performance_report()`
- `ReportService.export_performance_report()`
### 6.2 审计日志覆盖面已覆盖主要闭环,细节仍可继续增强
- **当前状态**:订单、物流、提醒、系统管理、报表导出均已具备审计写入;后续可继续扩展到更多细粒度场景。
- **已落点文件**
- `backend/app/services/audit_service.py`
- `backend/app/api/audit_logs.py`
- `backend/app/services/order_service.py`
- `backend/app/services/logistics_service.py`
- `backend/app/services/reminder_service.py`
- `backend/app/services/report_service.py`
- `backend/app/services/system_service.py`
- **已落点位置**
- `OrderService.create_order()` / `approve_order()` / `cancel_order()` / `update_order()`
- `LogisticsService.create_task()` / `_persist_task_attachments()` / `cancel_task()`
- `ReminderService.read_reminder()`
- `ReportService.export_performance_report()`
- `SystemService.create_user()` / `update_user()` / `reset_password()` / `create_role()` / `update_role()` / `assign_role_menus()` / `create_menu()` / `update_menu()`
- **相关函数**
- `audit_service.write_log()` 的各调用点
---
## 7. 前端页面缺口
### 7.1 业务员端订单编辑与提醒中心已补齐主要闭环
- **当前状态**:业务员端已支持订单新建、编辑、详情、提交、取消,以及提醒筛选和已读。
- **已落点文件**
- `frontend/web-sales/src/views/OrderFormPage.vue`
- `frontend/web-sales/src/views/OrdersPage.vue`
- `frontend/web-sales/src/views/OrderDetailPage.vue`
- `frontend/web-sales/src/views/RemindersPage.vue`
- **已落点位置**
- 订单编辑/草稿保存按钮已接通更新链路。
- 订单详情页已补充编辑入口。
- 提醒中心已补充筛选、已读和状态展示。
### 7.2 管理后台主数据、业务、系统页已补入订单相关信息
- **当前状态**:管理后台已补入订单业务入口、订单详情入口和物流调度信息,不再只停留在客户/产品/系统配置层。
- **已落点文件**
- `frontend/web-admin/src/views/MasterDataPage.vue`
- `frontend/web-admin/src/views/SystemPage.vue`
- `frontend/web-admin/src/views/BusinessPage.vue`
- `frontend/web-admin/src/views/ReportsPage.vue`
- `frontend/web-admin/src/views/ApprovalDetailPage.vue`
- **已落点位置**
- `BusinessPage.vue` 现可查看待发厂订单、订单详情入口、生成发厂文案、确认下发、创建司机任务,并支持订单/任务状态筛选。
- `SystemPage.vue` 已覆盖用户、角色、菜单的查询、新增、编辑、授权、重置密码。
- `ReportsPage.vue` 已接通真实导出查看入口。
- `MasterDataPage.vue` 已新增订单快捷入口,客户详情可直达审批与履约。
- `ApprovalDetailPage.vue` 已补充取消上下文、审批后去向说明及订单/履约/报表联动入口。
- **仍待继续优化**
- 主数据页的分类/产品细节与订单联动统计
- 任务详情页与业务调度页的更深跳转联动
### 7.3 小程序管理层与司机端页面已接入主流程,仍可继续细化
- **当前状态**:管理层小程序和司机端已接入发厂文案、司机任务创建与执行主流程。
- **定位文件**
- `frontend/mini-manager/pages/approve-list.js`
- `frontend/mini-manager/pages/approve-detail.js`
- `frontend/mini-manager/pages/supplier-text.js`
- `frontend/mini-manager/pages/task-create.js`
- `frontend/mini-manager/pages/dashboard.js`
- `frontend/mini-driver/pages/task-list.js`
- `frontend/mini-driver/pages/task-detail.js`
- **仍待继续优化**
- 按订单状态控制按钮显隐
- 附件上传的错误提示与重试
- 审批意见与取消上下文的展示密度
---
## 8. 可直接作为后续开发入口的优先文件
如果要按优先级补齐,建议先从以下文件开始:
1. `backend/app/services/order_service.py`
2. `backend/app/api/orders.py`
3. `backend/app/services/logistics_service.py`
4. `backend/app/api/logistics.py`
5. `backend/app/services/reminder_service.py`
6. `backend/app/services/system_service.py`
7. `frontend/web-sales/src/views/OrderFormPage.vue`
8. `frontend/web-admin/src/views/SystemPage.vue`
9. `frontend/mini-manager/pages/supplier-text.js`
10. `frontend/mini-driver/pages/task-detail.js`
---
## 9. 说明
本清单是“定位清单”,不是最终修复方案。下一步如果需要,我可以继续把这些缺口整理成:
- **按 P0/P1/P2 排序的修复计划**
- **按文件拆分的改造任务卡**
- **按模块输出的逐项代码修改建议**