# 疫苗接种数据填报 — 测试用例

## 1. 功能用例

| 编号 | 场景 | 步骤 | 预期 |
| --- | --- | --- | --- |
| VD-01 | 列表筛选 | 按年/月/乡镇/村查询 | 分页结果正确 |
| VD-02 | 新增 | 选村，填应免/实免，保存 | 免疫率=(实免/应免)×100 保留2位小数落库；乡镇由村反推 |
| VD-03 | 唯一键冲突 | 同年月同村再新增 | 拒绝 |
| VD-04 | 修改 | 改应免/实免 | 免疫率重算 |
| VD-05 | 删除 | 删除一条 | 物理删除成功 |
| VD-06 | 未来月 | 选未来年月保存 | 拒绝 |

| VD-07 | 实免&gt;应免 | 保存/导入 | 拒绝（硬校验） |
| VD-08 | 下载模板 | 点下载模板 | 得到官方 xlsx |
| VD-09 | 导入 upsert | 上传模板示例行，再导入同村改数 | 首次新增、再次更新 |
| VD-10 | 导出 | 选年月，可选乡镇 | 按模板填充；免疫率为百分比；无合计行 |

## 2. 单测

| 编号 | 类 | 说明 |
| --- | --- | --- |
| VD-UT-01 | `VaccinationDataExcelParserTest` | 官方模板解析出 2 条示例行 |
| VD-UT-02 | 同上 | 主表头行索引=2，子表头跳过 |
| VD-UT-03 | 同上 | 免疫率派生与实免≤应免硬校验 |
