diff --git a/docs/plans/backend/2026-04-30-import-dropdown-validation-backend-design.md b/docs/plans/backend/2026-04-30-import-dropdown-validation-backend-design.md index 470a9763..6b701fb4 100644 --- a/docs/plans/backend/2026-04-30-import-dropdown-validation-backend-design.md +++ b/docs/plans/backend/2026-04-30-import-dropdown-validation-backend-design.md @@ -50,7 +50,9 @@ ### 下拉框判断 - 读取 Sheet 的 `DataValidation` 列表。 -- 只要任一数据验证区域覆盖目标列的数据区,即认为该列保留了模板下拉框。 +- 只认可 `DataValidationConstraint.ValidationType.LIST` 类型的数据验证;数字、日期、自定义公式等其他校验类型不能视为模板下拉框。 +- 数据区定义为:从第 2 行开始,到本次上传文件中该 Sheet 的最后一行有效数据。 +- 对每个实际数据行,目标列单元格都必须被 `LIST` 数据验证区域覆盖;只覆盖表头、只覆盖单个样例行、或只覆盖部分数据行,都视为该列下拉框缺失。 - 校验目标为模板结构是否保留,不判断用户是否逐单元格从下拉框选择。 ### 失败行为 @@ -86,8 +88,10 @@ 1. 带 `@DictDropdown` 且保留下拉数据验证的模板读取通过。 2. 员工信息 `状态` 列缺少下拉数据验证时报错。 -3. 双 Sheet 中任一 Sheet 的字典下拉列缺失时报错。 -4. 无 `@DictDropdown` 字段的导入对象不触发结构校验。 +3. 非 `LIST` 类型数据验证不能替代下拉框。 +4. 只覆盖部分实际数据行的下拉框应报错。 +5. 双 Sheet 中任一 Sheet 的字典下拉列缺失时报错。 +6. 无 `@DictDropdown` 字段的导入对象不触发结构校验。 ### 样例文件验证