Complete Customers & Jobs documentation section (4 pages)

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>
This commit is contained in:
Ivo Oskamp 2026-02-08 12:46:08 +01:00
parent eb9d9158db
commit 5896614637
5 changed files with 1157 additions and 22 deletions

View File

@ -4,16 +4,327 @@
<h1>Approved Jobs</h1> <h1>Approved Jobs</h1>
<p class="lead"> <p class="lead">
View and manage approved backup jobs. View and manage all approved backup jobs across all customers.
</p> </p>
<h2>Overview</h2>
<p>The Jobs page provides a comprehensive view of all approved backup jobs in BackupChecks. Once a job has been approved from the Inbox, it appears here and begins receiving backup reports automatically.</p>
<p>This page allows you to:</p>
<ul>
<li>View all approved jobs organized by customer</li>
<li>See job configuration and status at a glance</li>
<li>Access job details and run history</li>
<li>Archive or delete jobs</li>
<li>Export and import job data</li>
</ul>
<h2>Accessing the Jobs Page</h2>
<p>To view approved jobs:</p>
<ol>
<li>Navigate to <strong>Jobs</strong> in the main navigation menu</li>
<li>This page is available to <strong>Admin</strong>, <strong>Operator</strong>, and <strong>Viewer</strong> roles</li>
<li>Reporters do not have access to operational features like the Jobs page</li>
</ol>
<h2>Jobs List</h2>
<p>The Jobs page displays a table with the following columns:</p>
<table>
<thead>
<tr>
<th>Column</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Customer</strong></td>
<td>Customer name (jobs are grouped by customer)</td>
</tr>
<tr>
<td><strong>Job Name</strong></td>
<td>Backup job name (clickable to view details)</td>
</tr>
<tr>
<td><strong>Backup Software</strong></td>
<td>Detected backup software (e.g., Veeam, Acronis, Windows Server Backup)</td>
</tr>
<tr>
<td><strong>Backup Type</strong></td>
<td>Type of backup (e.g., Full, Incremental, Differential)</td>
</tr>
<tr>
<td><strong>Last Run</strong></td>
<td>Date and time of the most recent backup run</td>
</tr>
<tr>
<td><strong>Status</strong></td>
<td>Status of the most recent run (Success, Failed, Warning)</td>
</tr>
<tr>
<td><strong>Schedule</strong></td>
<td>Learned schedule (e.g., "Daily", "Weekly: Mon, Wed, Fri", "Monthly: 1st")</td>
</tr>
<tr>
<td><strong>Actions</strong></td>
<td>Edit, Archive, Delete buttons</td>
</tr>
</tbody>
</table>
<div class="doc-callout doc-callout-info"> <div class="doc-callout doc-callout-info">
<strong>📝 Coming Soon:</strong> <strong>💡 Filtering:</strong><br>
This page is under construction. Full content will be added in a future update. By default, only <strong>active jobs</strong> for <strong>active customers</strong> are shown. Archived jobs and jobs belonging to inactive customers are hidden. Use the "Show archived jobs" toggle to view archived jobs.
</div> </div>
<h2>Content</h2> <h2>Viewing Job Details</h2>
<p>Detailed content will be added here in a future update.</p> <p>To view detailed information about a specific job:</p>
<ol>
<li>Navigate to the <strong>Jobs</strong> page</li>
<li>Find the job in the list</li>
<li>Click on the <strong>job name</strong></li>
</ol>
<p>The job detail page shows:</p>
<ul>
<li><strong>Job Information:</strong>
<ul>
<li>Customer name</li>
<li>Job name</li>
<li>Backup software and type</li>
<li>Active/archived status</li>
</ul>
</li>
<li><strong>Email Matching Patterns:</strong>
<ul>
<li>Sender email pattern (used to match incoming emails)</li>
<li>Subject pattern (used to match incoming emails)</li>
</ul>
</li>
<li><strong>Schedule Information:</strong>
<ul>
<li>Learned schedule (if available)</li>
<li>Expected run days/times</li>
</ul>
</li>
<li><strong>Recent Backup Runs:</strong>
<ul>
<li>List of recent backup runs with dates and statuses</li>
<li>Clickable to view run details</li>
</ul>
</li>
</ul>
<h2>Editing Job Information</h2>
<p>While you cannot manually change parser-determined fields (sender pattern, subject pattern, backup software), you can edit certain job properties:</p>
<ol>
<li>Navigate to the <strong>Jobs</strong> page</li>
<li>Find the job you want to edit</li>
<li>Click the <strong>Edit</strong> button</li>
<li>Modify editable fields:
<ul>
<li><strong>Customer:</strong> Change which customer the job belongs to</li>
<li><strong>Job Name:</strong> Rename the job for clarity</li>
<li><strong>Notes:</strong> Add internal notes about the job</li>
</ul>
</li>
<li>Click <strong>Save</strong> to apply changes</li>
</ol>
<div class="doc-callout doc-callout-warning">
<strong>⚠️ Parser Fields Are Read-Only:</strong><br>
Fields determined by Mail Parsers (backup software, backup type, sender pattern, subject pattern) cannot be manually edited. If these are incorrect, the Mail Parser configuration must be updated by an administrator.
</div>
<h2>Job Status Indicators</h2>
<p>Jobs display different status indicators based on their most recent backup run:</p>
<table>
<thead>
<tr>
<th>Status</th>
<th>Color</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Success</strong></td>
<td>Green</td>
<td>Most recent backup completed successfully</td>
</tr>
<tr>
<td><strong>Failed</strong></td>
<td>Red</td>
<td>Most recent backup failed</td>
</tr>
<tr>
<td><strong>Warning</strong></td>
<td>Yellow/Orange</td>
<td>Backup completed with warnings</td>
</tr>
<tr>
<td><strong>No Runs</strong></td>
<td>Gray</td>
<td>Job approved but no backup runs received yet</td>
</tr>
</tbody>
</table>
<h2>Archiving Jobs</h2>
<p>When a backup job is no longer active (e.g., server decommissioned, backup solution changed), you can archive it to declutter operational views.</p>
<h3>How to Archive a Job</h3>
<ol>
<li>Navigate to the <strong>Jobs</strong> page</li>
<li>Find the job you want to archive</li>
<li>Click the <strong>Archive</strong> button</li>
<li>Confirm the archival</li>
</ol>
<h3>Effects of Archiving</h3>
<p>When a job is archived:</p>
<ul>
<li>It is <strong>hidden</strong> from the default Jobs list</li>
<li>It does <strong>not appear</strong> in Daily Jobs</li>
<li>Existing runs do <strong>not appear</strong> in Run Checks</li>
<li>All historical data is <strong>preserved</strong> (runs, tickets, remarks)</li>
<li>The job can be <strong>unarchived</strong> later if needed</li>
</ul>
<div class="doc-callout doc-callout-tip">
<strong>💡 When to Archive:</strong><br>
Archive jobs when:
<ul>
<li>A server has been decommissioned</li>
<li>A backup solution has been replaced</li>
<li>A customer no longer uses a particular backup job</li>
<li>You want to declutter operational views without losing historical data</li>
</ul>
</div>
<h3>Viewing Archived Jobs</h3>
<p>To view archived jobs:</p>
<ol>
<li>Navigate to the <strong>Jobs</strong> page</li>
<li>Enable the <strong>Show archived jobs</strong> toggle at the top of the page</li>
<li>Archived jobs will appear in the list with an "Archived" label</li>
</ol>
<h3>Unarchiving a Job</h3>
<p>To unarchive a job:</p>
<ol>
<li>Enable <strong>Show archived jobs</strong></li>
<li>Find the archived job</li>
<li>Click the <strong>Unarchive</strong> button</li>
</ol>
<p>The job will immediately reappear in operational views (Daily Jobs, Run Checks).</p>
<h2>Deleting Jobs</h2>
<p>If you need to permanently remove a job and all its data:</p>
<ol>
<li>Navigate to the <strong>Jobs</strong> page</li>
<li>Find the job you want to delete</li>
<li>Click the <strong>Delete</strong> button</li>
<li>Confirm the deletion in the dialog</li>
</ol>
<div class="doc-callout doc-callout-danger">
<strong>⚠️ Warning - Permanent Deletion:</strong><br>
Deleting a job is <strong>permanent</strong> and will delete:
<ul>
<li>The job configuration</li>
<li>All backup runs</li>
<li>All tickets linked to this job</li>
<li>All remarks linked to this job</li>
<li>All historical data</li>
</ul>
This action <strong>cannot be undone</strong>. Consider archiving the job instead if you might need the data later.
</div>
<h2>Exporting Job Data</h2>
<p>You can export all job data to a JSON file for backup, reporting, or migration purposes.</p>
<ol>
<li>Navigate to <strong>Settings</strong><strong>Maintenance</strong></li>
<li>In the "Export/Import" section, click <strong>Export Jobs</strong></li>
<li>A JSON file will be downloaded containing:
<ul>
<li>Customer information (including Autotask mappings)</li>
<li>All approved jobs with their configurations</li>
<li>Email matching patterns</li>
<li>Learned schedules</li>
</ul>
</li>
</ol>
<div class="doc-callout doc-callout-info">
<strong>💡 Export Format:</strong><br>
The export uses JSON format (schema version: <code>approved_jobs_export_v1</code>). This format is designed for system migration and backup purposes.
</div>
<h2>Importing Job Data</h2>
<p>You can import job data from a previously exported JSON file.</p>
<ol>
<li>Navigate to <strong>Settings</strong><strong>Maintenance</strong></li>
<li>In the "Export/Import" section, click <strong>Import Jobs</strong></li>
<li>Select your JSON file (must match the export format)</li>
<li>Click <strong>Upload</strong></li>
<li>The system will:
<ul>
<li>Create or update customers</li>
<li>Apply Autotask company mappings (if applicable)</li>
<li>Create jobs with their configurations</li>
<li>Apply learned schedules</li>
</ul>
</li>
<li>Review the import summary showing created and updated counts</li>
</ol>
<div class="doc-callout doc-callout-warning">
<strong>⚠️ Import Behavior:</strong><br>
The import process will:
<ul>
<li>Create new customers and jobs if they don't exist</li>
<li>Update existing customers if they already exist (matched by name)</li>
<li>Preserve existing job data and merge with imported data</li>
</ul>
Ensure your JSON data is correct before importing.
</div>
<h2>Next Steps</h2>
<ul>
<li><a href="{{ url_for('documentation.page', section='customers-jobs', page='job-schedules') }}">Job Schedules</a> - Learn how BackupChecks learns and displays job schedules</li>
<li><a href="{{ url_for('documentation.page', section='backup-review', page='daily-jobs') }}">Daily Jobs</a> - Monitor jobs expected to run today</li>
<li><a href="{{ url_for('documentation.page', section='backup-review', page='run-checks') }}">Run Checks</a> - Review individual backup runs</li>
<li><a href="{{ url_for('documentation.page', section='customers-jobs', page='managing-customers') }}">Managing Customers</a> - Customer management guide</li>
</ul>
{% endblock %} {% endblock %}

