books/backend/Books.Api/Database/Migrations
Nicolaj Hartmann 8e05171b66 Full product audit: fix security, compliance, UX, and wire broken features
Security (Phase 1):
- Add authentication middleware on /graphql endpoint
- Filter company queries by user access (prevent IDOR)
- Add role-based authorization on mutations (owner/accountant)
- Reduce API key cache TTL from 24h to 5 minutes
- Hide exception details in production GraphQL errors
- Fix RBAC in frontend companyStore (was hardcoded)

Wiring broken features (Phase 2):
- Wire Kassekladde submit/void/copy to GraphQL mutations
- Wire Kontooversigt account creation to createAccount mutation
- Wire Settings save to updateCompany mutation
- Wire CreateFiscalYearModal and CloseFiscalYearWizard to mutations
- Replace Momsindberetning mock data with real useVatReport query
- Remove Dashboard hardcoded percentages and fake VAT deadline
- Fix Kreditnotaer invoice selector to use real data
- Fix mutation retry from 1 to 0 (prevent duplicate operations)

Accounting compliance (Phase 3):
- Add balanced entry validation (debit==credit) in JournalEntryDraftAggregate
- Add fiscal year boundary enforcement (status, date range checks)
- Add PostedAt timestamp to posted events (Bogføringsloven §7)
- Add account number uniqueness check within company
- Add fiscal year overlap and gap checks
- Add sequential invoice auto-numbering
- Fix InvoiceLine VAT rate to use canonical VatCodes
- Fix SAF-T account type mapping (financial → Expense)
- Add DraftLine validation (cannot have both debit and credit > 0)

UX improvements (Phase 4):
- Fix Danish character encoding across 15+ files (ø, æ, å)
- Deploy DemoDataDisclaimer on pages with mock/incomplete data
- Adopt PageHeader component universally across all pages
- Standardize active/inactive filtering to Switch pattern
- Fix dead buttons in Header (Help, Notifications)
- Remove hardcoded mock data from Settings
- Fix Sidebar controlled state and Kontooversigt navigation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 21:35:26 +01:00
..
001_Initial.sql Initial commit: Books accounting system with EventFlow CQRS 2026-01-18 02:52:30 +01:00
002_ApiKeys.sql Add OpenID Connect + API Key authentication 2026-01-18 11:49:29 +01:00
003_AccountConstraints.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
004_FiscalYearAuditFields.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
005_UserCompanyAccess.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
006_JournalEntryDrafts.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
007_BankConnections.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
007_JournalEntryDraftCompliance.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
008_FixJournalEntryDraftColumns.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
009_BankTransactions.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
010_SyncFiscalYearsToLedger.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
011_Customers.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
012_Invoices.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
013_CreditNotes.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
014_PaymentAllocations.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
015_AddStandardAccountNumber.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
016_CompanyBankDetails.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
017_BankConnectionArchive.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
018_InvoiceTypeConsolidation.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
019_FixInvoiceLinesColumn.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
020_Products.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
021_ProductEanManufacturer.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
022_DropPeriodNameUniqueConstraint.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
023_ResyncFiscalYearsToLedger.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
024_CleanOrphanIdempotencyKeys.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
025_Orders.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
026_DocumentContentHashes.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
027_Attachments.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
028_DraftExtractionData.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
029_FixExtractionDataColumnType.sql Add all backend domain, commands, repositories, and tests 2026-01-30 22:19:42 +01:00
030_AddPostedAtColumn.sql Full product audit: fix security, compliance, UX, and wire broken features 2026-02-05 21:35:26 +01:00