backupchecks-v20260106-21-changelog-0.1.17 #56

Merged
ivooskamp merged 4 commits from backupchecks-v20260106-21-changelog-0.1.17 into main 2026-01-13 11:21:40 +01:00
4 changed files with 165 additions and 150 deletions

View File

@ -1 +1 @@
v20260106-20-fix-customer-delete-fk backupchecks-v20260106-21-changelog-0.1.17

View File

@ -8,6 +8,119 @@ def changelog_page():
changelog = { changelog = {
"completed_summary": [ "completed_summary": [
{
"version": "0.1.17",
"status": "Completed",
"overview": [
"This release focuses on improving job normalization, ticket and remark handling, UI usability, and the robustness of run and object detection across the platform."
],
"categories": [
{
"category": "Job normalization and aggregation",
"items": [
{
"title": None,
"details": [
"Veeam job names are now normalized to prevent duplicates.",
"Jobs with (Combined) and (Full) suffixes are merged with their base job names.",
"Ensures accurate aggregation, reporting, and statistics for Veeam Backup and Microsoft 365 jobs.",
"Added support for archiving inactive jobs while keeping all historical runs fully included in reports."
]
}
]
},
{
"category": "Inbox and bulk operations",
"items": [
{
"title": None,
"details": [
"Introduced multi-select inbox functionality for Operator and Admin roles.",
"Added a bulk Delete selected action with validation, counters, and admin audit logging."
]
}
]
},
{
"category": "Jobs UI and navigation",
"items": [
{
"title": None,
"details": [
"Restored row-click navigation on the Jobs page.",
"Moved the Archive action from the Jobs table to the Job Details page for consistency.",
"Improved layout and behavior of job run popups, ensuring objects are visible, correctly rendered, and consistently sorted."
]
}
]
},
{
"category": "Tickets and remarks",
"items": [
{
"title": None,
"details": [
"Ticket creation now always uses a user-provided ticket code with strict format and uniqueness validation.",
"Editing of tickets and remarks has been fully disabled; items must be resolved and recreated instead.",
"Removed ticket description fields from creation and detail views to prevent inconsistent data.",
"Fixed backend indentation errors that previously caused startup and Bad Gateway failures."
]
}
]
},
{
"category": "Customer deletion stability",
"items": [
{
"title": None,
"details": [
"Fixed foreign key constraint issues when deleting customers.",
"Customer deletion now safely unlinks jobs while preserving historical job and run data.",
"Enforced cascading deletes where appropriate to prevent integrity errors."
]
}
]
},
{
"category": "Feedback handling",
"items": [
{
"title": None,
"details": [
"Users can now reply directly to Feedback items while they are in the Open state.",
"Replies are stored for audit and history tracking."
]
}
]
},
{
"category": "Veeam parser improvements",
"items": [
{
"title": None,
"details": [
"Configuration Backup parser now correctly captures multi-line overall warning messages.",
"Improved date parsing to support formats without leading zeros.",
"Microsoft 365 parser now always persists overall warning and info messages, even on successful runs."
]
}
]
},
{
"category": "Run checks and missed run detection",
"items": [
{
"title": None,
"details": [
"Improved weekly and monthly schedule inference to reduce false positives.",
"Monthly jobs are now detected and marked as missed on the correct expected date.",
"Added fallback mechanisms for loading run objects in Run Checks to support legacy and transitional data."
]
}
]
}
]
},
{ {
"version": "0.1.16", "version": "0.1.16",
"overview": [ "overview": [

View File

@ -1,154 +1,56 @@
## v20260106-01-m365-combined-job-name-merge
- Updated the Veeam Backup for Microsoft 365 mail parser to normalize job names.
- Job names containing the suffix "(Combined)" are now mapped to the same job as the corresponding job without this suffix.
- This ensures that combined and non-combined backup result emails are aggregated under a single job in reports and statistics.
---
## v20260106-02-inbox-bulk-delete
- Added multi-select checkboxes to the Inbox for users with the operator or admin role.
- Added a “Delete selected” bulk action that soft-deletes selected inbox messages (moves them to Deleted), including select-all support and a selected-count indicator.
- Implemented a new POST API endpoint to bulk delete inbox messages with proper validation, skip/missing counts, and admin event logging.
---
## v20260106-03-veeam-full-job-name-merge
- Updated Veeam parser to normalize job names.
- Jobs containing "(Full)" are now treated as the same job as those without "(Full)".
- This prevents duplicate job entries and ensures correct aggregation and reporting.
---
## v20260106-04-jobs-archive
- Added job archiving support, allowing Operator and Admin roles to archive jobs that no longer produce runs.
- Archived jobs are excluded from Daily Jobs and Run Checks to keep active views clean.
- Introduced an Admin-only Archived Jobs page to view and restore archived jobs.
- Archived job runs remain fully included in all reports and statistics to preserve historical accuracy.
---
## v20260106-05-jobs-row-click-and-archive-button-move
- Restored the original Jobs page behavior where clicking anywhere on a job row navigates to the Job Details page.
- Removed the Job name hyperlink from the Jobs table; navigation is now handled by row click again.
- Moved the Archive action from the Jobs table to the Job Details page.
- Placed the Archive button next to the existing Delete job button for better consistency.
---
## v20260106-06-customers-delete-fk-cascade-fix
- Fixed customer deletion failing with FK constraint errors caused by existing customer_objects rows.
- Migration: enforced ON DELETE CASCADE on customer_objects.customer_id by recreating the FK constraint if needed (idempotent).
- Customer delete flow: unlinks jobs (sets jobs.customer_id to NULL) before deleting the customer, so historical job/run data remains intact.
---
## v20260106-07-feedback-open-reply
- Added the ability for users to reply to Feedback items with status "Open".
- Implemented reply functionality directly within the Feedback detail view.
- Ensured replies are only allowed while the Feedback item remains in the Open state.
- Stored user replies linked to the original Feedback item for audit and history purposes.
---
## v20260106-08-ticket-code-input-disable-edit
- Changed ticket creation to use the user-provided ticket_code instead of generating a new code.
- Added server-side validation for ticket_code format (TYYYYMMDD.####) and uniqueness checks.
- Added ticket number input field to Daily Jobs and Run Checks “New ticket” forms and included client-side format validation.
- Disabled editing of tickets and remarks (UI forms made read-only and update endpoints now return an error instructing to resolve and recreate).
- Updated Ticket and Remark detail pages to remove save/edit actions while keeping resolve functionality.
---
## v20260106-09-fix-ticket-detail-indent
- Fixed an IndentationError in routes_tickets.py that prevented the backend from booting (ticket_detail route).
- Removed an accidentally indented redirect line after disabling ticket editing, restoring valid module syntax.
---
## v20260106-10-fix-remarks-indent-bad-gateway
Fixed a Python IndentationError in the remarks detail route that caused Gunicorn to fail on startup.
Removed an incorrectly indented redirect statement so the module loads correctly and prevents Bad Gateway errors.
---
## v20260106-11-new-ticket-remove-description
- Removed the "Description" input from the "New ticket" form on Daily Jobs and Run Checks pages.
- Updated the ticket creation request to store only the ticket number (ticket_code) when creating a new ticket.
- Backend /api/tickets (POST) now ignores any description input during ticket creation (use remarks for additional context).
---
## v20260106-12-disable-ticket-and-remark-edit
- Removed ticket edit UI actions (Daily Jobs, Run Checks, Tickets & Remarks overview).
- Removed remark edit UI actions (Daily Jobs, Run Checks, Tickets & Remarks overview).
- Removed ticket description display from ticket detail to prevent the field from reappearing.
- Kept resolve actions available for tickets and remarks.
---
## v20260106-13-veeam-config-backup-overall-message
- Updated the Veeam Configuration Backup parser to correctly capture and store overall warning messages.
- Added support for date formats without leading zeros (e.g. "6-1-2026") when parsing log lines.
- Ensured multi-line warning messages from configuration backup emails are stored as a single overall message.
- This allows overrides to be applied correctly for configuration backup warnings.
---
## v20260106-14-veeam-m365-overall-message
- Updated the Veeam Backup for Microsoft 365 mail parser to always persist the extracted overall “Details” warning/info message, even when the run is reported as Success.
- This ensures permission/role warnings (e.g. “Missing application permissions/roles…”) are stored and can be used for overrides.
---
## v20260106-15-jobrun-popup-objects-sort
- Fixed job run popup so objects are rendered again.
- Restored object list handling in the job run popup.
- Updated sorting logic:
- Objects with an error message are shown first, sorted alphabetically by object name.
- Remaining objects are shown below, also sorted alphabetically by object name.
---
## v20260106-16-jobrun-popup-objects-visible
- Fixed job run popup where the Objects section was not visible for certain runs.
- Adjusted popup layout to prevent objects from being hidden behind the footer.
- Improved object rendering to handle different mail structures consistently.
- Updated object sorting logic:
- Objects with an error message are displayed first, sorted alphabetically by object name.
- Remaining objects are displayed below, also sorted alphabetically by object name.
---
## v20260106-18-runchecks-popup-objects-fallback
- Fixed Run Checks modal object list by adding fallbacks when persisted run_object_links are missing.
- Added legacy fallback to load objects via JobRun.objects for older data during/after upgrades.
- Added mail-based fallback to load objects via MailObject when no run-linked objects exist yet.
- Updated imports in routes_run_checks to include JobObject and MailObject used by the fallback logic.
---
## v20260106-19-missed-run-detection-threshold
- Improved weekly schedule inference by requiring a time bucket to occur at least 3 times before it is considered “expected” (reduces outlier noise and false missed runs).
- Added monthly schedule inference based on real mail-based runs (>= 3 occurrences) with a cadence check to avoid classifying weekly jobs as monthly.
- Updated missed run generation (Run Checks) to use monthly inference when no stable weekly schedule exists, so monthly jobs are marked missed on the correct expected day instead of a week later.
- Updated Daily Jobs to show expected entries for inferred monthly jobs on the scheduled day-of-month (with last-day-of-month fallback for short months).
================================================================================================================================================ ================================================================================================================================================
## v0.1.17
### Release Summary
This release focuses on improving job normalization, ticket and remark handling, UI usability, and the robustness of run and object detection across the platform.
**Job normalization and aggregation**
- Veeam job names are now normalized to prevent duplicates:
- Jobs with “(Combined)” and “(Full)” suffixes are merged with their base job names.
- Ensures accurate aggregation, reporting, and statistics for Veeam Backup and Microsoft 365 jobs.
- Added support for archiving inactive jobs while keeping all historical runs fully included in reports.
**Inbox and bulk operations**
- Introduced multi-select inbox functionality for Operator and Admin roles.
- Added a bulk “Delete selected” action with validation, counters, and admin audit logging.
**Jobs UI and navigation**
- Restored row-click navigation on the Jobs page.
- Moved the Archive action from the Jobs table to the Job Details page for consistency.
- Improved layout and behavior of job run popups, ensuring objects are visible, correctly rendered, and consistently sorted.
**Tickets and remarks**
- Ticket creation now always uses a user-provided ticket code with strict format and uniqueness validation.
- Editing of tickets and remarks has been fully disabled; items must be resolved and recreated instead.
- Removed ticket description fields from creation and detail views to prevent inconsistent data.
- Fixed backend indentation errors that previously caused startup and Bad Gateway failures.
**Customer deletion stability**
- Fixed foreign key constraint issues when deleting customers.
- Customer deletion now safely unlinks jobs while preserving historical job and run data.
- Enforced cascading deletes where appropriate to prevent integrity errors.
**Feedback handling**
- Users can now reply directly to Feedback items while they are in the “Open” state.
- Replies are stored for audit and history tracking.
**Veeam parser improvements**
- Configuration Backup parser now correctly captures multi-line overall warning messages.
- Improved date parsing to support formats without leading zeros.
- Microsoft 365 parser now always persists overall warning/info messages, even on successful runs.
**Run checks and missed run detection**
- Improved weekly and monthly schedule inference to reduce false positives.
- Monthly jobs are now detected and marked as missed on the correct expected date.
- Added fallback mechanisms for loading run objects in Run Checks to support legacy and transitional data.
Overall, this release significantly improves data consistency, usability, and reliability across jobs, tickets, inbox management, and run analysis.
---
## v0.1.16 ## v0.1.16
This release significantly expands and stabilizes the reporting functionality, focusing on configurability, correctness, and richer output formats. This release significantly expands and stabilizes the reporting functionality, focusing on configurability, correctness, and richer output formats.

View File

@ -1 +1 @@
v0.1.16 v0.1.17