fix(imports): 修复 AI 导入向导多工作表与表头误判

- AI resolve 生成向导时按阶段携带全部 sheetNames,不再只取第一张表
- ImportStageRequest 支持 sheets 数组并兼容旧 sheet;手动重传同步修复
- headerMatches 收窄为单向包含,避免宿舍号被原/新宿舍号反向匹配
- suggestStep 增加入住/换宿显式表头信号,修复入住表误判为换宿
- 预检与预览按工作表逐表解析列映射,兼容异构表头
- 修复预检卡生成向导成功后按钮未复位 loading 的问题
- 补充 mapping/预检/run/ai-chat 多工作表测试
This commit is contained in:
2026-08-06 14:46:33 +08:00
parent 259271f56c
commit ae88372ef8
15 changed files with 355 additions and 27 deletions

View File

@@ -146,6 +146,7 @@ export const ImportPreflightCard: React.FC<ImportPreflightCardProps> = ({
});
} catch (resolveError) {
setError(resolveError instanceof Error ? resolveError.message : '导入向导生成失败');
} finally {
setSubmitting(false);
}
};

View File

@@ -259,7 +259,7 @@ export const ImportWizardModal: React.FC<ImportWizardModalProps> = ({
try {
const detail = await createImportRun(file, {
source: 'manual',
stages: [{ stepKey: activeStepKey, sheet: sheetSelection[activeStepKey]?.[0] }],
stages: [{ stepKey: activeStepKey, sheets: sheetSelection[activeStepKey] ?? [] }],
mapping: { [activeStepKey]: mappingDraft[activeStepKey] ?? {} },
});
await loadRun(detail.id);

View File

@@ -47,7 +47,10 @@ export interface ImportRunDetail {
export interface ImportStageRequest {
stepKey: ImportStepKey;
/** 兼容旧调用:单个工作表名。 */
sheet?: string;
/** 一个阶段可包含多张工作表;与 sheet 二选一sheets 优先)。 */
sheets?: string[];
headerRow?: number;
}