docs(pl): 记录统计审查结果与任务环境验证边界。

This commit is contained in:
wuzilong committed 2026-11-01 21:45:21 +08:00
1 parent f9c206c91d
commit ce6f102dae
2 files changed
+12 -7

No files matched your search

@@ -16,6 +16,8 @@
界面依据用户补充沿用已有样式:列表采用P02,参考`web-admin/src/views/pl/plan-quota/index.vue`和`web-admin/src/views/demo/order/index.vue`;合同详情沿用P10及`ContractDetailDialog.vue`;建档沿用P12及现有`web-admin/src/views/pl/quota-cert/index.vue`。复用统一路由页签、搜索、漏斗、工具栏和附件组件。v3确定功能与信息组织,Fresh Mint与现有组件确定视觉。
本机运行来源只读核对:3006端口进程cwd为主目录`/Users/zlwu/work/00code/shanxia2.0/web-admin`,8000端口为同主目录`backend`,不是任务worktree。任务Web依赖软链到主目录node_modules,dist为任务目录独立实体目录;构建不安装或清理共享依赖,使用`pnpm --config.verify-deps-before-run=false`。浏览器验收必须加载任务产物并以合成API响应隔离,不把现有主目录服务视为任务版验证。
## Task 1: 服务器决定计量版本及各段独立来源
Files: `backend/app/services/pl_quota_sources.py`、`pl_quota_planning.py`、`pl_quota_business.py`、`pl_quota_usage_service.py`;`backend/app/schemas/pl/quota_planning.py`;`backend/tests/test_pl_quota_sources.py`、`test_pl_quota_planning.py`、`test_pl_quota_business.py`。
@@ -66,10 +68,12 @@ Task 3A证据:提交`71116ed69`与保存响应当前读修复`5912e9d05`;独
Files: 新增`backend/app/services/pl_quota_statistics.py`及tests;修改`backend/app/api/pl/quota_cert.py`。
- [ ] 写失败用例:核定300、两合同预占100/80、已用20得到共享100;无权合同/计划不出现在明细或合同聚合;两证和不同单位不合并;分页按合同/证件而非明细。
- [ ] API固定为`GET /statistics/contracts`、`GET /statistics/certificates`返回分页主对象,`GET /contracts/{id}/statistics`返回合同及`certificates`,每证`certType/certId/certNo/productNames/quantityUnit/totalQty/reservedQty/usedQty/availableQty/contractReservedQty/contractUsedQty/products`;`GET /{kind}/{id}/statistics`返回证件及`contracts`及当前权限内`usageItems`。查询当前租户、软删除、CRM和PL范围;余额为授权可见证的全局缓存,合同使用聚合只取授权计划,不泄漏不可见合同明细。
- [ ] 期初/未归属取独立无计划流水,不从全局余额与可见明细的差额推导。主对象先过滤分页,当前页批量取数,Decimal通过_wire序列化为字符串。
- [ ] 运行统计/分页/权限、contract_scope、cert_archive、api回归。提交并审查。
- [x] 写失败用例:核定300、两合同预占100/80、已用20得到共享100;无权合同/计划不出现在明细或合同聚合;两证和不同单位不合并;分页按合同/证件而非明细。
- [x] API固定为`GET /statistics/contracts`、`GET /statistics/certificates`返回分页主对象,`GET /contracts/{id}/statistics`返回合同及`certificates`,每证`certType/certId/certNo/productNames/quantityUnit/totalQty/reservedQty/usedQty/availableQty/contractReservedQty/contractUsedQty/products`;`GET /{kind}/{id}/statistics`返回证件及`contracts`及当前权限内`usageItems`。查询当前租户、软删除、CRM和PL范围;余额为授权可见证的全局缓存,合同使用聚合只取授权计划,不泄漏不可见合同明细。
- [x] 期初/未归属取独立无计划流水,不从全局余额与可见明细的差额推导。主对象先过滤分页,当前页批量取数,Decimal通过_wire序列化为字符串。
- [x] 运行统计/分页/权限、contract_scope、cert_archive、api回归。提交并审查。
Task 3B证据:提交`f9c206c91`,相关78项SQLite回归通过;独立规格、质量审查均通过,各自统计/API 24项验证通过。实际MySQL执行性能未验证。
## Task 4: 五Tab容器和复用统计面板
@@ -86,11 +90,12 @@ Files: `web-admin/src/api/pl/quota-cert.ts`;新`web-admin/src/views/pl/contrac
## Task 5: 建档绑定、段次与安排UI
Files: `web-admin/src/views/pl/quota-cert/index.vue`、`model.ts`、`ContractScopeDialog.vue`;`web-admin/src/views/pl/plan-quota/index.vue`;`web-admin/src/components/business/pl-plan-quota-dialog/index.vue`及model/test。
Files: `web-admin/src/views/pl/quota-cert/index.vue`、`model.ts`、`ContractScopeDialog.vue`;`web-admin/src/views/pl/plan-quota/index.vue`;`web-admin/src/components/business/pl-plan-quota-dialog/index.vue`及model/test;必要时扩展`backend/app/services/pl_quota_planning.py`只读段明细返回及对应测试。
- [ ] 行为测试覆盖多合同产品选择后一次save、保存失败保留输入、单附件解析、编辑ID往返和旧版本配对显示。
- [ ] 建档表单在1200px三列现有区后增加合同产品绑定编辑,加载编辑已有绑定,不由客户端多请求分步保存。建档方式/类型同行,绿色分组竖条保持。
- [ ] 新版配置展示所有装送段产品、合同/单位/需用量;隐藏唯一侧选择,不提交旧配对。保留legacy配置用于旧计划。计划页展开get_plan_quota,列出各段绑定证件及预占/已用,标注缺配、无需两证、原口径。
- [ ] 段次展示须包含无需双证的段产品;当前sourceOptions仅含易制毒,必要时在同一用证详情API新增只读stopProducts,保留sourceOptions计量语义,避免为展示依赖权限不同的计划编辑API。
- [ ] 安排沿用后端原子校验,把手填齐备改为两证条件/余额预检,缺证明不阻断;拒绝返回定位段产品。实际库存、法定证明、两证状态互不替代。
- [ ] 定向tsx/node:test和已有H5/小程序共享配置测试,修正兼容而不新增手机五Tab。提交。