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.
2.5 KiB
2.5 KiB
04 — 三 workspace 视图 + 归属流转
What to build: 客户能在「我的客户 / 客户总览 / 客户公海」三个 workspace 里按各自数据范围列出、切换视图模式,并支持归属流转动作(领取 / 分配 / 抛公海 / 归档 / 恢复)。三视图是逻辑视图不落池表;每个归属动作写操作日志、走 CAS 乐观锁。
Blocked by: 02 — 客户主表 CRUD + 查重校验
Status: ready-for-agent
Spec 依据(详见 issues/03-answer.md):D9 三视图=逻辑视图;D3 归属⊥档案双轴;D19 归档=删除语义(无独立 tab)。
- 三 workspace 查询(票 03 §A,逻辑视图不落库):
- 我的客户 = 当前用户为销售负责人或协同人 且
archive_status=1且 owner 非空 - 客户总览 =
@DataScope覆盖范围内 未删除、未进公海(默认只列archive_status=1) - 客户公海 =
archive_status=1且owner_user_id IS NULL - 管理职务不扩大「我的客户」范围(走「客户总览」)
- 我的客户 = 当前用户为销售负责人或协同人 且
- 内置视图口径(票 03 §B,硬编码不落库):我的客户(我负责的/我协同的/待跟进的/我关注的/最近访问);公海(最近访问/我关注的);总览(最近访问/我关注的/我负责的/我协同的)
- 视图模式(票 03 §C)+ 看板三分组页签(客户阶段/客户星级/关系星级);⚠ 本期「客户阶段」分组下客户均堆在「潜在客户」列,重潜/已成交列恒空=预期行为(D20 改票 B),不得造假阶段数据
- 共用列 + 差异列(票 03 §D):公海列含
enter_pool_time「进入公海时间」、无负责人列 - 新增字段回填:
customer.enter_pool_time(票 03 §F,抛公海写入 / 领取·分配清空) - 归属流转动作(票 03 §E):领取 / 分配 / 抛公海 / 归档(1→2) / 恢复(2→1),各带前置校验("无进行中商机"读 crm-opportunity opp_status=2;项目侧留 seam A5 未建先跳过;归档/合并仅销售负责人可)
- 批量操作部分失败不回滚(逐条独立事务,跳过不可操作项);例外:批量归档整批预检,任一失败整批不执行
- 领取/分配副作用(D25,票 10 锚点):
last_valid_follow_time为空时→赋当前时刻;抛公海/归属迁移不动锚点 - 每个归属动作写
customer_oplog(票 06);CAS 乐观锁 + version @DataScope映射(票 03 §G):总览套DataScopeEnum(SELF/DEPT/DEPT_AND_CHILD/ALL);公海按可见部门范围