View File

@ -4,16 +4,297 @@
<h1>Configuring Jobs</h1> <h1>Configuring Jobs</h1>
<p class="lead"> <p class="lead">
Learn how to configure backup jobs. Understand how backup jobs are created and configured in BackupChecks through the Inbox approval workflow.
</p> </p>
<h2>Overview</h2>
<p>Unlike traditional systems where you manually configure backup jobs, BackupChecks uses an <strong>Inbox-based approval workflow</strong>. Jobs are created by approving backup report emails, and all job configuration is automatically determined by Mail Parsers.</p>
<div class="doc-callout doc-callout-info"> <div class="doc-callout doc-callout-info">
<strong>📝 Coming Soon:</strong> <strong>💡 Key Concept:</strong><br>
This page is under construction. Full content will be added in a future update. You <strong>cannot manually create or configure</strong> backup jobs in BackupChecks. Instead, jobs are created by approving emails from the Inbox. This ensures consistency and prevents configuration errors.
</div> </div>
<h2>Content</h2> <h2>How Jobs Are Created</h2>
<p>Detailed content will be added here in a future update.</p> <p>The job creation process follows these steps:</p>
<table>
<thead>
<tr>
<th>Step</th>
<th>What Happens</th>
<th>Where</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Backup report email arrives in monitored mailbox</td>
<td>Email system</td>
</tr>
<tr>
<td>2</td>
<td>Mail import fetches the email via Microsoft Graph API</td>
<td>Background process</td>
</tr>
<tr>
<td>3</td>
<td>Email appears in Inbox (no matching job exists yet)</td>
<td><strong>Inbox</strong> page</td>
</tr>
<tr>
<td>4</td>
<td>Operator selects customer and clicks "Approve job"</td>
<td><strong>Inbox</strong> page</td>
</tr>
<tr>
<td>5</td>
<td>Mail Parser extracts job configuration from email</td>
<td>Background process</td>
</tr>
<tr>
<td>6</td>
<td>Job is created with parser-determined configuration</td>
<td><strong>Jobs</strong> page</td>
</tr>
<tr>
<td>7</td>
<td>Email is linked to job and removed from Inbox</td>
<td><strong>Run Checks</strong> page</td>
</tr>
</tbody>
</table>
<h2>Approving a Job from the Inbox</h2>
<p>To create a new backup job:</p>
<ol>
<li>Navigate to <strong>Inbox</strong> in the main menu</li>
<li>Find a backup report email in the inbox list</li>
<li>Click on the email to view its details</li>
<li>In the <strong>Customer</strong> field, select or enter the customer name
<ul>
<li>If the customer exists, select it from the dropdown</li>
<li>If the customer is new, type the name and it will be created automatically</li>
</ul>
</li>
<li>Click the <strong>Approve job</strong> button (enabled once a customer is selected)</li>
</ol>
<p>The system will:</p>
<ul>
<li>Create a new backup job linked to the selected customer</li>
<li>Apply the Mail Parser's configuration automatically</li>
<li>Link the email to the job as the first backup run</li>
<li>Remove the email from the Inbox</li>
<li>Make the run available in Run Checks for review</li>
</ul>
<div class="doc-callout doc-callout-tip">
<strong>💡 Customer Selection:</strong><br>
The <strong>Approve job</strong> button is only enabled when a customer is selected. If you type a new customer name, it will be created automatically when you approve the job.
</div>
<h2>What Mail Parsers Configure</h2>
<p>When you approve a job, the Mail Parser automatically determines the following job configuration:</p>
<table>
<thead>
<tr>
<th>Configuration</th>
<th>How It's Determined</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Backup Software</strong></td>
<td>Detected from email subject, sender, or body patterns (e.g., Veeam, Acronis, Windows Server Backup)</td>
</tr>
<tr>
<td><strong>Backup Type</strong></td>
<td>Extracted from email content (e.g., Full, Incremental, Differential)</td>
</tr>
<tr>
<td><strong>Job Name</strong></td>
<td>Parsed from email subject or body</td>
</tr>
<tr>
<td><strong>Sender Email Pattern</strong></td>
<td>Email sender address (used to match future emails)</td>
</tr>
<tr>
<td><strong>Subject Pattern</strong></td>
<td>Email subject pattern (used to match future emails)</td>
</tr>
<tr>
<td><strong>Success/Failure Detection</strong></td>
<td>Parser rules for identifying successful vs. failed backups</td>
</tr>
</tbody>
</table>
<div class="doc-callout doc-callout-warning">
<strong>⚠️ No Manual Configuration:</strong><br>
You <strong>cannot manually edit</strong> these job settings. All configuration is determined by the Mail Parser to ensure consistency. If a parser incorrectly identifies a field, the parser itself must be updated (Admin only).
</div>
<h2>Processing Similar Emails (Reparse All)</h2>
<p>After approving your first job for a customer, you can automatically process other emails that match the same pattern:</p>
<ol>
<li>At the top of the <strong>Inbox</strong> page, click <strong>Reparse all</strong></li>
<li>The system will scan all inbox emails and:
<ul>
<li>Match emails to existing approved jobs based on sender and subject patterns</li>
<li>Link matched emails to the corresponding jobs</li>
<li>Remove matched emails from the inbox</li>
<li>Create backup runs in Run Checks for review</li>
</ul>
</li>
</ol>
<div class="doc-callout doc-callout-tip">
<strong>💡 Workflow Tip:</strong><br>
After approving a few jobs from the Inbox, click <strong>Reparse all</strong> to automatically process any historical emails that match those jobs. This saves time when onboarding a new customer with many existing backup reports.
</div>
<h2>Viewing Job Configuration</h2>
<p>To view a job's configuration after it has been created:</p>
<ol>
<li>Navigate to <strong>Jobs</strong> in the main menu</li>
<li>Find the job in the list (organized by customer)</li>
<li>Click on the job name to view details</li>
</ol>
<p>The job detail page shows:</p>
<ul>
<li>Customer name</li>
<li>Job name</li>
<li>Backup software</li>
<li>Backup type</li>
<li>Email matching patterns (sender, subject)</li>
<li>Recent backup runs</li>
<li>Learned schedule (if available)</li>
<li>Active/archived status</li>
</ul>
<h2>Archiving Jobs</h2>
<p>If a backup job is no longer active, you can archive it:</p>
<ol>
<li>Navigate to <strong>Jobs</strong></li>
<li>Find the job you want to archive</li>
<li>Click the <strong>Archive</strong> button</li>
</ol>
<p>Archived jobs:</p>
<ul>
<li>Are <strong>hidden</strong> from Daily Jobs, Run Checks, and the default Jobs list</li>
<li>Do not appear in operational views</li>
<li>Can be viewed by clicking "Show archived jobs" on the Jobs page</li>
<li>Can be unarchived if needed</li>
</ul>
<div class="doc-callout doc-callout-info">
<strong>💡 Archive vs. Delete:</strong><br>
Archiving a job hides it from operational views but preserves all historical data. This is useful for jobs that are no longer running but whose history you want to retain. Deleting a job is permanent and removes all associated data.
</div>
<h2>Deleting Jobs</h2>
<p>To permanently delete a backup job:</p>
<ol>
<li>Navigate to <strong>Jobs</strong></li>
<li>Find the job you want to delete</li>
<li>Click the <strong>Delete</strong> button</li>
<li>Confirm the deletion</li>
</ol>
<div class="doc-callout doc-callout-danger">
<strong>⚠️ Warning - Permanent Deletion:</strong><br>
Deleting a job is <strong>permanent</strong> and will delete all associated backup runs, tickets, remarks, and historical data. This action cannot be undone. Consider archiving the job instead if you might need the data later.
</div>
<h2>Job Lifecycle</h2>
<p>A typical backup job goes through the following lifecycle:</p>
<table>
<thead>
<tr>
<th>Stage</th>
<th>Description</th>
<th>Visibility</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>1. Email in Inbox</strong></td>
<td>Backup report arrives, no job exists yet</td>
<td>Inbox page</td>
</tr>
<tr>
<td><strong>2. Job Approved</strong></td>
<td>Operator approves job from Inbox</td>
<td>Jobs page, Run Checks</td>
</tr>
<tr>
<td><strong>3. Active Job</strong></td>
<td>Job receives regular backup reports</td>
<td>Daily Jobs, Run Checks, Jobs page</td>
</tr>
<tr>
<td><strong>4. Schedule Learned</strong></td>
<td>System learns backup schedule after several runs</td>
<td>Daily Jobs (appears on expected days)</td>
</tr>
<tr>
<td><strong>5. Job Archived</strong></td>
<td>Backup no longer runs, job archived for history</td>
<td>Hidden from operational views</td>
</tr>
<tr>
<td><strong>6. Job Deleted</strong></td>
<td>Job and all data permanently removed</td>
<td>Completely removed</td>
</tr>
</tbody>
</table>
<h2>Common Questions</h2>
<h3>Can I manually create a job without an email?</h3>
<p><strong>No.</strong> Jobs can only be created by approving emails from the Inbox. This ensures that every job has a valid Mail Parser configuration and prevents misconfiguration.</p>
<h3>Can I edit a job's sender or subject pattern?</h3>
<p><strong>No.</strong> Job configuration is determined by Mail Parsers and cannot be manually edited. If a parser is incorrectly identifying fields, contact an administrator to review the parser configuration.</p>
<h3>What if multiple jobs match the same email?</h3>
<p>BackupChecks uses sender and subject patterns to uniquely identify jobs. If multiple jobs could match the same email pattern, the system will match to the first job created. Ensure each backup job sends reports with unique sender or subject patterns.</p>
<h3>Can I change the customer a job is linked to?</h3>
<p>Yes, you can edit a job to change its linked customer. Navigate to the job detail page and use the "Edit" function to select a different customer.</p>
<h2>Next Steps</h2>
<ul>
<li><a href="{{ url_for('documentation.page', section='customers-jobs', page='approved-jobs') }}">Approved Jobs</a> - View and manage all approved backup jobs</li>
<li><a href="{{ url_for('documentation.page', section='customers-jobs', page='job-schedules') }}">Job Schedules</a> - Understand how BackupChecks learns job schedules</li>
<li><a href="{{ url_for('documentation.page', section='mail-import', page='inbox-management') }}">Inbox Management</a> - Detailed guide to the Inbox workflow</li>
<li><a href="{{ url_for('documentation.page', section='mail-import', page='mail-parsing') }}">Mail Parsing</a> - Learn how Mail Parsers work</li>
</ul>
{% endblock %} {% endblock %}

