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.
90 lines
6.6 KiB
90 lines
6.6 KiB
|
7 days ago
|
# feasibility-workplan.md — 工作计划模块(A1X)可行性评估
|
||
|
|
|
||
|
|
> 票 07 产出 · 2026-08-30 · 依据:lanhu-pages A1X 全 6 页(v29)+ 代码现状盘点
|
||
|
|
> 分档口径(map.md):**小** = 纯 CRUD + 列表过滤 + 详情,≤10 端点、无新基础设施;超出即 **大**。
|
||
|
|
|
||
|
|
## 1. 结论速览
|
||
|
|
|
||
|
|
| 方案 | 分档 | 端点估算 | 新表 | 判定依据 |
|
||
|
|
| --- | --- | --- | --- | --- |
|
||
|
|
| 全量 A1X(工作日历+计划管理+出差拜访 6 页) | **大** | ≈ 17-20 | 2(工作计划主表 + 出差计划主子) | 多态关联 7 类对象(3 类悬空)+ 日历聚合 + 出差主子结构 + 登记完成回填语义 |
|
||
|
|
| 精简替代(商机详情「工作计划」Tab) | **小** | 5 | 0(复用现有子表) | 纯子表 CRUD,复用字典/软删/DataScope 既有设施 |
|
||
|
|
|
||
|
|
**建议**:挂起全量 A1X(维持 P1-4),可选做精简 Tab(小口径)。原型批注自身也在收窄范围(见 §3),全量版连原型都没有承诺一期做完。
|
||
|
|
|
||
|
|
## 2. 原型盘点(A1X 全 6 页)
|
||
|
|
|
||
|
|
| 页面 | 内容 | 关键点 |
|
||
|
|
| --- | --- | --- |
|
||
|
|
| A1X-1 工作日历 | 个人工作计划工作台,日历视图 + 计划管理入口 | 引用 7 类业务对象;批注自限见 §3 |
|
||
|
|
| A1X-1-1 新增工作计划 | 弹窗表单 12 字段 + 4 条交互规则 | 见 §2.1 |
|
||
|
|
| A1X-1-2 新增变体 | 与 A1X-1-1 唯一差异:计划完成时间默认当日 | 同一端点,无增量 |
|
||
|
|
| A1X-1-3 工作计划详情 | 纯展示弹窗(9 字段回显 + 关闭/编辑按钮) | 复用列表查询,无增量 |
|
||
|
|
| A1X-2 计划管理 | 5 查询条件 + 9 列表格 + 登记完成弹窗 | 登记完成是**回填更新**(不是新增) |
|
||
|
|
| A1X-3 出差与拜访 | 出差计划主子结构;拜访安排=工作计划行;聚合列 | 拜访完成时间必须落在出差区间内 |
|
||
|
|
|
||
|
|
### 2.1 工作计划 12 字段(A1X-1-1 批注)
|
||
|
|
|
||
|
|
| # | 字段 | 类型/取值 | 落库难点 |
|
||
|
|
| --- | --- | --- | --- |
|
||
|
|
| 1 | 工作类型 | crm-dict 字典 | 需新增字典分组 |
|
||
|
|
| 2 | 计划完成时间 | 日期 | 无 |
|
||
|
|
| 3 | 关联对象类型 | **7 类多态**:商机/线索/客户/项目/行业关系/…(原型 7 项) | **客户/项目/行业关系 3 类对象在本仓库不存在(悬空)** |
|
||
|
|
| 4 | 关联对象 | 多态 id 引用 | 需校验目标存在 + 权限可见 |
|
||
|
|
| 5 | 工作事项 | 文本 | 无 |
|
||
|
|
| 6 | 完成情况 | 三分态:未完成 / 按时完成 / 超时完成 | 超时由**系统按计划时间自动判定**,非手填 |
|
||
|
|
| 7 | 关联出差计划 | 出差主表引用 | 依赖出差模块 |
|
||
|
|
| 8 | 经营归属 | 双 50%(个人/协同归属比例) | 统计口径 |
|
||
|
|
| 9 | 计划说明 | 文本 | 无 |
|
||
|
|
| 10 | 完成时间 | 回填 | 登记完成时写入 |
|
||
|
|
| 11 | 完成结果 | 回填文本 | 同上 |
|
||
|
|
| 12 | 风险协同 | 回填 | 同上 |
|
||
|
|
|
||
|
|
### 2.2 出差与拜访(A1X-3)
|
||
|
|
|
||
|
|
出差计划主表(出差区间/事由/陪同人…)+ 子行「拜访安排」。**拜访安排即一条工作计划**(复用 12 字段),约束:拜访完成时间 ∈ 出差区间。列表带聚合列(本次出差拜访数/完成数)。
|
||
|
|
|
||
|
|
## 3. 原型批注的范围自限(重要佐证)
|
||
|
|
|
||
|
|
A1X-1 批注原文口径:
|
||
|
|
|
||
|
|
> 「不建平行台账」「连动延后迭代」「一期只做当前用户」
|
||
|
|
|
||
|
|
解读:原型自己也把工作计划定位为**挂接业务对象的个人计划**,跨对象连动(商机节点推进联动计划状态等)延后迭代,一期只做当前用户视角。全量 6 页是一期之后的远景,**连原型都没有承诺一期做完**。
|
||
|
|
|
||
|
|
## 4. 代码现状
|
||
|
|
|
||
|
|
- `crm-opportunity/.../entity/OpportunityWorkPlan.java`:`@TableName("opportunity_work_plan")`,仅 5 字段——`oppId`(not null,绑死商机)/`planContent`(1000)/`deadline`/`planStatus`(0 未完成 1 已完成)/`finishTime`/`deleteKey`。与 12 字段原型差距大,但**骨架方向一致**(内容+截止+状态+完成时间)。
|
||
|
|
- `OpportunitySubController` 六个子域(customer/team/…)**无 workplan 端点**——子表有表无 API,纯预留。
|
||
|
|
- planStatus 注释已声明「逾期实时计算」——与原型「超时系统判」语义同源,扩展平滑。
|
||
|
|
|
||
|
|
## 5. 差距分析(全量口径)
|
||
|
|
|
||
|
|
| 差距 | 性质 |
|
||
|
|
| --- | --- |
|
||
|
|
| 5 → 12 字段(多态关联对象类型/id、工作类型、三分态、经营归属、完成结果/风险协同) | 表结构扩展 + 存量数据迁移语义(当前表无存量生产数据,可直接 ALTER) |
|
||
|
|
| 7 类关联对象中 **3 类悬空**(客户主数据不存在→票 08 范畴;项目模块不存在;行业关系不存在) | **硬阻塞**:多态校验/跳转/权限全部落空,只能砍类型或等上游模块 |
|
||
|
|
| 工作日历视图 | 数据接口可退化为按时间范围查列表(前端渲染日历),不算重基础设施,但属于独立工作台页面 |
|
||
|
|
| 出差计划主子结构 | 1 张新主表 + 区间校验 + 聚合统计 |
|
||
|
|
| 登记完成回填 / 超时系统判 | 服务端定时或查询时计算,中等 |
|
||
|
|
| 工作类型字典 / 经营归属口径 | crm-dict 新分组 + 口径拍板 |
|
||
|
|
|
||
|
|
## 6. 接口数估算
|
||
|
|
|
||
|
|
**全量 A1X**:计划 CRUD(4)+ 计划管理列表过滤(1)+ 日历范围查询(1)+ 登记完成(1)+ 出差 CRUD(4)+ 出差下拜访行 CRUD(3)+ 聚合统计(2)+ 字典数据(复用 crm-dict 不计)≈ **16-20 端点**,2 张新表。
|
||
|
|
|
||
|
|
**精简 Tab(商机详情内)**:`GET /api/opportunity/{id}/workplan/list`、`POST .../workplan`、`PUT .../workplan/{planId}`(含登记完成回填)、`DELETE .../workplan/{planId}` + 现有商机详情聚合带出计数 ≈ **4-5 端点**,0 新表(扩展现有子表字段或直接沿用 5 字段)。
|
||
|
|
|
||
|
|
## 7. 分档结论
|
||
|
|
|
||
|
|
- **全量 A1X = 大**:超 10 端点;多态关联是「新基础设施」级别的通用能力(票 08 的客户模块也要它);且 3 类关联对象悬空属硬阻塞。按拍板规则 → **标记后续迭代**,维持 P1-4 挂起。
|
||
|
|
- **精简 Tab = 小**:纯子表 CRUD + 列表 + 详情,无新基础设施,复用既有设施 → 可做。
|
||
|
|
|
||
|
|
## 8. 建议(交用户拍板)
|
||
|
|
|
||
|
|
- **选项 A(推荐)**:维持挂起全量 A1X;把「商机详情工作计划 Tab(精简 5 端点)」graduate 为 task 票,补齐预留子表的 API 与造数,闭环 P1-4。
|
||
|
|
- **选项 B**:全量挂起,精简 Tab 也不做——P1-4 备注更新为「20260830 重新评估仍挂起(全量=大,原型自限一期不做完)」。
|
||
|
|
- **选项 C**:直接做全量——不建议,除非客户/项目模块先行(解除 3 类悬空)。
|
||
|
|
|
||
|
|
分界线:是否引入「多对象类型关联 + 独立工作台页面」。做了就跨入「大」档;守住商机子表就是「小」档。
|