backupchecks/docs/changelog-claude.md
Ivo Oskamp 8a733a356b Fix Autotask resolution to preserve exact field values from GET response
The issueType, subIssueType, and source fields must be sent in the PUT
payload with their exact values from GET response, including null. This
fixes HTTP 500 error where Autotask rejected picklist value 0.

Changed _pick function to return (found, value) tuple to distinguish
between "field missing" and "field is null".

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-05 16:29:54 +01:00

3.2 KiB

Changelog - Claude Code

This file documents all changes made to this project via Claude Code.

[2026-02-05]

Fixed

  • Autotask ticket resolution update now correctly preserves exact field values from GET response in PUT payload. The issueType, subIssueType, and source fields are copied with their exact values (including null) from the GET response, as required by Autotask API. Previously these fields were being skipped or modified.

Added

  • Restored Autotask PSA integration from branch v20260203-13-autotask-resolution-item-wrapper:
    • integrations/autotask/client.py - Autotask REST API client with full support for:
      • Zone information discovery
      • Ticket CRUD operations (create, get, update)
      • Ticket notes via /Tickets/{id}/Notes endpoint
      • Safe resolution updates preserving stabilizing fields
      • Query support for companies, tickets, time entries, deleted ticket logs
      • Reference data retrieval (queues, ticket sources, priorities, statuses)
    • ticketing_utils.py - Utilities for internal ticket management and Autotask linkage
    • Database migrations for Autotask fields:
      • SystemSettings: Autotask connection settings, defaults, and cached reference data
      • Customer: Autotask company mapping fields
      • JobRun: Autotask ticket linkage and deletion tracking fields
      • Ticket: Resolution origin tracking
    • Settings UI for Autotask configuration (connection test, reference data sync)
    • Run Checks integration for Autotask ticket creation
    • Customers page with Autotask company mapping
    • Documentation files for Autotask integration design and implementation
  • Added docs/autotask_rest_api.md - Validated Autotask REST API contract based on Postman testing

[2026-02-04]

Added

  • docs/changelog-claude.md - Changelog file for tracking changes made via Claude Code
  • Setting to enable/disable daily dashboard redirect requirement (Settings > General > Navigation)
    • New require_daily_dashboard_visit column in SystemSettings model
    • Migration in migrations.py to add the column
    • Toggle in Settings General page under new "Navigation" card
    • Default value is OFF (disabled) - users can navigate directly to any page

Changed

  • Converted changelog to English (all project documentation must be in English)
  • Documented branch naming convention and build workflow in Claude memory
  • Filled README.md with comprehensive project documentation based on source code analysis

Performance

  • Added database indexes migration (migrations.py) for frequently queried foreign key columns:
    • JobRun: indexes on job_id, job_id+run_at, job_id+reviewed_at, mail_message_id
    • MailMessage: indexes on job_id, location, job_id+location
    • MailObject: index on mail_message_id
    • TicketScope: indexes on ticket_id, job_id
    • RemarkScope: indexes on remark_id, job_id
  • Fixed N+1 query in _recompute_override_flags_for_runs() - batch loads all jobs instead of per-run queries
  • Optimized Daily Jobs page with batch queries:
    • Batch load all today's runs for all jobs in single query
    • Batch infer weekly schedules for all jobs (was per-job query)
    • Batch infer monthly schedules for jobs without weekly schedule
    • Batch load ticket/remark indicators for all jobs