View File

@ -4,16 +4,283 @@
<h1>Job Schedules</h1> <h1>Job Schedules</h1>
<p class="lead"> <p class="lead">
Understand how job schedules work. Understand how BackupChecks automatically learns backup job schedules and uses them to predict expected runs.
</p> </p>
<h2>Overview</h2>
<p>BackupChecks does <strong>not</strong> require you to manually configure backup schedules. Instead, the system <strong>automatically learns</strong> when backups are expected to run by analyzing historical backup run patterns.</p>
<p>This learned schedule information is used to:</p>
<ul>
<li>Display jobs in <strong>Daily Jobs</strong> on days they are expected to run</li>
<li>Identify missing backups (job expected today but hasn't run)</li>
<li>Provide schedule visibility on the Jobs page</li>
<li>Help operators focus on jobs that should have run</li>
</ul>
<div class="doc-callout doc-callout-info"> <div class="doc-callout doc-callout-info">
<strong>📝 Coming Soon:</strong> <strong>💡 Key Concept:</strong><br>
This page is under construction. Full content will be added in a future update. Schedules are <strong>learned automatically</strong> by analyzing backup run history. You do not configure schedules manually. After a few backup runs, BackupChecks will infer the schedule pattern.
</div> </div>
<h2>Content</h2> <h2>How Schedule Learning Works</h2>
<p>Detailed content will be added here in a future update.</p> <p>BackupChecks uses historical backup run data to infer schedules through the following process:</p>
<ol>
<li><strong>Data Collection:</strong> As backup reports arrive and create runs, the system records the date and time of each backup</li>
<li><strong>Pattern Analysis:</strong> After several runs, the system analyzes the dates to identify patterns (e.g., daily, specific weekdays, monthly)</li>
<li><strong>Schedule Inference:</strong> Once a pattern is detected, a schedule is assigned to the job</li>
<li><strong>Continuous Learning:</strong> The schedule is updated as more runs are received to maintain accuracy</li>
</ol>
<h3>Minimum Data Required</h3>
<p>To learn a schedule, BackupChecks needs:</p>
<ul>
<li><strong>At least 3-5 successful backup runs</strong> to establish a pattern</li>
<li>Runs should be <strong>spread across multiple days</strong> (not all on the same day)</li>
<li>Runs should follow a <strong>consistent pattern</strong> (e.g., always on Mondays and Thursdays)</li>
</ul>
<div class="doc-callout doc-callout-tip">
<strong>💡 Learning Time:</strong><br>
For a daily backup, the system can learn the schedule after 3-5 days of successful runs. For weekly backups, it may take 2-3 weeks to establish a reliable pattern.
</div>
<h2>Schedule Types</h2>
<p>BackupChecks can learn and display the following schedule types:</p>
<table>
<thead>
<tr>
<th>Schedule Type</th>
<th>Pattern</th>
<th>Display Example</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Daily</strong></td>
<td>Runs every day</td>
<td>"Daily"</td>
</tr>
<tr>
<td><strong>Weekly</strong></td>
<td>Runs on specific days of the week</td>
<td>"Weekly: Mon, Wed, Fri"</td>
</tr>
<tr>
<td><strong>Monthly</strong></td>
<td>Runs on specific day(s) of the month</td>
<td>"Monthly: 1st, 15th"</td>
</tr>
<tr>
<td><strong>Irregular</strong></td>
<td>No consistent pattern detected</td>
<td>"Irregular" or no schedule shown</td>
</tr>
</tbody>
</table>
<h2>Viewing Job Schedules</h2>
<p>You can view a job's learned schedule in several places:</p>
<h3>1. Jobs Page</h3>
<p>The Jobs page displays the learned schedule in the "Schedule" column for each job.</p>
<ol>
<li>Navigate to <strong>Jobs</strong></li>
<li>Locate the job in the list</li>
<li>The "Schedule" column shows the learned pattern (e.g., "Daily", "Weekly: Mon, Wed, Fri")</li>
</ol>
<h3>2. Job Detail Page</h3>
<p>The job detail page shows more detailed schedule information:</p>
<ol>
<li>Navigate to <strong>Jobs</strong></li>
<li>Click on a job name to open the detail page</li>
<li>The "Schedule Information" section shows:
<ul>
<li>Learned schedule type and pattern</li>
<li>Expected run days/times</li>
<li>Last run date</li>
<li>Next expected run (if predictable)</li>
</ul>
</li>
</ol>
<h3>3. Daily Jobs Page</h3>
<p>Jobs with learned schedules appear on the Daily Jobs page on days they are expected to run.</p>
<ol>
<li>Navigate to <strong>Daily Jobs</strong></li>
<li>Jobs expected to run today are listed here</li>
<li>The schedule determines which jobs appear on this page</li>
</ol>
<div class="doc-callout doc-callout-info">
<strong>💡 Daily Jobs Behavior:</strong><br>
A job will <strong>only appear</strong> on the Daily Jobs page if:
<ul>
<li>The system has learned a schedule for the job</li>
<li>Today matches the learned schedule pattern</li>
<li>The job is active (not archived)</li>
<li>The customer is active</li>
</ul>
New jobs without learned schedules will not appear on Daily Jobs until a pattern is established.
</div>
<h2>Schedule Accuracy</h2>
<p>Schedule learning is based on pattern recognition and may not be 100% accurate in all cases:</p>
<h3>High Accuracy Scenarios</h3>
<ul>
<li><strong>Daily backups:</strong> Run every day at approximately the same time</li>
<li><strong>Weekly backups:</strong> Run on the same weekdays every week (e.g., Monday, Wednesday, Friday)</li>
<li><strong>Monthly backups:</strong> Run on the same day(s) of the month (e.g., 1st and 15th)</li>
</ul>
<h3>Lower Accuracy Scenarios</h3>
<ul>
<li><strong>Irregular backups:</strong> Manual backups with no consistent schedule</li>
<li><strong>Variable schedules:</strong> Backup days change frequently (e.g., "first weekday of the month")</li>
<li><strong>Recent changes:</strong> Backup schedule was recently changed and the system is still learning the new pattern</li>
</ul>
<div class="doc-callout doc-callout-warning">
<strong>⚠️ Schedule Changes:</strong><br>
If a backup schedule changes (e.g., from daily to weekly), the learned schedule will <strong>gradually update</strong> as new runs are received. During this transition period, the displayed schedule may be inaccurate. Allow a few weeks for the system to relearn the new pattern.
</div>
<h2>No Schedule Displayed</h2>
<p>If a job shows no schedule or "No schedule learned", it means:</p>
<ul>
<li>The job was recently approved and doesn't have enough run history yet</li>
<li>The job has an irregular pattern that the system cannot predict</li>
<li>The job hasn't received enough consistent backup runs to establish a pattern</li>
</ul>
<p>In these cases:</p>
<ul>
<li>The job will <strong>not appear</strong> on the Daily Jobs page (since we don't know when it's expected)</li>
<li>Individual runs will still appear in <strong>Run Checks</strong> as they arrive</li>
<li>You can still view the job on the <strong>Jobs</strong> page</li>
</ul>
<h2>Schedule Override and Customization</h2>
<p>BackupChecks does <strong>not</strong> currently support manual schedule configuration or overrides. All schedules are automatically learned from historical data.</p>
<div class="doc-callout doc-callout-info">
<strong>📝 Future Feature:</strong><br>
Manual schedule configuration and schedule overrides may be added in a future version. For now, rely on the automatic learning system.
</div>
<h2>Using Schedules in Daily Jobs</h2>
<p>The Daily Jobs page uses learned schedules to show which jobs are expected to run today:</p>
<table>
<thead>
<tr>
<th>Job Status</th>
<th>Meaning</th>
<th>Action Needed</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Ran successfully</strong> (green)</td>
<td>Job ran today and completed successfully</td>
<td>No action needed</td>
</tr>
<tr>
<td><strong>Ran with failure</strong> (red)</td>
<td>Job ran today but failed</td>
<td>Investigate failure, create ticket if needed</td>
</tr>
<tr>
<td><strong>Expected but not run</strong> (yellow/gray)</td>
<td>Job is expected to run today based on schedule, but hasn't run yet</td>
<td>Wait if still early in the day, investigate if overdue</td>
</tr>
</tbody>
</table>
<div class="doc-callout doc-callout-tip">
<strong>💡 Workflow Tip:</strong><br>
Use the Daily Jobs page as your primary monitoring dashboard. Check it daily to ensure all expected backups have run successfully. Any job showing as "expected but not run" late in the day should be investigated.
</div>
<h2>Schedule Learning Best Practices</h2>
<p>To help BackupChecks learn accurate schedules:</p>
<ul>
<li><strong>Maintain Consistent Backup Schedules:</strong> Configure your backup software to run on consistent days/times</li>
<li><strong>Allow Learning Time:</strong> Give the system at least a week or two to learn new job patterns</li>
<li><strong>Monitor Daily Jobs:</strong> Use the Daily Jobs page to verify schedule accuracy</li>
<li><strong>Keep Jobs Active:</strong> Regular backup runs help maintain schedule accuracy</li>
<li><strong>Archive Inactive Jobs:</strong> Archive jobs that no longer run to avoid false "missing backup" alerts</li>
</ul>
<h2>Troubleshooting Schedule Issues</h2>
<h3>Schedule Not Appearing</h3>
<p><strong>Possible causes:</strong></p>
<ul>
<li>Not enough backup runs yet (need 3-5 successful runs)</li>
<li>Runs are too irregular to establish a pattern</li>
<li>All runs occurred on the same day (need runs spread across multiple days)</li>
</ul>
<p><strong>Solution:</strong> Wait for more backup runs to accumulate. Ensure the backup software is running on a consistent schedule.</p>
<h3>Schedule Is Inaccurate</h3>
<p><strong>Possible causes:</strong></p>
<ul>
<li>Backup schedule was recently changed</li>
<li>Backup runs have been irregular or skipped</li>
<li>Manual backups are interfering with schedule pattern</li>
</ul>
<p><strong>Solution:</strong> Allow time for the system to relearn the pattern based on recent runs. Ensure backups run consistently going forward.</p>
<h3>Job Not Appearing on Daily Jobs</h3>
<p><strong>Possible causes:</strong></p>
<ul>
<li>No learned schedule exists for the job</li>
<li>Today doesn't match the learned schedule pattern</li>
<li>Job or customer is archived/inactive</li>
</ul>
<p><strong>Solution:</strong> Check the Jobs page to see if a schedule is learned. If not, wait for more runs to establish a pattern.</p>
<h2>Next Steps</h2>
<ul>
<li><a href="{{ url_for('documentation.page', section='backup-review', page='daily-jobs') }}">Daily Jobs</a> - Monitor jobs expected to run today</li>
<li><a href="{{ url_for('documentation.page', section='backup-review', page='run-checks') }}">Run Checks</a> - Review individual backup runs</li>
<li><a href="{{ url_for('documentation.page', section='customers-jobs', page='approved-jobs') }}">Approved Jobs</a> - View and manage all approved jobs</li>
<li><a href="{{ url_for('documentation.page', section='customers-jobs', page='configuring-jobs') }}">Configuring Jobs</a> - Learn how jobs are created</li>
</ul>
{% endblock %} {% endblock %}

View File

@ -4,16 +4,283 @@
<h1>Managing Customers</h1> <h1>Managing Customers</h1>
<p class="lead"> <p class="lead">
Learn how to manage customer accounts. Learn how to create, edit, and manage customer accounts in BackupChecks.
</p> </p>
<h2>Overview</h2>
<p>Customers are the organizations or clients whose backup jobs you monitor in BackupChecks. Each customer can have multiple backup jobs associated with them.</p>
<p>The Customers page provides a central location to:</p>
<ul>
<li>View all customers and their backup job counts</li>
<li>Create new customer accounts</li>
<li>Edit customer information</li>
<li>Map customers to Autotask companies (if Autotask integration is enabled)</li>
<li>Activate or deactivate customer accounts</li>
<li>Export and import customer data</li>
</ul>
<h2>Accessing the Customers Page</h2>
<p>To access customer management:</p>
<ol>
<li>Navigate to <strong>Customers</strong> in the main navigation menu</li>
<li>This page is available to <strong>Admin</strong> and <strong>Operator</strong> roles</li>
<li>Viewers can see customers but cannot make changes</li>
</ol>
<h2>Customer List</h2>
<p>The Customers page displays a table with the following columns:</p>
<table>
<thead>
<tr>
<th>Column</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Name</strong></td>
<td>Customer name (clickable to view/edit details)</td>
</tr>
<tr>
<td><strong>Jobs</strong></td>
<td>Number of backup jobs configured for this customer. Displays in <strong style="color: red;">red and bold</strong> if zero jobs are configured.</td>
</tr>
<tr>
<td><strong>Autotask Company</strong></td>
<td>Linked Autotask company name (if Autotask integration is enabled and mapping exists)</td>
</tr>
<tr>
<td><strong>Active</strong></td>
<td>Checkbox indicating whether the customer account is active</td>
</tr>
<tr>
<td><strong>Actions</strong></td>
<td>Edit, Delete, and Autotask mapping buttons</td>
</tr>
</tbody>
</table>
<div class="doc-callout doc-callout-info"> <div class="doc-callout doc-callout-info">
<strong>📝 Coming Soon:</strong> <strong>💡 Job Count Indicator:</strong><br>
This page is under construction. Full content will be added in a future update. If a customer shows <strong style="color: red;">0</strong> jobs in red and bold, it means no backup jobs have been approved for this customer yet. Jobs are created by approving emails from the Inbox.
</div> </div>
<h2>Content</h2> <h2>Creating a New Customer</h2>
<p>Detailed content will be added here in a future update.</p> <p>To create a new customer account:</p>
<ol>
<li>Navigate to the <strong>Customers</strong> page</li>
<li>Scroll down to the <strong>New Customer</strong> section</li>
<li>Fill in the following fields:
<ul>
<li><strong>Customer Name:</strong> (Required) The name of the organization or client</li>
<li><strong>Contact Person:</strong> (Optional) Primary contact name</li>
<li><strong>Contact Email:</strong> (Optional) Contact email address</li>
<li><strong>Contact Phone:</strong> (Optional) Contact phone number</li>
<li><strong>Notes:</strong> (Optional) Additional information or notes about the customer</li>
</ul>
</li>
<li>Click <strong>Create Customer</strong></li>
</ol>
<p>The customer will be created and appear in the customer list immediately.</p>
<div class="doc-callout doc-callout-tip">
<strong>💡 Best Practice:</strong><br>
Create customer accounts before approving backup jobs from the Inbox. This allows you to immediately assign incoming backup reports to the correct customer.
</div>
<h2>Editing Customer Information</h2>
<p>To edit an existing customer:</p>
<ol>
<li>Navigate to the <strong>Customers</strong> page</li>
<li>Find the customer in the list</li>
<li>Click the <strong>Edit</strong> button (pencil icon) in the Actions column</li>
<li>Modify the customer details in the edit form</li>
<li>Click <strong>Save</strong> to apply changes</li>
</ol>
<p>All customer fields (name, contact person, email, phone, notes) can be updated at any time.</p>
<h2>Activating and Deactivating Customers</h2>
<p>Customers can be marked as active or inactive using the checkbox in the Active column.</p>
<h3>Active Customers</h3>
<p>Active customers:</p>
<ul>
<li>Their jobs appear in Daily Jobs, Run Checks, and Jobs list pages</li>
<li>New backup reports can be linked to their jobs</li>
<li>Normal operational status</li>
</ul>
<h3>Inactive Customers</h3>
<p>Inactive customers:</p>
<ul>
<li>Their jobs are <strong>hidden</strong> from Daily Jobs, Run Checks, and Jobs list pages</li>
<li>Jobs still exist in the database but are not displayed in operational views</li>
<li>Useful for customers who no longer use your backup services</li>
</ul>
<div class="doc-callout doc-callout-warning">
<strong>⚠️ Impact of Deactivating:</strong><br>
When you deactivate a customer, all their backup jobs immediately disappear from operational views (Daily Jobs, Run Checks, Jobs list). This is useful for decluttering the interface when a customer is no longer active. Jobs are not deleted and can be reactivated by marking the customer as active again.
</div>
<h2>Deleting Customers</h2>
<p>To delete a customer:</p>
<ol>
<li>Navigate to the <strong>Customers</strong> page</li>
<li>Find the customer you want to delete</li>
<li>Click the <strong>Delete</strong> button (trash icon)</li>
<li>Confirm the deletion in the dialog</li>
</ol>
<div class="doc-callout doc-callout-danger">
<strong>⚠️ Warning - Permanent Deletion:</strong><br>
Deleting a customer is <strong>permanent</strong> and will also delete all associated backup jobs, runs, tickets, and remarks. This action cannot be undone. Consider deactivating the customer instead if you might need the data later.
</div>
<h2>Autotask Company Mapping</h2>
<p>If Autotask integration is enabled, you can map customers to Autotask companies. This allows BackupChecks to create tickets in the correct Autotask company.</p>
<h3>Mapping a Customer to Autotask</h3>
<ol>
<li>Navigate to the <strong>Customers</strong> page</li>
<li>Find the customer you want to map</li>
<li>Click the <strong>Link Autotask Company</strong> button</li>
<li>A modal dialog will open with a search box pre-filled with the customer name</li>
<li>Review the search results and select the matching Autotask company</li>
<li>Click <strong>Save Mapping</strong></li>
</ol>
<p>Once mapped, the Autotask company name will appear in the "Autotask Company" column, and any tickets created for this customer's backup jobs will be created in the linked Autotask company.</p>
<div class="doc-callout doc-callout-info">
<strong>💡 Auto-Search Feature:</strong><br>
When you open the Autotask mapping dialog, BackupChecks automatically searches for companies matching the customer name. This speeds up the mapping process for most customers.
</div>
<h3>Unmapping a Customer from Autotask</h3>
<p>To remove an Autotask company mapping:</p>
<ol>
<li>Click the <strong>Unlink</strong> button next to the Autotask company name</li>
<li>Confirm the unmapping</li>
</ol>
<p>Existing tickets remain linked to the Autotask company, but new tickets will not be created until the customer is mapped again.</p>
<h2>Exporting Customer Data</h2>
<p>You can export all customer data to a CSV file for backup, reporting, or migration purposes.</p>
<ol>
<li>Navigate to the <strong>Customers</strong> page</li>
<li>Click the <strong>Export Customers</strong> button at the top of the page</li>
<li>A CSV file will be downloaded containing:
<ul>
<li>Customer name, contact person, email, phone, notes</li>
<li>Active status</li>
<li>Autotask company mapping (if applicable)</li>
</ul>
</li>
</ol>
<div class="doc-callout doc-callout-tip">
<strong>💡 Use Case:</strong><br>
Export customer data regularly as a backup, or before performing system maintenance. The exported CSV can be imported later to restore customer data.
</div>
<h2>Importing Customer Data</h2>
<p>You can import customer data from a CSV file.</p>
<ol>
<li>Navigate to the <strong>Customers</strong> page</li>
<li>Click the <strong>Import Customers</strong> button</li>
<li>Select your CSV file (must match the export format)</li>
<li>Click <strong>Upload</strong></li>
<li>The system will:
<ul>
<li>Create new customers if they don't exist</li>
<li>Update existing customers if they already exist (matched by name)</li>
<li>Apply Autotask company mappings (if Autotask is enabled)</li>
</ul>
</li>
<li>Review the import summary showing created, updated, and skipped customers</li>
</ol>
<div class="doc-callout doc-callout-warning">
<strong>⚠️ Import Behavior:</strong><br>
The import process matches customers by name. If a customer with the same name already exists, their information will be <strong>updated</strong> with the CSV data. Ensure your CSV data is correct before importing.
</div>
<h2>Customer Workflow Summary</h2>
<p>Here's the typical workflow for managing customers in BackupChecks:</p>
<table>
<thead>
<tr>
<th>Step</th>
<th>Action</th>
<th>Result</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Create customer account</td>
<td>Customer appears in list with <strong style="color: red;">0</strong> jobs</td>
</tr>
<tr>
<td>2</td>
<td>Approve backup job from Inbox</td>
<td>Job is linked to customer, job count increases</td>
</tr>
<tr>
<td>3</td>
<td>(Optional) Map to Autotask company</td>
<td>Tickets can be created in Autotask for failed backups</td>
</tr>
<tr>
<td>4</td>
<td>Monitor backup jobs</td>
<td>Jobs appear in Daily Jobs and Run Checks</td>
</tr>
<tr>
<td>5</td>
<td>(If needed) Deactivate customer</td>
<td>Jobs hidden from operational views</td>
</tr>
</tbody>
</table>
<h2>Next Steps</h2>
<ul>
<li><a href="{{ url_for('documentation.page', section='customers-jobs', page='configuring-jobs') }}">Configuring Jobs</a> - Learn how backup jobs are created from the Inbox</li>
<li><a href="{{ url_for('documentation.page', section='customers-jobs', page='approved-jobs') }}">Approved Jobs</a> - View and manage all approved backup jobs</li>
<li><a href="{{ url_for('documentation.page', section='autotask', page='company-mapping') }}">Autotask Company Mapping</a> - Detailed guide to Autotask integration</li>
<li><a href="{{ url_for('documentation.page', section='mail-import', page='inbox-management') }}">Inbox Management</a> - Approve jobs from incoming backup reports</li>
</ul>
{% endblock %} {% endblock %}

View File

@ -28,8 +28,8 @@ This file documents all changes made to this project via Claude Code.
- Code blocks, tables, and image support - Code blocks, tables, and image support
- Responsive design for mobile and desktop - Responsive design for mobile and desktop
- **Access Control**: Login required (@login_required) - accessible to all user roles - **Access Control**: Login required (@login_required) - accessible to all user roles
- **Current Status**: Core infrastructure complete, getting-started section (3 pages) and users section (3 pages) completed with comprehensive content - **Current Status**: Core infrastructure complete, getting-started (3 pages), users (3 pages), and customers-jobs (4 pages) sections completed with comprehensive content
- **Placeholder Pages**: Remaining 27 pages created with basic structure for future content - **Placeholder Pages**: Remaining 23 pages created with basic structure for future content
- Full content for remaining sections will be added incrementally in future updates - Full content for remaining sections will be added incrementally in future updates
### Changed ### Changed
@ -45,6 +45,15 @@ This file documents all changes made to this project via Claude Code.
- Session Information section (not displayed in User Settings) - Session Information section (not displayed in User Settings)
- Redundant theme/role configuration sections (these are in navbar, not settings page) - Redundant theme/role configuration sections (these are in navbar, not settings page)
### Added
- Completed Customers & Jobs documentation section (4 pages):
- **Managing Customers**: Customer creation, editing, activation/deactivation, Autotask company mapping, CSV export/import, delete operations
- **Configuring Jobs**: Inbox-based job approval workflow, Mail Parser automatic configuration, Reparse All functionality, job archiving and deletion
- **Approved Jobs**: Jobs list overview, job details, status indicators, archive/unarchive workflow, JSON export/import for migration
- **Job Schedules**: Automatic schedule learning, schedule types (daily/weekly/monthly), Daily Jobs integration, schedule accuracy and troubleshooting
- Added user-settings.png screenshot showing password change form
- Enhanced documentation CSS: centered all images horizontally (display: block, margin: 20px auto)
## [2026-02-07] ## [2026-02-07]
### Changed ### Changed