# 00：同一需求的三种模型草案

教学需求：为指定设备登记租期，同一设备的有效预留不得重叠；允许取消；重复提交必须区分重试和新意图。

| 视角 | 工件 | 能回答 | 尚未回答 |
|---|---|---|---|
| 表 | equipment(id)、reservation(request_id, equipment_id, start, end)、receipt(request_id, payload, result) | 查询某设备的预留、按请求查回执、区分当前预留与历史请求 | 谁原子检查并占位、怎样定义重叠、如何清理回执 |
| 流程 | 校验输入 → 查回执 → 比较载荷 → 查重叠 → 写回执和有效预留；取消只删除有效预留 | 同一次请求的分支、失败的位置及更新顺序 | 两个请求并发执行、持久化失败、恢复过程 |
| 概念与约束 | 设备标识、请求、租期、有效预留、回执 | 重试与新请求区别、取消后保留什么、相邻租期关系 | 各对象是否独立实体、聚合边界、数据库及部署结构 |

上述表为概念草案，非已实现数据库 schema；流程图为顺序行为示意，非 BPMN。概念关系不预设 DDD 战术模式。

## 走查

| 场景 | 输入与前置 | 期望 |
|---|---|---|
| S00-01 | 设备 E1 的 [10:00,12:00)，无预留 | 确认并登记预留与回执 |
| S00-02 | E1 已有 [10:00,12:00)，请求 [11:00,13:00) | 拒绝，记录拒绝回执 |
| S00-03 | E1 已有 [10:00,12:00)，请求 [12:00,13:00) | 确认；交接耗时暂不纳入规则 |
| S00-04 | 用同一请求标识重放同一载荷 | 返回原结果，不重复预留 |
| S00-05 | 同一请求标识对应不同设备或租期 | 拒绝载荷冲突 |
| S00-06 | 取消已确认请求，重放原请求 | 释放预留；重放返回原确认，但不重建预留 |
| S00-07 | 被拒绝请求对应冲突已取消，重放被拒绝请求 | 返回原拒绝；新尝试使用新请求标识 |

## 变化卡

C00-01：归还后设备需要半小时清洁。直接修改半开区间比较会混淆合同租期与资源占用期；候选模型需要分开两种区间。此卡仅走查，00 未实现。

C00-02：同型号任一设备均可履约。设备型号与设备实例需要分开，预留可以推迟具体设备分配；00 的指定设备预留不能直接证明型号库存可用。此卡仅走查，00 未实现。

C00-03：报价要追溯改价并保留曾经向客户展示的金额。当前预留与回执均未表达价格版本；00 不实现金额和历史报价。
