mirror of
https://github.com/azaion/missions.git
synced 2026-06-21 16:31:07 +00:00
7025f4d075
Updated JWT authentication to use configuration values instead of hardcoded secrets, improving security and flexibility. Enhanced CORS policy to conditionally allow origins based on configuration settings, with logging for permissive defaults. Updated README to reflect project renaming and clarify service context.
13 KiB
13 KiB
Glossary — missions (Azaion edge-tier .NET service)
Status: confirmed-by-user
Date: 2026-05-14
Scope: terms used inside this submodule's _docs/02_document/ set, plus suite-level terms recurring in those docs. Generic CS / industry terms intentionally omitted.
Note
: this glossary reflects the post-rename, post-GPS-Denied-removal target. The pre-rename names (
Aircraft,Flight,Orthophoto,GpsCorrection, the"GPS"policy) are kept as deprecated entries to make code-vs-doc reconciliation possible during the B5–B12 ticket window. The B-tickets are tracked under Jira AZ-EPIC (AZ-539); the leftover at_docs/_process_leftovers/2026-05-14_rename-flights-to-missions.mdis the source of truth for the rename plan.
A
- admin — remote .NET service that mints HS256 JWTs against the central user PostgreSQL; this service only validates. source:
components/05_identity/description.md - Aircraft (deprecated → Vehicle, B6) — pre-rename name for the operator-managed inventory entry. source:
00_discovery.md,modules/entities.md - Annotation — borrowed read-only entity (text PK, FK to
media); schema owned byannotations; cascade-deleted bymissions. source:modules/entities.md - annotations (suite service) — edge-tier .NET sibling that owns the
media+annotationstable schemas. source:data_model.md - AppDataConnection —
linq2dbDataConnectionexposingITable<T>for every persisted entity (4 owned + 3 borrowed post-B7); per-HTTP-request scoped. source:modules/database.md - autopilot (suite service) — edge service that reads
missions+waypointsto drive the vehicle and writesmap_objects. source:data_model.md,components/04_persistence/description.md - AZ-539 (AZ-EPIC) — umbrella Jira epic covering this rename + multi-vehicle support + GPS-Denied removal. source:
_docs/_process_leftovers/2026-05-14_rename-flights-to-missions.md - AZAION_REVISION — env var baked from
CI_COMMIT_SHAat build time; surfaces the source commit at runtime viadocker inspect. source:deployment/containerization.md
B
- B-tickets (B1–B12) — child stories under AZ-EPIC. B1 docs, B2 suite-doc cleanup, B3 state bookkeeping, B5 namespace/csproj, B6 domain rename, B7 GPS-Denied removal, B8 HTTP routes, B9 DB migration, B10 Dockerfile/image, B12 default-vehicle decision. source:
_docs/tasks/
C
- Cascade-delete (this service's contract) — manual walk in
MissionService.DeleteMission/WaypointService.DeleteWaypointthat deletes rows in FK order across other services' tables (media,annotations,detection) plus this service's ownmap_objects,waypoints,missions. NOT transaction-wrapped today (ADR-006). source:architecture.mdADR-003 + ADR-006 - CMMC L2 row 3 — scorecard finding: JWT
iss/audvalidation is disabled across the .NET suite services. Tracked at suite level under AZ-487 / AZ-494; out of this Epic. source:components/05_identity/description.md - Copter —
VehicleType = 1; multirotor UAV. source:00_discovery.md
D
- DatabaseMigrator — startup-time idempotent schema bootstrap; runs
CREATE TABLE IF NOT EXISTSfor 4 owned tables + 3 indexes (post-B9). B9 also adds a one-shotDROP TABLE IF EXISTSfor legacy GPS-Denied tables. source:modules/database.md - Default vehicle (
is_default) — boolean onVehicle. Code enforces "exactly one default" by clear-then-set; spec only toggles. Race-prone (no transaction). Resolution tracked under B12. source:components/01_vehicle_catalog/description.md - Detection (entity) — borrowed read-only entity (singular table name owned by detection pipeline); FK to
annotation. Cascade-deleted bymissions. source:modules/entities.md - detection pipeline — edge AI service that owns the
detectiontable schema. source:data_model.md
E
- Edge tier — per-device deployment on Jetson Orin / OrangePI / operator-PC; one container per service per device. source:
00_discovery.md,architecture.md - ErrorHandlingMiddleware — global exception → JSON mapper. Maps
KeyNotFoundException → 404,ArgumentException → 400,InvalidOperationException → 409; everything else → 500 (with stack trace logged). Emits a camelCase anonymous-object envelope{ statusCode, message }— accidental match with the spec's case style; missing the spec'serrorsfield. source:modules/middleware.md,components/06_http_conventions/description.md - ErrorResponse DTO — defined in
DTOs/ErrorResponse.csbut unused on the wire; declares PascalCase properties + wrong shape (List<string>? Errorsinstead of spec'sobject?). Dead code candidate. source:modules/dtos.md
F
- FL policy / "FL" permission — the only authorization policy this service consumes; satisfied by a JWT
permissionsclaim with value"FL". The permission code retains the legacy "Flight" wording even after the service rename tomissions(renaming the code is a fleet-wide auth change — not in this Epic). source:components/05_identity/description.md - Flight (deprecated → Mission, B6) — pre-rename name for the planned operation entity. source:
00_discovery.md,modules/entities.md - flight-gate — suite-level supervisor that prevents container restart mid-mission. source:
../../suite/_docs/00_top_level_architecture.md - FuelType — enum
{ Electric=0, Gasoline=1, Diesel=2 }. May not fitGuidedMissile(Phase C decision; carry-forward). source:modules/enums.md
G
- GeoPoint — shared DTO
{ Lat?, Lon?, Mgrs? }. Spec wants a single auto-convertingstring GPS(carry-forward divergence — out of this Epic). source:modules/dtos.md,modules/entities.md - GPS policy / "GPS" permission (deprecated, removed in B7) — pre-B7 second policy in code that authorized orthophoto / GPS-correction endpoints. Removed in AZ-546 (B7). source: today's
Auth/JwtExtensions.cs,components/05_identity/description.md - GpsCorrection (deprecated →
gps-deniedservice, B7+B9) — pre-B7 entity for GPS-correction CRUD. source:modules/entities.md(forward-looking) - gps-denied (suite service, post-B7) — separate edge service that owns
orthophotos+gps_correctionstables and referencesmission_id/waypoint_idas plain GUIDs. No runtime coupling tomissionseither direction. source:architecture.mdADR-007 - GuidedMissile —
VehicleType = 3; single-use loitering munition (added in B6). source:modules/enums.md
H
- H3 / H3 hex grid — Uber's hexagonal hierarchical spatial index used on
map_objects.h3_indexfor fast spatial bucketing of detections. source:modules/entities.md,data_model.md /health— anonymousGET /healthreturning{ status: "healthy" }. Process-liveness only; does NOT ping the DB. source:system-flows.mdF7
J
- JWT bearer (HS256) — minted by central
adminservice, validated locally with the sharedJWT_SECRET; no callback to issuer per request.ClockSkew = 1 minute(tighter than .NET's 5-minute default). source:system-flows.mdF5,modules/auth.md - JWT_SECRET — shared HMAC secret used by every .NET service in the suite. Rotation requires coordinated redeploy. Hardcoded dev fallback in
Program.csMUST be overridden in production. source:components/05_identity/description.md,components/07_host/description.md
L
- linq2db (6.2.0) — LINQ-to-SQL provider with attribute mapping; this service's only ORM.
[Association]navigation does NOT eager-load by default onFirstOrDefaultAsync(predicate). source:architecture.md§ Tech Stack
M
- MapObject — H3-indexed detection projection with class + confidence + spatial position; FK to
Mission. Schema owned by this service, written byautopilot, cascade-deleted bymissions. source:components/04_persistence/description.md - Media — borrowed read-only entity (text PK, nullable
waypoint_id); schema owned byannotations. Cascade-deleted bymissions. source:modules/entities.md - MGRS — Military Grid Reference System; alternate location encoding stored alongside
lat/lononwaypoints,map_objects. source:modules/entities.md - Mission — planned operation entity; FK to
Vehicle. Pre-rename name "Flight". source:components/02_mission_planning/description.md - Mission Planning (component
02_mission_planning) — ownsMission+WaypointCRUD plus the cross-service cascade-delete walk. source:components/02_mission_planning/description.md missions(this service) — edge-tier .NET 10 REST service that owns the mission domain of each Azaion deployment. Pre-rename:flights. source:architecture.md
O
- Operator personas — Operator, Operator+, Validator, CompanionPC, Admin, ApiAdmin — roles in the suite-level RBAC matrix that resolve to the
FLpermission. source:../../suite/_docs/00_roles_permissions.md - Orthophoto (deprecated →
gps-deniedservice, B7+B9) — pre-B7 entity for satellite-image orthophoto upload + listing. source:modules/entities.md(forward-looking)
P
- PaginatedResponse<T> — shared envelope
{ Items, TotalCount, Page, PageSize }(PascalCase wire shape — divergent from spec's camelCase). Used only byGET /missions. source:components/06_http_conventions/description.md,modules/dtos.md - Plane —
VehicleType = 0; fixed-wing UAV. source:modules/enums.md - postgres-local — ONE PostgreSQL instance per edge device, shared by every backend service on the device. Per-service table ownership enforced by convention (not by per-service DB users). source:
data_model.md§ 1,../../suite/_docs/00_top_level_architecture.md
S
- Suite — the parent meta-repo
azaion-suiteaggregating 11 component submodules orchestrated by the parent at../../. Authoritative human-confirmed docs live at../../suite/_docs/. source:00_discovery.md - Swagger —
Swashbuckle.AspNetCore(10.1.5); UI mounted unconditionally (noIsDevelopment()gate) — ADR-005 carry-forward. source:components/07_host/description.md
U
- UGV —
VehicleType = 2; Unmanned Ground Vehicle (added in B6). References../../hardware/_standalone/target_acquisition/target_acquisition.md. source:modules/enums.md ui(suite service) — React frontend on each edge device; the dominant inbound HTTP consumer. source:architecture.md
V
- Vehicle — operator-managed inventory entry; one of
{ Plane, Copter, UGV, GuidedMissile }. Pre-rename name "Aircraft". source:components/01_vehicle_catalog/description.md - Vehicle Catalog (component
01_vehicle_catalog) — ownsVehicleCRUD + the "is_default" exclusivity rule. source:components/01_vehicle_catalog/description.md - VehicleType — enum
{ Plane=0, Copter=1, UGV=2, GuidedMissile=3 }. Extended from{ Plane, Copter }in B6. source:modules/enums.md
W
- Watchtower — container restart-on-crash + image-update poller running on each edge device; works in conjunction with
flight-gateto avoid restart mid-mission. source:architecture.md§ Deployment Model - Waypoint — ordered geo-point inside a
Mission; FK toMission. source:modules/entities.md,components/02_mission_planning/description.md - WaypointObjective — enum
{ Surveillance=0, Strike=1, Recon=2 }. source:modules/enums.md - WaypointSource — enum
{ Auto=0, Manual=1 }. source:modules/enums.md - Woodpecker — CI runner; one ARM-tagged build job per push to
dev/stage/main. Single Dockerfile-based build + push step; no test, no security scan today. source:deployment/ci_cd_pipeline.md
Synonym pairs (today's code ↔ post-rename target)
Today (Azaion.Flights.*) |
Post-rename (Azaion.Missions.*) |
Touched by |
|---|---|---|
Aircraft (entity, controller, service, DTOs, enum) |
Vehicle |
B6 |
Flight (entity, controller, service, DTOs, table) |
Mission |
B6 |
aircraft_id (FK on missions) |
vehicle_id |
B6 + B9 |
flight_id (FK on waypoints, map_objects, orthophotos, gps_corrections) |
mission_id |
B6 + B9 |
[Route("aircrafts")], [Route("flights")] |
[Route("vehicles")], [Route("missions")] |
B8 |
Azaion.Flights.csproj, dotnet Azaion.Flights.dll, azaion/flights:*-arm |
Azaion.Missions.csproj, dotnet Azaion.Missions.dll, azaion/missions:*-arm |
B5 + B10 |
"GPS" policy + Orthophoto + GpsCorrection entities + cascade branches |
(removed) | B7 + B9 |
| 6 owned tables, 9 entities | 4 owned tables, 7 entities | B7 + B9 |
AircraftType { Plane, Copter } |
VehicleType { Plane, Copter, UGV, GuidedMissile } |
B6 |