Integration
@nx/assettích hợp bằng cách được mount như các IGNIS component bên trong các ứng dụng host - không phải bằng các lời gọi mạng giữa các service. Phụ thuộc bên ngoài duy nhất của nó là S3/Minio.
1. Service liên quan
Hướng:←được mount bởi (host sử dụng asset).
| Service | Hướng | Bề mặt | Contract | Auth | Chế độ lỗi | Idempotency |
|---|---|---|---|---|---|---|
@nx/commerce | ← | host.component(ApplicationAssetComponent) | component in-process | host JWT/Basic | component init ném lỗi → host boot thất bại | không áp dụng |
@nx/finance | ← | host.component(ApplicationAssetBanksVNComponent) | component in-process | route public | - | không áp dụng |
@nx/ledger | ← | ApplicationAssetComponent + MetaLinkRepository để upload PDF/XLSX được tạo | in-process | host JWT/Basic | lỗi upload được ghi log cho từng file | upload không idempotent |
@nx/core | → | import MetaLink, PostgresCoreDataSource, EnvironmentKeys, crudPermissions | phụ thuộc TypeScript | - | thời điểm compile | không áp dụng |
2. Hệ thống bên ngoài
| Hệ thống | Hướng | Bề mặt | Auth | Chế độ lỗi |
|---|---|---|---|---|
| S3 / Minio | → | BunS3Helper (@venizia/ignis-helpers/bun-s3) | APP_ENV_S3_ACCESS_KEY / APP_ENV_S3_SECRET_KEY | helper ném lỗi → 4xx/5xx tới client; upload cũng bắt lỗi MetaLink |
3. Luồng cross-service quan trọng
3.1 Commerce mount asset cho media sản phẩm
| Bước | Chi tiết |
|---|---|
| 2 | Tham số kết nối S3 được đọc khi construct qua applicationEnvironment.get() |
| 4 | Controller mount dưới base path của host (vd /v1/api/commerce/assets) |
3.2 Ledger upload một tài liệu được tạo
4. Tính ổn định của Contract
| Bề mặt | Độ ổn định | Versioning |
|---|---|---|
host.component(ApplicationAssetComponent) | ổn định | export TypeScript |
REST /assets, /meta-links, /assets/banks-vn | ổn định | tiền tố URL /v1/ của host |
BindingKeys.APPLICATION_S3_STORAGE_HELPER | ổn định | string key (lưu ý: namespace @nx/commerce) |
Đường dẫn StaticAssetComponent presigned-URL | không hoạt động | đã comment trong source - không phụ thuộc vào nó |