Release v0.1.26 - Ticket system bug fixes
Prepared official release documentation for v0.1.26 consolidating all ticket system bug fixes from 2026-02-10. Changes: - Updated docs/changelog.md with v0.1.26 release notes - Detailed root cause analysis of date-based logic issues - Complete list of fixed pages (4 locations) - Before/after behavior explanation - Testing and troubleshooting section - Updated changelog.py with v0.1.26 entry for website display - Same content structured for Python data format - Updated changelog-claude.md with release reference Release Focus: - Complete transition from date-based to link-based ticket queries - Fixed resolved tickets appearing on new runs (4 pages affected) - Preserved audit trail for historical runs - Consistent behavior across entire application Ready for production deployment. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
5e617cb6a9
commit
1064bc8d86
@ -3,6 +3,42 @@ Changelog data structure for Backupchecks
|
||||
"""
|
||||
|
||||
CHANGELOG = [
|
||||
{
|
||||
"version": "v0.1.26",
|
||||
"date": "2026-02-10",
|
||||
"summary": "This critical bug fix release resolves ticket system display issues where resolved tickets were incorrectly appearing on new runs across multiple pages. The ticket system has been completely transitioned from date-based logic to explicit link-based queries, ensuring resolved tickets stop appearing immediately after resolution while preserving audit trail for historical runs.",
|
||||
"sections": [
|
||||
{
|
||||
"title": "Bug Fixes",
|
||||
"type": "bugfix",
|
||||
"subsections": [
|
||||
{
|
||||
"subtitle": "Ticket System - Resolved Ticket Display Issues",
|
||||
"changes": [
|
||||
"Root Cause: Multiple pages used legacy date-based logic (active_from_date <= run_date AND resolved_at >= run_date) instead of checking explicit ticket_job_runs links",
|
||||
"Impact: Resolved tickets kept appearing on ALL runs between active_from_date and resolved_at, even runs created after resolution",
|
||||
"Fixed: Ticket Linking (ticketing_utils.py) - Autotask tickets now propagate to new runs using independent strategy that checks for most recent non-deleted and non-resolved Autotask ticket",
|
||||
"Fixed: Internal tickets no longer link to new runs after resolution - removed date-based 'open' logic, now only links if COALESCE(ts.resolved_at, t.resolved_at) IS NULL",
|
||||
"Fixed: Job Details Page - Implemented two-source ticket display: direct links (ticket_job_runs) always shown for audit trail, active window (ticket_scopes) only shown if unresolved",
|
||||
"Fixed: Run Checks Main Page - Ticket/remark indicators (🎫/💬) now only show for genuinely unresolved tickets, removed date-based logic from existence queries",
|
||||
"Fixed: Run Checks Popup Modal - Replaced date-based queries in /api/job-runs/<run_id>/alerts with explicit JOIN queries (ticket_job_runs, remark_job_runs)",
|
||||
"Fixed: Run Checks Popup - Removed unused parameters (run_date, job_id, ui_tz) as they are no longer needed with link-based queries",
|
||||
"Testing: Temporarily added debug logging to link_open_internal_tickets_to_run (wrote to AuditLog with event_type 'ticket_link_debug'), removed after successful resolution",
|
||||
"Result: Resolved tickets stop appearing immediately after resolution, consistent behavior across all pages, audit trail preserved for historical runs",
|
||||
"Result: All queries now use explicit link-based logic with no date comparisons"
|
||||
]
|
||||
},
|
||||
{
|
||||
"subtitle": "Test Email Generation",
|
||||
"changes": [
|
||||
"Reduced test email generation from 3 emails per status to 1 email per status for simpler testing",
|
||||
"Each button now creates exactly 1 test mail instead of 3"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "v0.1.25",
|
||||
"date": "2026-02-09",
|
||||
|
||||
@ -18,6 +18,9 @@ This file documents all changes made to this project via Claude Code.
|
||||
### Removed
|
||||
- Removed debug logging from ticket linking function after successfully resolving all ticket propagation issues (the logging was temporarily added to troubleshoot why resolved tickets kept appearing on new runs, wrote to AuditLog with event_type "ticket_link_debug" showing ticket_id, code, resolved_at status for every run import, debug code preserved in backupchecks-system.md documentation for future use if similar issues arise)
|
||||
|
||||
### Release
|
||||
- **v0.1.26** - Official release consolidating all ticket system bug fixes from 2026-02-10 (see docs/changelog.md and changelog.py for customer-facing release notes)
|
||||
|
||||
## [2026-02-09]
|
||||
|
||||
### Added
|
||||
|
||||
@ -1,3 +1,62 @@
|
||||
## v0.1.26
|
||||
|
||||
This critical bug fix release resolves ticket system display issues where resolved tickets were incorrectly appearing on new runs across multiple pages. The ticket system has been completely transitioned from date-based logic to explicit link-based queries, ensuring resolved tickets stop appearing immediately after resolution while preserving audit trail for historical runs.
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
**Ticket System - Resolved Ticket Display Issues:**
|
||||
|
||||
*Root Cause:*
|
||||
- Multiple pages used legacy date-based logic to determine if tickets should be displayed
|
||||
- Queries checked if `active_from_date <= run_date` and `resolved_at >= run_date` instead of checking explicit `ticket_job_runs` links
|
||||
- Result: Resolved tickets kept appearing on ALL runs between active_from_date and resolved_at, even runs created after resolution
|
||||
- Impact: Users saw resolved tickets on new runs, creating confusion about which issues were actually active
|
||||
|
||||
*Fixed Pages and Queries:*
|
||||
|
||||
1. **Ticket Linking (ticketing_utils.py)**
|
||||
- Fixed Autotask tickets not propagating to new runs after internal ticket resolution
|
||||
- Implemented independent Autotask propagation strategy: checks for most recent non-deleted and non-resolved Autotask ticket on job regardless of internal ticket status
|
||||
- Fixed internal tickets being linked to new runs after resolution by removing date-based "open" logic from ticket query
|
||||
- Tickets now only link to new runs if `COALESCE(ts.resolved_at, t.resolved_at) IS NULL` (genuinely unresolved)
|
||||
|
||||
2. **Job Details Page (routes_job_details.py)**
|
||||
- Fixed resolved tickets appearing on ALL runs for a job
|
||||
- Implemented two-source ticket display for proper audit trail:
|
||||
- Direct links via `ticket_job_runs` → always shown (preserves historical context)
|
||||
- Active window via `ticket_scopes` → only shown if unresolved
|
||||
- Result: Old runs keep their ticket references, new runs don't get resolved tickets
|
||||
|
||||
3. **Run Checks Main Page (routes_run_checks.py)**
|
||||
- Fixed ticket/remark indicators (🎫/💬) showing for jobs with resolved tickets
|
||||
- Removed date-based logic from indicator existence queries
|
||||
- Now only shows indicators if `COALESCE(ts.resolved_at, t.resolved_at) IS NULL` (genuinely unresolved)
|
||||
|
||||
4. **Run Checks Popup Modal (routes_api.py)**
|
||||
- Fixed popup showing resolved tickets for runs where they were never linked
|
||||
- Replaced date-based queries in `/api/job-runs/<run_id>/alerts` endpoint with explicit JOIN queries
|
||||
- Tickets query: Now uses `JOIN ticket_job_runs WHERE job_run_id = :run_id`
|
||||
- Remarks query: Now uses `JOIN remark_job_runs WHERE job_run_id = :run_id`
|
||||
- Removed unused parameters: `run_date`, `job_id`, `ui_tz` (no longer needed)
|
||||
- Result: Only shows tickets/remarks that were actually linked to that specific run
|
||||
|
||||
*Testing & Troubleshooting:*
|
||||
- Temporarily added debug logging to `link_open_internal_tickets_to_run` function
|
||||
- Wrote to AuditLog table with event_type "ticket_link_debug" for troubleshooting
|
||||
- Logged ticket_id, code, resolved_at status for every run import
|
||||
- Debug logging removed after successful resolution (code preserved in documentation)
|
||||
|
||||
**Test Email Generation:**
|
||||
- Reduced test email generation from 3 emails per status to 1 email per status
|
||||
- Each button now creates exactly 1 test mail instead of 3 for simpler testing
|
||||
|
||||
*Result:*
|
||||
- ✅ Resolved tickets stop appearing immediately after resolution
|
||||
- ✅ Consistent behavior across all pages (Job Details, Run Checks, Run Checks popup)
|
||||
- ✅ Audit trail preserved: old runs keep their historical ticket links
|
||||
- ✅ Clear distinction: new runs only show currently active (unresolved) tickets
|
||||
- ✅ All queries now use explicit link-based logic (no date comparisons)
|
||||
|
||||
## v0.1.25
|
||||
|
||||
This release focuses on parser improvements and maintenance enhancements, adding support for new notification types across Synology and Veeam backup systems while improving system usability with orphaned job cleanup and test email generation features.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user