# Architektura zamówień do dostawców 2.7.2

## Przepływ

`moduł źródłowy → wniosek → routing → PO → approval → snapshot → mail_queue → dostawca → portal potwierdzenia → audyt`

## Domeny

`pharmacy`, `clean_store`, `sterile_sets`, `implants`, `laboratory`, `laundry`, `maintenance`, `it`, `office`, `service`, `other`.

Każda inna funkcja Baltique OS może użyć `balt272p_ingest_request($request, $items, $userId)` i wskazać `source_domain`, źródło, lokalizację, termin oraz pozycje.

## Potrójny opt-in automatycznej wysyłki

1. `enterprise_procurement_auto_email_enabled=1`;
2. `enterprise_procurement_suppliers.auto_email_enabled=1` i dostawca `approved` + `verified_at`;
3. aktywna reguła z `auto_queue_email=1`.

Dodatkowo muszą przejść: ręczne zatwierdzenie, jeśli wymagane; limit wartości; okno czasowe; prawidłowy e-mail; mapowanie pozycji; idempotencja.

## Idempotencja

Klucz wysyłki jest oparty na ID PO, deterministycznym hashu zawartości i adresie odbiorcy. Losowy token portalu nie uczestniczy w kluczu. To chroni przed podwójną wysyłką tego samego snapshotu.

## Dane pacjenta

Opis zamówienia jest materiałowy/usługowy. Nie zawiera imienia, PESEL, rozpoznania, procedury pacjenta ani notatek klinicznych. `mail_queue.patient_id`, jeżeli istnieje, otrzymuje NULL.

## Odpowiedź dostawcy

Dostawca może zgłosić: akceptację, częściową dostępność, potrzebę wyjaśnienia albo brak możliwości realizacji. Link wygasa po 14 dniach, token jest zapisany wyłącznie jako SHA256, a liczba odpowiedzi z jednego IP jest limitowana.
