完整案例:办公用品采购申请
本章把前面的方法完整走一遍。重点不是照抄最终字段,而是观察每个设计决定如何从业务证据和规则推导出来。
1. 原始需求
行政负责人最初提出:
“我们现在都是在群里说要买什么,想做一个采购申请表,金额大了让领导再审批一下,最好还能看统计。”
如果直接开发,至少有这些未知:
- 谁可以申请;
- “金额大”是多少;
- 主管怎样确定;
- 批准后由谁采购;
- 如何知道采购完成;
- 申请能否撤回和修改;
- 统计预计金额还是实际金额;
- 谁能看部门或全部数据。
所以第一步不是创建表单,而是定义问题和开展访谈。
2. 业务研究
2.1 收集材料
应用开发者收集:
- 当前办公用品申请 Excel;
- 最近一周的五笔聊天申请;
- 办公采购制度;
- 行政每月采购汇总;
- 两笔退回或取消的真实案例。
2.2 访谈对象
| 角色 | 访谈重点 |
|---|---|
| 普通员工 | 怎样提出申请、最常漏什么、怎样知道进度 |
| 直属主管 | 审批依据、金额边界、退回原因 |
| 行政采购员 | 批准后怎样采购、如何登记结果 |
| 行政负责人 | 高金额审批、统计和管理要求 |
| 应用管理员 | 角色、组织关系和上线维护 |
2.3 访谈发现
申请人:
- 通常在聊天中写物品、数量和用途;
- 不知道主管什么时候已经同意;
- 被退回后通常重新发一条消息,旧消息仍在;
- 经常忘记写规格。
主管:
- 主要判断用途、数量和总金额;
- 总金额超过 5000 元需要行政负责人同意;
- 希望退回时申请人能看到原因;
- 不希望自己修改申请内容。
行政采购员:
- 每周从聊天中复制到 Excel;
- 不知道哪些申请已经批准但还没采购;
- 购买后会补充实际金额和采购日期;
- 缺货时会与申请人线下沟通替代品。
行政负责人:
- 需要按月查看完成采购金额;
- 希望看到超过三个工作日仍未处理的申请;
- 第一版不做供应商、付款和库存。
2.4 发现的冲突
| 编号 | 冲突 | 最终决定 |
|---|---|---|
| D-01 | 有人认为 3000 元要高级审批,制度写 5000 元 | 按现行制度,大于 5000 元 |
| D-02 | 紧急采购是否允许先买后批 | 第一版不支持,仍需先审批 |
| D-03 | 主管能否改申请金额 | 不能;退回申请人修改 |
| D-04 | 统计预计还是实际金额 | 管理月报使用实际金额 |
3. 业务目标卡
| 项目 | 内容 |
|---|---|
| 应用主题 | 办公用品采购申请 |
| 当前问题 | 申请、审批和登记分散;进度不可见;重复录入 |
| 目标用户 | 试点部门员工、主管、行政采购员、行政负责人 |
| 业务目标 | 统一发起、审批、采购跟踪和查询 |
| 质量目标 | 金额自动计算;审批记录清楚;越权访问被拒绝 |
| 管理目标 | 查看待采购、超时和月度完成金额 |
| 第一版边界 | 办公用品申请到采购完成 |
| 暂不包含 | 生产物料、供应商比价、合同、付款、库存、历史全量导入 |
4. 成功标准
- 试点部门新申请全部从应用发起;
- 行政不再把申请明细重新抄到 Excel;
- 申请人可自行查看状态;
- 每笔申请能看到完整审批结果;
- 待采购和超时事项可查询;
- 月度完成金额可按统一口径汇总;
- 不同角色的数据范围符合权限矩阵。
5. 核心业务场景
S-01 普通申请
申请人创建两行明细并提交,总金额不超过 5000 元。直属主管同意后,申请进入待采购。
S-02 高金额申请
申请总金额大于 5000 元。直属主管同意后,增加行政负责人审批;全部同意后进入待采购。
S-03 退回修改
审批人填写退回原因。申请人修改明细并重新提交,按修改后的金额重新选择路线。
S-04 撤回
在规则允许的阶段,申请人撤回未完成审批的申请,记录回到草稿,不保留有效待办。
S-05 采购完成
行政采购员从待采购视图打开申请,登记实际金额、采购日期和结果,状态变为已完成。
S-06 缺货作废
已批准申请因无法采购而作废。行政填写原因,记录保留但不计入完成金额。
S-07 越权访问
普通申请人不能查看他人申请;主管不能修改申请明细;行政不能进入应用设计功能。
6. 业务词汇表
| 术语 | 统一定义 |
|---|---|
| 采购申请 | 员工为工作需要提出的办公用品购买请求 |
| 提交 | 申请人确认内容完整并正式发起审批 |
| 审批通过 | 所有应参与的审批节点已同意,不代表已经采购 |
| 待采购 | 审批完成,等待行政执行购买 |
| 采购完成 | 行政已完成购买并登记实际结果 |
| 退回 | 信息需要修改,申请人可修改后重新提交 |
| 拒绝 | 本次申请不获批准,业务终止 |
| 撤回 | 申请人在允许时收回已提交申请 |
| 作废 | 业务因现实原因不再继续,记录保留 |
| 完成金额 | 状态为已完成的申请实际金额 |
7. 业务对象
7.1 采购申请
| 项目 | 内容 |
|---|---|
| 目的 | 记录和推动一次办公用品采购请求 |
| 创建者 | 有申请权限的员工 |
| 当前责任 | 草稿时申请人;审批中当前审批人;批准后行政 |
| 开始 | 员工确认有采购需要 |
| 结束 | 已完成、已拒绝或已作废 |
| 主要状态 | 草稿、审批中、已退回、待采购、采购中、已完成、已拒绝、已作废 |
| 查询 | 我的申请、部门申请、待采购、采购分析 |
7.2 采购明细
采购申请内的多行内容,不独立存在:
- 物品名称;
- 规格;
- 数量;
- 预计单价;
- 行金额;
- 备注。
7.3 为什么第一版没有物品目录
访谈显示第一版物品种类不固定,也没有统一编码和维护责任。直接建立目录会增加维护工作,但尚未解决明确问题。
当出现以下需求时再独立建立:
- 统一编码;
- 固定分类;
- 参考价格;
- 停用管理;
- 库存或供应商关联。
8. 生命周期
text
草稿
├─ 提交 → 审批中
└─ 删除草稿
审批中
├─ 同意 → 下一审批或待采购
├─ 退回 → 已退回
├─ 拒绝 → 已拒绝
└─ 撤回 → 草稿
已退回
├─ 修改并重提 → 审批中
└─ 作废 → 已作废
待采购
├─ 开始采购 → 采购中
└─ 作废 → 已作废
采购中
├─ 完成 → 已完成
└─ 作废 → 已作废9. 关键业务规则
| 编号 | 规则 |
|---|---|
| BR-01 | 采购申请提交时至少有一行有效明细 |
| BR-02 | 每行数量必须大于 0,预计单价不能小于 0 |
| BR-03 | 行金额 = 数量 × 预计单价,保留两位小数 |
| BR-04 | 申请总金额 = 所有有效行金额之和,不允许手工修改 |
| BR-05 | 总金额大于 5000 元时增加行政负责人审批 |
| BR-06 | 总金额等于 5000 元时不增加行政负责人审批 |
| BR-07 | 审批人不能修改申请内容,只能同意、退回或拒绝 |
| BR-08 | 退回后由申请人修改,重新提交从第一节点开始 |
| BR-09 | 修改后按最新总金额重新选择审批路线 |
| BR-10 | 已完成、已拒绝和已作废记录不允许修改申请内容 |
| BR-11 | 月度完成金额按采购完成日期和实际金额统计 |
| BR-12 | 作废和拒绝记录不计入完成金额 |
审批决策表
| 总金额 | 直属主管 | 行政负责人 | 结果 |
|---|---|---|---|
| < 5000 | 需要 | 不需要 | 主管同意后待采购 |
| = 5000 | 需要 | 不需要 | 主管同意后待采购 |
| > 5000 | 需要 | 需要 | 两级同意后待采购 |
10. 应用蓝图
10.1 应用与目录
text
办公采购管理
├─ 采购申请
│ ├─ 新建采购申请
│ └─ 我的申请
├─ 采购执行
│ ├─ 待采购
│ └─ 全部采购申请
├─ 数据分析
│ └─ 采购分析
└─ 应用管理
├─ 模板
├─ 流程
└─ 角色与权限10.2 构建对象
| 类别 | 名称 |
|---|---|
| 核心模板 | 采购申请 |
| 明细 | 采购明细 |
| 动作 | 行金额计算、总额汇总、提交前检查 |
| 流程 | 采购审批 |
| 角色 | 申请人、直属主管、行政采购员、行政负责人、应用管理员 |
| 视图 | 我的申请、部门申请、待采购、全部采购申请、采购分析 |
| 输出 | 采购申请打印件、月度导出 |
11. 数据字典摘要
11.1 主信息
| 字段 | 定义 | 来源 | 规则 |
|---|---|---|---|
| 申请编号 | 采购申请的稳定编号 | 自动生成 | 不允许人工修改 |
| 申请人 | 发起申请的人员 | 当前用户 | 保留历史事实 |
| 申请日期 | 业务提出日期 | 默认当天,可按规则调整 | 不能为空 |
| 采购用途 | 为什么需要采购 | 申请人填写 | 提交时必填 |
| 紧急程度 | 普通或紧急 | 申请人选择 | 默认普通 |
| 期望日期 | 希望何时获得物品 | 申请人填写 | 不早于申请日期 |
| 预计总金额 | 明细预计金额之和 | 自动计算 | 流程分支依据 |
| 实际总金额 | 实际采购结果 | 行政填写 | 完成时必填 |
| 当前状态 | 当前业务阶段 | 随业务过程变化 | 用户不能随意修改 |
| 作废原因 | 业务终止原因 | 有权角色填写 | 作废时必填 |
11.2 明细
| 字段 | 定义 | 来源 | 规则 |
|---|---|---|---|
| 物品名称 | 需要采购的物品 | 申请人填写 | 必填 |
| 规格 | 品牌、型号、尺寸等 | 申请人填写 | 按物品需要 |
| 数量 | 预计购买数量 | 申请人填写 | 大于 0 |
| 预计单价 | 单件预计价格 | 申请人填写 | 不小于 0 |
| 行金额 | 数量×预计单价 | 自动计算 | 两位小数 |
| 备注 | 特殊要求 | 申请人填写 | 可空 |
11.3 过程信息
- 提交时间;
- 审批完成时间;
- 开始采购日期;
- 采购完成日期;
- 当前采购负责人;
- 采购结果说明。
12. 表单草图
text
采购申请
基本信息
┌────────────────────────────────┐
│ 申请编号 [自动] 状态 [草稿] │
│ 申请人 [当前人员] 申请日期 [今天] │
└────────────────────────────────┘
申请说明
┌────────────────────────────────┐
│ 采购用途 [ ] │
│ 紧急程度 [普通▼] 期望日期 [选择日期] │
└────────────────────────────────┘
采购明细
┌────────────────────────────────┐
│ 物品 | 规格 | 数量 | 预计单价 | 行金额 | 备注 │
│ | | | | [自动] | │
└────────────────────────────────┘
预计总金额:¥____
采购结果(批准后由行政填写)
┌────────────────────────────────┐
│ 实际总金额 | 采购完成日期 | 结果说明 │
└────────────────────────────────┘
[保存草稿] [提交审批]表单行为
- 新建时隐藏或只读采购结果区域;
- 审批中申请内容只读;
- 已退回时申请人可修改申请说明和明细;
- 待采购和采购中,行政只编辑采购结果区域;
- 已完成、拒绝和作废时整体只读;
- 退回原因和当前处理阶段在明显位置展示。
13. 动作设计
A-01 行金额计算
- 事件:数量或预计单价变化;
- 条件:两个值有效;
- 动作:相乘并保留两位小数;
- 结果:当前行显示新金额;
- 失败:指出具体无效字段。
A-02 总额汇总
- 事件:行金额变化、增加行或删除行;
- 动作:汇总有效行;
- 结果:更新预计总金额;
- 约束:不允许手工修改。
A-03 提交前检查
- 至少一行明细;
- 物品名称、数量和单价完整;
- 数量大于 0;
- 用途必填;
- 总金额已得到;
- 找到有效审批人。
A-04 采购完成检查
- 实际总金额必填;
- 采购完成日期必填;
- 当前角色有权完成;
- 成功后状态为已完成。
14. 流程设计
text
开始
↓
直属主管审批
├─ 退回 → 申请人修改
├─ 拒绝 → 已拒绝
└─ 同意
↓
总金额 > 5000?
├─ 否 → 审批通过
└─ 是 → 行政负责人审批
├─ 退回 → 申请人修改
├─ 拒绝 → 已拒绝
└─ 同意 → 审批通过
审批通过 → 待采购节点要求
直属主管查看:
- 申请人;
- 用途;
- 明细;
- 预计总金额;
- 紧急程度。
行政负责人额外关注:
- 高金额原因;
- 主管意见;
- 部门采购情况。
退回意见必填;重新提交从直属主管开始。
15. 权限矩阵
| 能力 | 申请人 | 直属主管 | 行政采购员 | 行政负责人 | 应用管理员 |
|---|---|---|---|---|---|
| 新建申请 | 是 | 按申请人角色 | 按申请人角色 | 按申请人角色 | 管理例外 |
| 查看自己的 | 是 | 是 | 是 | 是 | 是 |
| 查看部门 | 否 | 职责范围 | 按需 | 是 | 是 |
| 查看全部 | 否 | 否 | 是 | 是 | 是 |
| 修改草稿/退回 | 仅本人 | 否 | 否 | 否 | 管理例外 |
| 审批 | 否 | 分配给本人 | 否 | 分配给本人 | 不默认代办 |
| 登记采购结果 | 否 | 否 | 是 | 是 | 管理例外 |
| 作废待采购 | 否 | 否 | 按规则 | 是 | 管理例外 |
| 导出全部 | 否 | 否 | 按需 | 是 | 是 |
| 设计应用 | 否 | 否 | 否 | 否 | 是 |
16. 视图设计
我的申请
- 本人记录;
- 显示编号、用途、金额、状态、提交时间;
- 草稿和退回在前;
- 可打开继续处理。
部门申请
- 主管职责范围;
- 显示申请人、金额、状态、当前阶段;
- 支持月份和状态筛选。
待采购
- 已批准但未完成;
- 按批准时间从早到晚;
- 显示物品摘要、金额和负责人;
- 行政可打开登记结果。
采购分析
- 按采购完成日期统计实际金额;
- 排除拒绝和作废;
- 可按月份、部门筛选;
- 从汇总打开具体记录;
- 单独列出超时审批和长期待采购。
17. 通知与提醒
| 事件 | 接收者 | 目的 |
|---|---|---|
| 提交成功 | 申请人 | 确认编号和状态 |
| 产生审批任务 | 当前审批人 | 提醒处理 |
| 退回 | 申请人 | 查看原因并修改 |
| 审批通过 | 申请人、行政采购员 | 知道已进入采购 |
| 采购完成 | 申请人 | 查看结果 |
| 审批即将超时 | 当前审批人 | 及时处理 |
| 超时未处理 | 行政负责人 | 管理积压 |
待办和状态是业务依据,通知只负责提醒。
18. 开发波次
波次一:最小闭环
- 应用、目录、采购申请模板;
- 基本信息和一行明细;
- 保存、重新打开、我的申请;
- 申请人和未授权用户验证。
波次二:完整表单
- 全部主信息和明细;
- 布局、默认值、状态行为;
- 真实用户试填。
波次三:金额和校验
- 行金额、总金额;
- 提交前检查;
- 空值、零、负数和边界测试。
波次四:角色与视图
- 正式角色;
- 数据范围;
- 我的申请、部门申请、待采购;
- 权限正反例。
波次五:流程
- 先主管审批;
- 再退回、拒绝和撤回;
- 再高金额分支;
- 再超时和通知。
波次六:采购结果和管理
- 行政登记;
- 完成、作废;
- 采购分析;
- 导出和打印;
- 完整验收。
19. 核心验收场景
| 编号 | 场景 | 预期 |
|---|---|---|
| T-01 | 两行明细 350+360 | 总金额 710 |
| T-02 | 数量为 0 | 明确阻止提交 |
| T-03 | 总额 5000 | 只走主管审批 |
| T-04 | 总额 5000.01 | 增加负责人审批 |
| T-05 | 6000 退回后改 4000 | 重提后只走主管 |
| T-06 | 连续点击提交 | 只形成一次有效审批 |
| T-07 | 无直属主管 | 不提交,明确提示 |
| T-08 | 申请人查看他人记录 | 被拒绝 |
| T-09 | 主管修改明细 | 被拒绝 |
| T-10 | 行政登记完成 | 状态已完成,进入月度金额 |
| T-11 | 作废申请 | 不进入完成金额 |
| T-12 | 保存后重新打开 | 字段、明细、金额、状态一致 |
20. 上线计划
试点
- 一个部门;
- 两周;
- 所有新办公用品申请从应用发起;
- 旧申请继续按旧方式完成。
准备
- 正式角色成员;
- 直属主管关系;
- 使用说明;
- 初始选项;
- 问题反馈入口;
- 每日检查人。
第一周观察
- 是否仍在群里发新申请;
- 是否有无人处理;
- 退回是否能顺利修改;
- 行政是否减少重复登记;
- 是否出现越权;
- 月度统计口径是否正确。
21. 案例结论
原始需求只有“做一个采购申请表”,最终应用设计包含:
- 明确的目标和范围;
- 角色和责任;
- 业务对象和生命周期;
- 计算、校验和审批规则;
- 不同状态下的表单行为;
- 权限和数据范围;
- 角色视图和管理指标;
- 异常、测试、上线和迭代方案。
这就是“把表单搭出来”和“把业务设计成可用应用”的差别。
22. 如何复用这个案例
不要直接复制字段。复用它的推导顺序:
text
问题 → 目标 → 人员 → 场景 → 对象 → 状态
→ 规则 → 流程 → 数据 → 表单 → 动作
→ 权限 → 视图 → 增量开发 → 测试 → 上线下一章提供其他业务背景,供独立练习并评估设计。