You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
3.9 KiB

3 weeks ago
# 04 P2 判定(7 项)
Type: task
Status: resolved
Blocked by: 01
## Question
对缺陷报告 P2-1 ~ P2-7 逐项做「原型条款(01 产出)+ PRD v1.2 条款 + 代码现状」三方比对,四类裁决 + 证据链 + 修复方向。
**charting 校准点**:
- P2-1(领取 CAS 幂等):ADR-0021 已落地状态 CAS(`claimLead` 注释自述守卫下沉 LeadTransition)——重点查抢占失败时是否返回明确错误码("已被他人认领"),可能大部分已实现 → 判"已实现/部分"。
- P2-2(数值校验):**语义冲突点**——缺陷报告声称"daily/hold 均 0=无限制",但既有单测 `LeadPoolServiceImplTest` 拒绝 holdLimit<10 不合法)、dailyClaimLimit<00=无限合法)。PRD §4.3 只写 daily_claim_limit 0=无限,hold_limit 默认 200 未说 0=无限。以原型 A7-3-1 原文01 产出裁决报告的"hold 0=无限制"是真是假。
- P2-3(池名全局唯一):PRD §4.3 定稿 UNIQUE——查 `savePool()` 是否校验(含软删行规避)。
- P2-4(部门负责人归属字段只读):PRD 未明确定稿,以原型 A7-3-1 原文为一级依据;若原型明确且代码无守卫 → 实现遗漏;实现方式(忽略变更 vs 拒绝)若 PRD/原型都没定 → 问用户。
- P2-5(批量操作角色隔离):查现有 Controller 权限注解实践(本仓"纯 hasAuthority + 数据种子"机制)——`delete-batch`、`assign-*-batch` 等端点是否已挂权限点;缺 → 实现遗漏(落地机制照既有实践)。
- P2-6(反馈派生字段回填):查 `LeadViewQueryImpl` 列表是否正确回填 反馈情况/反馈内容/最后反馈时间(应取最新 SUBMITTED 反馈,不被草稿污染)。
- P2-7(状态白名单兜底):release/feedback/convert 接口是否被 `LeadTransition.guard``allowedFromStatuses()` 兜底——若是,判误报或部分已实现。
**产出**:`.scratch/lead-defect-a2-a7-3-1/确认清单-P2.md`(同 02 格式)。
**纪律**:PRD 与原型均无定论 → 停下问用户。
## Answer
**判定:误报 5(P2-1/2/3/6/7)/ 实现遗漏 2(P2-4、P2-5\*)/ 真实缺陷 0 / 需求变更 0** → [确认清单-P2.md](../确认清单-P2.md)
- **P2-1 误报**:applyClaim CAS(`eq status=PENDING` L120-128)+ checkCas 65010"已被他人领取"已落地(ADR-0021);防抖/置灰=前端 out of scope。
- **P2-2 误报**:validatePool L206-217 四项数值校验全齐(N/M≥1、daily≥0、hold≥1);报告"daily/hold 均 0=无限"失实——原型仅授权 daily=0,hold=0 留白 → 待确认低优先(§三-2)。
- **P2-3 误报**:validatePool L222-231 池名查重 + BaseEntity @TableLogic 全局逻辑删自动排除软删行 + deleteKey 复用键支持同名重建。
- **P2-4 实现遗漏(票 10)**:savePool L104-131 无角色判定,归属字段(dept/team/省份)越权可改;原型 A7-3-1 已定稿"拦截提交"(拒绝,非忽略),实现方式无需问用户。
- **P2-5 实现遗漏\*(待用户确认)**:LeadPoolController(5 接口)+ LeadController(24 接口)全接口无权限注解 + fail-open,与既有用户决策"不种子化 button 权限点"正面冲突——不自行推翻,列确认清单 §三-1;拍板同时定调 P0-7/P1-2/P2-4 的角色判定机制选型。
- **P2-6 误报**:反馈三态/内容/最后反馈时间=主表快照列,提交刷新(applyFeedback L204-208)、草稿明确不刷(saveFeedbackDraft L290 注释自证),无污染路径。
- **P2-7 误报**:guard 声明式白名单(release={3,4}/feedback={3,4,7}/convert={3,4})+ editLead L156-161 终态锁(CONVERTED 65009/EXPIRED 65003)——按 PRD §6.9 落地,解决原型"过期失效可否编辑"页间矛盾。
- **22 项判定全部完成**:P0 遗漏 6/误报 1;P1 遗漏 3/真实 3/误报 2;P2 遗漏 2/误报 5。累计待用户确认 3 项:P2-5 权限决策冲突(高优先)、A2-1-4-1 选人即分配(P0 清单遗留)、hold=0 留白(低优先)。