Add Azure Blob Storage archive & email safety net

- Add AzureBlobStorageService, DocumentArchiveSyncService, and related config for secondary PDF archiving of invoices/reminders
- Add SQL procs and schema changes for archive backfill
- Update invoice/reminder services to upload PDFs to blob storage
- Add telemetry counters and unit tests for blob storage/archive logic
- Add Fuchs:Email:OverrideRecipient config and enforce dev/test email redirect in ProcessWebComService, with tests
- Improve JS date parsing (German formats), stricter JSON date detection
- Increase widget SQL timeouts, update dependencies, docs, and project files
This commit is contained in:
Stefan
2026-07-03 10:15:04 +02:00
parent 3035ef1719
commit c3395bc83c
47 changed files with 1723 additions and 101 deletions
+13 -7
View File
@@ -5,10 +5,9 @@
"CacheFilePath": "secrets.cache",
"SyncIntervalHours": 6,
"ManagedSecretKeys": [
"ConnectionStrings--ocms-username",
"ConnectionStrings--ocms-password",
"ConnectionStrings--fuchs-fds-username",
"ConnectionStrings--fuchs-fds-password",
"ConnectionStrings--AzureBlobStorage-ConnectionString",
"Fuchs--SMS-APIKey",
"Fuchs--Mailer--Token",
"Fuchs--fuchs-captcha-TOTP",
@@ -23,12 +22,10 @@
},
"AllowedHosts": "*",
"ConnectionStrings": {
"ocms_ConnectionString": "Server=DB_SERVER;Database=ocms;User Id={username};Password={password};TrustServerCertificate=True;",
"fuchs_fds_ConnectionString": "Server=DB_SERVER;Database=fuchs_fds;User Id={username};Password={password};TrustServerCertificate=True;",
"ocms_username": "MANAGED_BY_KEYVAULT",
"ocms_password": "MANAGED_BY_KEYVAULT",
"fuchs_fds_ConnectionString": "Data Source=MSSQL4.NBG4.DOMAINXYZ.DE,10439;Initial Catalog=site_fuchs_dev;Persist Security Info=False;TrustServerCertificate=true;Encrypt=true;User ID={username};password='{password}';Connect Timeout=60;Load Balance Timeout=240;Max Pool Size=500;",
"fuchs_fds_username": "MANAGED_BY_KEYVAULT",
"fuchs_fds_password": "MANAGED_BY_KEYVAULT"
"fuchs_fds_password": "MANAGED_BY_KEYVAULT",
"AzureBlobStorage_ConnectionString": "MANAGED_BY_KEYVAULT"
},
"Fuchs": {
"ocms_guid": "00094b8f-a822-4e9c-b627-87802f93fca8",
@@ -45,6 +42,15 @@
"Token": "MANAGED_BY_KEYVAULT",
"Enabled": false
},
"Email": {
"OverrideRecipient": ""
},
"AzureStorage": {
"Enabled": false,
"InvoiceContainer": "fuchs-invoices",
"ReminderContainer": "fuchs-reminders",
"MetadataFields": [ "Id", "Version", "InvoiceId", "InvoiceTitle", "InvId", "DocumentName", "file_guid" ]
},
"Telemetry": {
"Enabled": true,
"OtlpEndpoint": ""