{% extends "base.html" %} {% from "_macros.html" import help %} {% block title %}{{ job.name }} — BackupWatch{% endblock %} {% block content %} {# onboarding_state is written by the onboarding workflow; older rows may not carry one, so every use is guarded and falls back to the raw value rather than assuming the vocabulary. #} {% set STATE_LABELS = {'draft': 'Draft', 'observing': 'Observing', 'monitoring': 'Monitoring'} %} {% set STATE_BADGE = {'draft': 'b-none', 'observing': 'b-warning', 'monitoring': 'b-success'} %} {% set jst = job.onboarding_state %} ← {{ job.client.display_name }}
This job is {{ STATE_LABELS.get(jst|string, jst|string)|lower }}: it records matching reports and shows failures, but sends no alerts and raises no missed backups until it is activated in Onboarding.
{% endif %} {% if err %}{% endif %} {% if msg %}{% endif %} {% if user.role in ['admin', 'tech'] %}| Field | Operator | Value | Case | Source | Matched {{ help("How many emails this rule has filed, and when it last matched. A rule that never matches may be dead; manual AND matches credit the first manual rule.") }} | |
|---|---|---|---|---|---|---|
| {{ r.field }} | {{ r.operator }} | {{ r.value }} | {{ "Yes" if r.case_sensitive else "No" }} | {% if r.is_or() %}OR · any matches{% if r.machine_learned() %}learned{% endif %}{% elif r.or_group %}OR group {{ r.or_group }} · one of these{% else %}AND · all must match{% endif %} | {% if h %}{{ h[0] }} · last {{ h[1]|dt }}{% else %}never{% endif %} | edit |
| No rules — this job will never auto-match. | ||||||
AND rules must all match; rules in the same OR group count as one condition met by any of its members; fully-OR rules match on any one. The learned chip marks rules the engine wrote itself when an email was assigned in Review — the rest were written by hand.
| When | Status | Vendor | Subject | From |
|---|---|---|---|---|
| {{ e.received_at|dt }} | {{ e.status }} | {{ e.vendor_detected|vendor }} | {{ e.email_subject }} | {{ e.email_from }} |
| No events yet. | ||||