Mission after-action report
ARGUS generates a structured mission after-action report on demand, using the
mission’s Firestore data (planning fields, tasks, flags, flight logs, comms) as context
for a GPT-4o agent. The result is a typed MissionReport object that renders inline in
a dialog and exports to a formatted PDF.
Triggering a report
From the operation detail page, click GENERATE REPORT. That
button is visible when you have the ai.reports permission; if your OpenAI key is not
set, generation fails with a hint to configure it in Settings → AI Copilot.
The dialog auto-starts generation as soon as it opens (there is no extra confirm step). You can cancel by closing the dialog before it completes.
There is no “enable this op for AI reports at create time” toggle today — reports can be generated on any mission regardless of status, provided the API key is set.
Phases
Progress is shown as three dots across the bottom of the dialog:
- Load Data — pulls the mission, assets, polygons, flags, tasks, comms, and flight logs in parallel from Firestore.
- AI Analysis — the agent call to
https://api.openai.com/v1/chat/completionswith a compact intelligence briefing context. Model defaults togpt-4obut respects the model selected in Copilot settings. - Build Report — resolves the commander’s display name, assembles the final
MissionReportobject.
What the report contains
The MissionReport typed object includes:
Cover page fields
missionName,codename,classification,missionType,status,priority.startTimeLabel,endTimeLabel,commanderName, optionalheadquartersNote.
Planning data (verbatim from the mission doc)
objectives[]with text, priority, completion state.roe[]as plain strings.
AI-generated narrative sections
executiveSummary— 2-3 paragraph formal narrative for senior command.missionAssessment— one ofSUCCESS,PARTIAL_SUCCESS,FAILURE,INCONCLUSIVE.situationalOverview— contextual narrative.keyFindings[]— single-sentence bullets.lessonsLearned[].recommendations[].commanderNotes— specific assessment for the commander: what went well, what needs attention, required follow-up actions.
Structured data sections
stats— duration, assets deployed (total + drones + operatives), tasks (total / completed / failed / aborted), objectives (total / completed), flags placed, high-priority flags (code_red / casualty / hazard / person_detected), comms entries, flight sessions, total flight time, total distance, search areas count, person detections.tasks[]— title, type, status, priority, assigned assets, progress, sitrep, completion note, duration.findings[]— flag type, name, coordinates, timestamp, notes.commsHighlights[]— time, sender, transcription, duration.assetsDeployed[]— name and type.
Inline preview
Once the report is ready, the dialog shows:
- A coloured assessment banner (green / amber / red / grey with matching icon).
- A five-stat row — Tasks Done, Objectives, Flags, Duration, Flights.
- The first five lines of the executive summary (clipped with CSS
-webkit-line-clamp). - Up to four key findings as bullets, with a “+N more in PDF” footer when longer.
- The commander’s assessment in an italic left-bordered quote block.
- A note that the full report (tasks, field intelligence, communications log, lessons learned, recommendations) is in the exported PDF only.
Exporting to PDF
Click Export PDF. MissionReportPdfService.generate(report) builds the PDF in-browser
via jsPDF. The PDF includes the assessment badge, executive summary, stats grid,
objectives with completion state, ROE, situational overview, key findings, lessons
learned, recommendations, tasks table, findings, comms highlights, assets deployed, and
the commander’s notes block.
Regenerating
The Regenerate button in the dialog calls generate() again, which produces a fresh
report from current Firestore state. There is no per-section regenerate today — it’s
the full report or nothing.
Editing
The dialog is read-only. There is no in-app prose editor, no media reordering, and no “Save edits to the report” action. Export the PDF and hand-edit externally if you need to tweak wording.
Distribution
There is no built-in email, webhook, or “send to participants” action. Distribution is manual — download the PDF and attach it to your own channel.
mission.report_readywebhook — not yet implemented. Treat any documentation mentioning it as aspirational.- Scheduled auto-generation on op completion — not yet implemented.
Retention
The report is not persisted back to Firestore. Each generation is fresh; close the dialog and the in-memory report is gone. Export the PDF if you need a durable artifact.
Errors
If generation fails, the dialog switches to a red error state with the error message and a hint to check the OpenAI key. Press Try Again to retry, or Close to abandon.