Files
shanxia2.0/docs/superpowers/plans/2026-10-21-mobile-customer-panel-identity.md
T
2026-10-22 16:24:46 +08:00

2.0 KiB

C27C 客户子面板异步身份保护

主详情 C27A 已保护路由身份;ContactPanel、FollowPanel、InvoicePanel、RelatedPanel/OpportunityActions 仍有旧异步响应或确认后写入风险。用户授权完整测试修复,不改Web。单writer,规格/质量依次审查,不提交。

范围及行为

  • 客户detail.vue提供同步失效的父记录epoch/identity检查:同步route watch中先使子操作无效,不能只等child props watcher微任务。可沿PoolSheet exposed invalidate模式或只读guard prop,优先最小一致实现。同ID tab/query不使合法编辑丢失。
  • ContactPanel/FollowPanel/InvoicePanel load/open/save/default或primary/remove在进入时捕获客户ID、行ID、会话版本。每个await之后核对;旧响应不得覆盖新客户、新弹窗、新busy/error,不得继续API写/emit/load。
  • 保存与确认写API前核对,已发写不能撤销但回调不得污染新页。快速打开A→B、A→B→A和卸载失效。关/重开编辑形成新会话;禁止busy时关闭的原行为保持。
  • RelatedPanel将父保护传到OpportunityActions,保护列表/详情读取、follow搜索/详情/保存/删除;删除捕获初始opportunity/row ID,确认后不得重新从新props读取目标。同名记录仍以ID区分。
  • 不改字段、校验、权限、payload、排序、筛选、不新增主数据写入;仅移动组件及必要移动专用helper,保持其它调用者兼容。
  • 生产逻辑deferred tests RED→GREEN:旧load晚回、open A/B反序、确认resolve同tick父路由切ID、ABA、旧save回调、新session busy、卸载,合法同ID操作仍成功。涉及父子时用真实Vue renderer调度,不能只mock同步props。
  • 现有客户validation/follow/attachment及CRM identity相关小集;SFC/SCSS与lint delta;根浏览器同客户tab状态、编辑取消、跨客户关闭与错误态,不擅自确认删除。

具体原缺陷见report.md C27C;只用本轮合成数据,浏览器确认授权保持原范围。