---
title: QAF-Differences — Task-List
type: project
tags: [kadi-v2, qaf, KAR-799]
date: 2026-06-25
status: aktiv
---

# QAF-Differences — Task-List (KAR-799)

Branch: `feature/qaf-differences` · Repo: `/root/projekte/Kadi-v2`

## Phase 1A — Analyse/Plan ✅ (25.06.2026)
- [x] Repo + Stack bestätigt
- [x] Existierenden QAF-Stack gemappt (reuse-vs-build)
- [x] Platform/Auth/RLS/Nav-Konventionen
- [x] Export/Jobs/Tests/Gates-Patterns
- [x] Architekturplan (`implementation-plan.md`)
- [x] Konflikte geflaggt (Referenzdatei, Single-Tenant, DDL-operator-applied)

## Phase 1B — Engine-Core + Unit
- [ ] Branch von origin/main (sync prüfen: `git log --oneline origin/main..main` leer)
- [ ] `npm run new:module -- qaf-differences --with-route`
- [ ] Parser: Zusammenfassung-Blatt + Source-Cell-Tracking (extend `lib/qaf-parser.ts`)
- [ ] Normalizer (Währung/Einheit/Zahlformat DE-EN/Leer-vs-0/Prozess-Namen)
- [ ] Matching-Kaskade 5 Stufen (+confidence/requires_review), extend `process-mapping.ts`
- [ ] Diff: abs + % + %-Punkte (extend `comparison.ts`)
- [ ] Root-Cause deterministisch
- [ ] Plausi-Check
- [ ] Unit-Tests grün (`vitest`)

## Phase 1C — Datenmodell + RLS
- [ ] 14 Qaf*-Tabellen als `supabase-migration-qaf-differences-01-tables.sql` (+rollback)
- [ ] RLS `_own`+`_admin` je Tabelle (02-rls) + `qaf_process_mappings`-Fix
- [ ] Indizes (03-indexes)
- [ ] `MIGRATIONS.md`-Katalogzeilen
- [ ] RLS-Iso-Test `__tests__/security/rls-qaf-differences-isolation.test.ts`
- [ ] ⚠ Kais: SQL im SQL-Editor einspielen (vor Staging)

## Phase 1D — Upload/Batch/API
- [ ] Upload xlsx/zip, validieren, Hash-Dedup, Makro-Schutz
- [ ] Batch ≥100 Files, per-File-Error-Isolation
- [ ] Server-Action/API `app/api/qaf-differences/route.ts`

## Phase 1E — UI
- [ ] Nav-Eintrag `app-shell.tsx` BASE_ITEMS + i18n (4 Locales)
- [ ] Seite `/qaf-differences` (server-guard + client)
- [ ] Bereiche: Upload/Batch/Import-Log/Baseline/Vergleich/Mgmt-Summary/Zusammenfassung/Fertigung/**Matching-Review**/Neu-Entfallen/Plausi/Root-Cause/Maßnahmen/Export
- [ ] Filter/Drilldown/Farben/Quellenrefs

## Phase 1F — Export + Audit
- [ ] 8-Blatt-Excel server-side (`export/route.ts`, maxDuration=60)
- [ ] Audit-Log-Integration + Maßnahmenlogik

## Phase 1G — Abschluss
- [ ] E2E + Security-Review (`/review`) + Perf (≥100 QAFs Mock)
- [ ] `CHECK_FORBIDDEN_LEVEL=error npm run check:portability` + `next build` + `vitest` grün
- [ ] Staging/Preview-Deploy verifizieren
- [ ] PR `feature/qaf-differences` (Closes nicht — Gate), volle Beschreibung (C6)
- [ ] „Bereit zum Prod-Merge. Warte auf Freigabe."
