feat(cleaner): support selectedManagers filtering for admin cleaner execution

Admin can now pass selectedManagers to getCleanerData so material codes
are queried from MaterialsToBeDeleted by ManagerName IN (selectedManagers).
When no managers are selected, fallback to DiscreteMaterialPlanData by
orderNumbers. User behavior is unchanged. Includes updated tests and
role-based flow documentation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Misaka
2026-04-06 19:20:22 +08:00
parent 91f29a1167
commit 3be7959067
7 changed files with 455 additions and 21 deletions

View File

@@ -118,8 +118,11 @@ export async function runCleanerExecution(params: {
headless: boolean
queryBatchSize: number
processConcurrency: number
selectedManagers: string[]
}): Promise<CleanerReportData> {
const cleanerDataResult = await window.electron.validation.getCleanerData()
const cleanerDataResult = await window.electron.validation.getCleanerData({
selectedManagers: params.selectedManagers
})
const cleanerData = cleanerDataResult.success
? (cleanerDataResult.data as CleanerDataPayload | null)
: null

View File

@@ -376,7 +376,8 @@ export function useCleaner() {
dryRun,
headless,
queryBatchSize,
processConcurrency
processConcurrency,
selectedManagers: Array.from(selectedManagers)
})
setReportData(result)
} catch (err) {