b29a268b1d
- Move completed plan files to .plans/done/ - Move 18 open plan files to .plans/open/ - Update .gitignore to exclude .verified_plans temp file - Verified all 18 open plans still describe unimplemented issues
32 lines
1.6 KiB
Markdown
32 lines
1.6 KiB
Markdown
# Implementation Plan: Issue #58 - Import Wizard (CSV/Excel)
|
|
|
|
## Summary
|
|
Implement a complete import wizard with CSV/Excel file upload and parsing, interactive column mapping, validation with preview, dry-run, duplicate detection, family grouping, and confirmed execution. Multi-step Vue wizard UI.
|
|
|
|
## Files to Create/Modify
|
|
|
|
### New Files
|
|
1. **`lib/Service/ImportService.php`** - Core import logic: parse, validate, detect duplicates, dry-run, execute
|
|
2. **`lib/Controller/ImportController.php`** - REST endpoints: upload, preview, execute
|
|
3. **`src/stores/import.js`** - Pinia store for import wizard state
|
|
4. **`src/views/Import.vue`** - Multi-step wizard view
|
|
5. **`tests/Unit/ImportServiceTest.php`** - Unit tests for CSV parsing, validation, duplicate detection
|
|
|
|
### Modified Files
|
|
6. **`appinfo/routes.php`** - Add import routes
|
|
7. **`src/router.js`** - Add /import route
|
|
|
|
## Acceptance Criteria Checklist
|
|
1. [ ] ImportService parses CSV with configurable delimiter/encoding
|
|
2. [ ] ImportService validates: required fields, IBAN, phone E.164, date formats
|
|
3. [ ] Duplicate detection: match on Vorname + Nachname + Geburtsdatum
|
|
4. [ ] Dry-run mode returns preview with validation errors
|
|
5. [ ] Execute mode creates members, families, addresses, phones, emails
|
|
6. [ ] ImportController: upload, preview, execute endpoints
|
|
7. [ ] Import.vue: 5-step wizard (upload, mapping, preview, dry-run, confirm)
|
|
8. [ ] Column mapping UI with source-to-target dropdowns
|
|
9. [ ] Validation errors highlighted in preview table
|
|
10. [ ] Results summary: created, skipped duplicates, errors
|
|
11. [ ] Admin-only access
|
|
12. [ ] Unit tests for CSV parsing and validation
|