Simpl-Resultat/src/services
le king fu 2314a64213 feat(categories): merge custom categories into the standard taxonomy (#259)
Custom categories with no standard match were shown as read-only text in
the migration wizard and force-parented under a catch-all bucket. They now
get the same inline target picker as seeded rows: picking a standard leaf
merges the custom category — its transactions, budgets, keywords and
suppliers are reassigned to the leaf — and deactivates it. Leaving a custom
unmapped keeps the previous behaviour and never blocks the wizard.

- Reducer: RESOLVE_ROW resolves rows in both plan.rows and plan.preserved;
  the Next-button guard still counts seeded rows only.
- Writer: the rewrite mapping now includes resolved preserved rows; the
  catch-all parent is created only when a custom is left unmerged; merged
  customs are deactivated instead of re-parented (shared isResolvedTarget
  helper across the three sites).
- UI: the preserved block renders MappingRow instead of plain text.
- i18n (FR/EN) + CHANGELOG (FR/EN).

Tests: reducer (resolve a preserved custom, guard unchanged, GO_NEXT still
proceeds) + writer (reassign to the chosen leaf, soft-delete, no empty
parent when all merged, orphan-free merge of a custom parent with an
unresolved child). 836 vitest green, tsc + vite build clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 19:43:47 +00:00
..
adjustmentService.ts feat: add Budget and Adjustments pages with full functionality 2026-02-12 00:58:43 +00:00
authService.ts feat: settings banner when OAuth tokens fall back to file store (#81) 2026-04-14 08:18:41 -04:00
balance.service.test.ts fix(db): serialize DB access to fix "database is locked"; live-update log console 2026-06-30 16:50:39 -04:00
balance.service.ts fix(db): serialize DB access to fix "database is locked"; live-update log console 2026-06-30 16:50:39 -04:00
budgetService.test.ts feat(reports): adopt shared FilterPanel on Compare and Budget 2026-07-11 15:52:21 -04:00
budgetService.ts feat(reports): BVA (actual vs budget) income-first + result lines 2026-07-11 16:59:16 -04:00
categorizationService.test.ts fix(db): serialize DB access to fix "database is locked"; live-update log console 2026-06-30 16:50:39 -04:00
categorizationService.ts fix(db): serialize DB access to fix "database is locked"; live-update log console 2026-06-30 16:50:39 -04:00
categoryBackupService.test.ts test(categories): complete test coverage for migration flow (#123) 2026-04-21 19:25:13 -04:00
categoryBackupService.ts feat(categories): add categoryBackupService for pre-migration SREF backup (#120) 2026-04-19 15:46:23 -04:00
categoryMappingService.test.ts test(categories): complete test coverage for migration flow (#123) 2026-04-21 19:25:13 -04:00
categoryMappingService.ts feat(categories): add categoryMappingService (4-pass algo) (#119) 2026-04-20 21:01:55 -04:00
categoryMigrationService.test.ts feat(categories): merge custom categories into the standard taxonomy (#259) 2026-07-19 19:43:47 +00:00
categoryMigrationService.ts feat(categories): merge custom categories into the standard taxonomy (#259) 2026-07-19 19:43:47 +00:00
categoryRestoreService.test.ts feat(categories): add restore backup banner and permanent restore action (#122) 2026-04-20 21:47:43 -04:00
categoryRestoreService.ts feat(categories): add restore backup banner and permanent restore action (#122) 2026-04-20 21:47:43 -04:00
categoryService.ts feat(categories): add v1 IPC seed, i18n keys, and migration v8 (#115) 2026-04-19 16:41:55 -04:00
categoryTaxonomyService.test.ts feat(categories): add categoryTaxonomyService + useCategoryTaxonomy hook (#116) 2026-04-20 20:53:15 -04:00
categoryTaxonomyService.ts feat(categories): add categoryTaxonomyService + useCategoryTaxonomy hook (#116) 2026-04-20 20:53:15 -04:00
dashboardService.test.ts feat(dashboard): converge home page on the Cartes report model 2026-07-11 17:13:23 -04:00
dashboardService.ts feat(dashboard): converge home page on the Cartes report model 2026-07-11 17:13:23 -04:00
dataExportService.ts feat: make settings data imports visible in Import History 2026-02-15 13:38:51 +00:00
db.test.ts fix(db): serialize DB access to fix "database is locked"; live-update log console 2026-06-30 16:50:39 -04:00
db.ts fix(db): serialize DB access to fix "database is locked"; live-update log console 2026-06-30 16:50:39 -04:00
feedbackService.test.ts feat: feedback hub widget in Settings Logs card (#67) 2026-04-17 14:36:26 +00:00
feedbackService.ts feat: feedback hub widget in Settings Logs card (#67) 2026-04-17 14:36:26 +00:00
importConfigTemplateService.ts feat: persist template selection and add update template button 2026-02-15 13:16:55 +00:00
importedFileService.ts feat(transactions): inline transfer icon + FK error message 2026-04-25 16:38:46 -04:00
importSourceService.ts fix: persist has_header for imports, fix orphan categories, add re-initialize 2026-02-12 11:54:33 +00:00
licenseService.ts feat: Maximus Account OAuth2 PKCE + machine activation + subscription check (#51, #53) 2026-04-10 14:18:51 -04:00
logService.test.ts fix(db): serialize DB access to fix "database is locked"; live-update log console 2026-06-30 16:50:39 -04:00
logService.ts fix(db): serialize DB access to fix "database is locked"; live-update log console 2026-06-30 16:50:39 -04:00
profileService.ts fix: address reviewer feedback (#54) 2026-04-09 15:46:27 -04:00
reportService.cartes.test.ts fix(reports): thread accountIds into Cartes KPI + seasonality series 2026-07-11 21:16:09 -04:00
reportService.test.ts feat(reports): plumb accountIds[] account filter into 7 report services 2026-07-11 15:15:37 -04:00
reportService.ts fix(reports): thread accountIds into Cartes KPI + seasonality series 2026-07-11 21:16:09 -04:00
transactionService.ts feat(transactions): inline transfer icon + FK error message 2026-04-25 16:38:46 -04:00
userPreferenceService.ts feat(prices): Settings revocation toggle for price_fetching_consent 2026-04-27 08:41:15 -04:00