Added comprehensive documentation for customer and job management:
- Managing Customers:
- Customer creation with contact information
- Editing customer details
- Active/inactive status and impact on job visibility
- Autotask company mapping workflow with auto-search
- CSV export/import for backup and migration
- Delete operations with warnings
- Job count indicators (red/bold when zero)
- Configuring Jobs:
- Inbox-based approval workflow (cannot manually create jobs)
- Mail Parser automatic configuration of all job fields
- Reparse All functionality for batch processing
- Job archiving vs deletion
- Job lifecycle stages
- Common questions and limitations
- Approved Jobs:
- Jobs list overview with status indicators
- Job detail page information
- Editable vs parser-determined fields
- Archive/unarchive workflow
- JSON export/import via Settings > Maintenance
- Status indicators (success/failed/warning/no runs)
- Job Schedules:
- Automatic schedule learning from historical runs
- Schedule types (daily/weekly/monthly/irregular)
- Minimum data requirements (3-5 runs)
- Daily Jobs integration and expected run detection
- Schedule accuracy scenarios
- Troubleshooting schedule issues
All pages include tables, callouts, cross-references, and practical examples.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Added display: block to .doc-content img
- Changed margin from '20px 0' to '20px auto' for horizontal centering
- Images now centered like their figcaptions
- Applies to all documentation screenshots (user-management.png, user-settings.png)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Updated page description: only password change available in User Settings
- Added screenshot reference for user-settings.png
- Clarified theme selector location: navigation bar (between username and logout)
- Clarified role selector location: navigation bar (not in settings page)
- Simplified profile information: username and assigned roles (read-only)
- Removed non-existent Notification Preferences section
- Removed Session Information section (not displayed)
- Enhanced troubleshooting section with specific password change issues
- Maintained Data Privacy and Password sections
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Added captcha requirement (simple math problem) to login steps
- Noted future plan to make captcha optional via system setting
- Clarified HTTPS context for browser security:
- Only relevant for external access via domain name
- Not applicable for internal IP-based deployments
- Marked Mozilla Firefox as recommended browser (most tested)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Created placeholder pages for all 30 documentation pages across 9 sections
- Fixed content errors in getting-started pages based on user feedback:
- Corrected review process (all jobs reviewed, not just successful)
- Changed Autotask tickets from automatic to manual creation
- Updated mail import from IMAP to Graph API
- Fixed job creation workflow (from Inbox via Approve job, not manual)
- Added Reparse all functionality explanation
- Corrected Daily Jobs vs Run Checks distinction
- Added manual import recommendation before enabling automatic
- Added role-based menu visibility explanation
- Added news items feature explanation
- All navigation links now work without Internal Server Errors
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Created documentation blueprint (doc_bp) with routes and navigation
- Added documentation menu item (📖) to navbar for all users
- Implemented hierarchical navigation with 9 sections, 33 pages
- Created base layout with sidebar, breadcrumb, and prev/next navigation
- Added documentation.css with dark mode support
- Created first 3 getting-started pages (what-is-backupchecks, first-login, quick-start)
- Updated changelog
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Removed the scheduling placeholder card from the main reports page as
scheduling will be configured per individual report instead of having
an overarching setting.
Changes:
- Removed entire scheduling placeholder card (delivery, frequency, recipients)
- Updated card header subtitle to reflect that scheduling is per-report
- Report definitions table now uses full page width
- Cleaner, more focused UI
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added explicit import for _log_admin_event function which is needed for
customer export/import audit logging. Functions with underscore prefix
are not automatically imported by 'from .routes_shared import *'.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit completes the audit logging expansion by adding comprehensive
logging for critical system operations:
- Settings: Log changes to General, Mail, and Autotask settings with
before/after values (passwords excluded for security)
- Exports: Log customer and jobs exports with format and record counts
- Imports: Log customer and jobs imports with operation statistics
Also updated UI to reflect "System Audit Log" nomenclature instead of
"Admin activity" for better semantic clarity.
All audit events use structured event_type identifiers and JSON details
for easy filtering and analysis.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The table name 'admin_logs' was misleading as it contains both admin actions
and automated system events. Renamed to 'audit_logs' to better reflect its
purpose as a comprehensive audit trail.
Changes:
- Renamed model: AdminLog → AuditLog (with backwards compatibility alias)
- Database migration: Renames admin_logs table to audit_logs (idempotent)
- Updated admin_logging.py: log_admin_event → log_audit_event (with alias)
- Updated imports in routes_core.py and routes_shared.py
- Updated all references to use AuditLog instead of AdminLog
- Backwards compatibility maintained via aliases for smooth transition
This is part 1 of audit logging expansion.
Part 2 will add logging for settings changes and export/import actions.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The filter now accepts both datetime objects and string representations.
This fixes AttributeError when datetime fields are stored/returned as
strings instead of datetime objects from the database.
Changes:
- Added string parsing logic for common datetime formats
- Tries multiple format patterns (ISO, standard, with/without microseconds)
- Returns original string if parsing fails (graceful degradation)
- Maintains full datetime object support
Fixes errors on:
- /customers (autotask_last_sync_at)
- /logging (created_at)
- /admin/all-mail (received_at, parsed_at)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Extended both customer and jobs export/import to preserve Autotask
company mappings during data migration and system reset workflows.
Changes:
- Customer export (CSV): Added autotask_company_id and autotask_company_name columns
- Customer import (CSV): Reads and applies Autotask mapping fields, resets sync status
- Jobs export (JSON): Includes Autotask fields in customers array
- Jobs import (JSON): Processes customers array with Autotask mappings before jobs
- Backwards compatible: Old exports without Autotask fields continue to work
- Import feedback: Shows both created and updated customer counts
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Split Autotask settings into two separate forms with dedicated save
buttons and field validation:
1. Autotask Settings form:
- Save button inside card for better UX
- Required fields: Environment, Username, Password (if not set),
Tracking Identifier, Base URL
- Red asterisks indicate required fields
2. Ticket Defaults form:
- Separate save button inside card
- Required fields: Queue, Ticket Source, Status, Priority Warning,
Priority Error
- Prevents saving incomplete configurations
Benefits:
- Clear visual separation of concerns
- Prevents accidental saving of empty values
- HTML5 validation ensures all required fields are filled
- Better user experience with focused save actions
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Enhanced save logic to protect against losing the default ticket
status value when saving settings with an empty dropdown:
- Only update to new value if a status is actually selected
- Only allow clearing if reference data is loaded (dropdown has options)
- Preserve existing value if dropdown is empty (no reference data)
This fixes the issue where saving settings before reference data
loaded would overwrite the previously configured default status
with NULL, causing "Create Autotask ticket" to fail with error
about missing default status.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Fixed issue where Default Ticket Status dropdown was empty when
opening the settings page. Now automatically loads reference data
(queues, sources, statuses, priorities) when:
- Autotask integration is enabled
- API credentials are configured
- Reference data cache is empty
This eliminates the need to manually click "Refresh reference data"
before being able to select a default ticket status.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added customer active status filtering to prevent jobs from deleted
(inactive) customers from appearing in the UI alongside existing
archived job filtering.
Changes:
- Daily Jobs: Filter jobs where customer is NULL or active=True
- Run Checks: Filter jobs where customer is NULL or active=True
- Jobs list: Filter jobs where customer is NULL or active=True
This prevents showing jobs with "-" status from archived jobs or
deleted customers on Daily Jobs and Run Checks pages.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit consolidates all development work from the following branch series:
- v20260203-* (13 branches): Initial Autotask integration, graph config UI improvements
- v20260204-* (3 branches): Dashboard redirect setting, additional refinements
- v20260205-* (13 branches): Autotask resolution improvements, changelog restructuring
Key features merged:
- Autotask PSA integration with ticket creation, resolution, and search
- Graph/mail configuration UI improvements with credential testing
- Daily dashboard redirect setting (optional navigation control)
- Changelog restructuring with improved Python structure
- Various bug fixes and UI enhancements
All functionality has been consolidated from the final state of branch
v20260205-13-changelog-python-structure to preserve working features.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>