Audits
What. Internal or external audits with a checklist (one item per requirement), a runner UX for going row-by-row in the audit, and an auto-finding sweep on completion. Where.
/audits.
Lifecycle
Draft → Planned → In Progress → Completed
↘ Cancelled
1. Plan an audit
- Side nav → Audits → New Audit.
- Fill Name, Description, Type (Internal / External / Surveillance / Re-certification), Site (optional), Standard (which module the checklist comes from), Start / End date.
- Optional: fill Scope, Objectives, Criteria.
- Save → status = Draft.
Move Draft → Planned
Open the audit detail. Click Show menu → Plan Audit. Status = Planned. Plan Audit is a confirmation: you've committed to a date.
2. Generate a checklist
The Run Audit button is disabled until the checklist has at least one item.
- Click the Checklist tab.
- Click Generate Checklist - Copilot proposes one checklist item per
requirement in the standard. Review the preview, click Apply. Items
are inserted with
result='pending'.
Manual fallback. If AI generation is offline, you can also create checklist items directly via the API (or wait for a manual UI - see Known gaps).
3. Run the audit
Click Show menu → Start Audit to flip status from Planned to In Progress. Then click Run Audit to enter the runner.
The runner is a one-item-at-a-time UX:
- Top: progress bar + counts (Conform / NC / OBS / OFI / Pending).
- Middle: requirement code + title.
- Assessment Result buttons:
- Conformity - meets the requirement.
- Nonconformity - fails the requirement (will become an NC finding).
- Observation - minor issue (will become an OBS finding).
- Opportunity for Improvement - suggestion (will become an OFI finding).
- Not Assessed - skip.
- Audit Notes - free-text observations.
- Evidence Reference - pointer to evidence (photo IDs, doc refs).
- Previous / Next buttons to navigate. Saves on Next or Finish.
Click Finish when done. A confirmation dialog summarizes "X of Y items assessed".
4. Complete the audit
- Back on the audit detail, click Show menu → Complete Audit.
- A dialog asks for Audit conclusions.
- Save. Status flips to Completed.
- Auto-finding sweep: for every checklist item with result in
{nonconformity, observation, opportunity}, a row is created in
findingswith:source_type='audit',source_id=<audit.id>,checklist_item_id=<item.id>typemapped: nonconformity →nc, observation →obs, opportunity →ofiseveritydefaults:majorfor NC,minorfor OBS / OFItitlelikeNC: 9001-4.2.1 - Identify interested partiesdescriptionfrom the audit notes (or a default if empty)objective_evidencefrom the evidence reference field
- Idempotent - re-completing the audit won't duplicate findings.
Why this matters. Before this fix, NCs in an audit had no flow into the rest of the IMS. Now every NC automatically lands in the Findings list with full provenance, ready to escalate to a CAPA.
What every tab does
- Overview - status, dates, scope, conclusions.
- Checklist - every item with status, the runner.
- Evidence - files attached to the audit overall.
Test it
- Create an audit "Q2 Internal Audit", standard = ISO 9001:2015, dates this quarter.
- Show menu → Plan Audit. Status = Planned.
- Checklist tab → Generate Checklist (or seed via SQL for testing). At least 3 items show.
- Show menu → Start Audit. Status = In Progress.
- Click Run Audit. Mark item 1 Conformity → Next, item 2 Nonconformity → Next, item 3 Observation → Finish.
- Verify each item's
resultin DB matches what you clicked (regression: previous bug saved every click to item 1). - Show menu → Complete Audit. Enter conclusions. Save.
- Open
/findings. Two new rows: one NC + major, one OBS + minor. Each links to the rightchecklist_item_id. - Re-Complete the audit. Findings list does NOT duplicate (idempotent check).