MRO Module
Procurement Service
API для vendors (AVL), Purchase Requisitions, Purchase Orders, Goods Receipts.
Procurement Service — /api/v1/procurement
Base: https://api.nurcore.kg/api/v1/procurement
AVL (Approved Vendor List)
Vendor approval status: UNAPPROVED → APPROVED / BLOCKED
Certifications для airworthy parts:
| Cert | Scope |
|---|---|
| Part-21G POA | Production Organisation Approval (производители) |
| Part-145 | Maintenance organisation (repair stations) |
| ASA-100 / EN9120 | Distributors |
| AS9100 | Aerospace quality system |
Release certificate с каждой поставки:
- EASA Form 1 (European)
- FAA 8130-3 (US FAA)
| Method | Path | Description |
|---|---|---|
POST | /vendors | Register vendor (UNAPPROVED initial) |
GET | /vendors?approval_status=APPROVED | List AVL |
POST | /vendors/{id}/approve | Move to APPROVED |
POST | /vendors/{id}/block | Move to BLOCKED (с reason) |
POST | /vendors/{id}/contacts | Add contact (primary/billing/account) |
Purchase Requisition (PR)
Lifecycle: DRAFT → SUBMITTED → APPROVED / REJECTED → CONVERTED_TO_PO
Priorities:
| Priority | Description |
|---|---|
LOW | Routine queue |
NORMAL | Standard turnaround |
HIGH | Required для scheduled maintenance |
AOG | Aircraft on Ground, expedite |
Endpoints
| Method | Path | Description |
|---|---|---|
POST | /pr | Create DRAFT с lines |
POST | /pr/{id}/submit | DRAFT → SUBMITTED |
POST | /pr/{id}/approve | SUBMITTED → APPROVED (требует approver role) |
POST | /pr/{id}/reject | SUBMITTED → REJECTED (с reason) |
POST | /pr/{id}/cancel | Any state → CANCELLED (с reason) |
POST | /pr/{id}/convert-to-po | APPROVED → CONVERTED_TO_PO |
PR Line требует:
part_id(UUID из parts catalog) — обязателенpart_number_snapshot— copy of P/N (snapshot для traceability)description_snapshot— copy of descriptionquantity(Decimal, > 0)estimated_unit_price(optional, для approval threshold)required_by_date(optional)
Purchase Order (PO)
Lifecycle: DRAFT → ISSUED → ACKNOWLEDGED → PARTIAL_RECEIVED → RECEIVED → CLOSED
| Method | Path | Description |
|---|---|---|
POST | /po | Create PO (обычно из approved PR) |
POST | /po/{id}/issue | DRAFT → ISSUED (send к vendor) |
POST | /po/{id}/acknowledge | Vendor confirmed |
POST | /po/{id}/close | RECEIVED → CLOSED |
POST | /po/{id}/cancel | Any non-final → CANCELLED |
GRN (Goods Receipt Note)
Приёмка parts с inspection.
Inspection result: PENDING → PASS / FAIL
При PASS → fire-and-forget POST в inventory.stock.receipt (graceful fallback если inventory down).
При FAIL → notification procurement + warehouse, stock остаётся в QUARANTINE.
Form 1 / 8130-3 verification в line_items.documents JSONB (per aviation expert audit A-9):
{
"form_type": "EASA Form 1",
"form_number": "EASA.21G.0123.2026.001",
"issued_at": "2026-05-15",
"issued_by": "Bombardier"
}| Method | Path | Description |
|---|---|---|
POST | /grn | Create GRN |
POST | /grn/{id}/inspect | Set inspection PASS/FAIL |