Skip to content

Asset

@nx/asset là một package dạng thư viện/component, không phải service độc lập. Các ứng dụng host (commerce, finance, ledger) mount các IGNIS component của nó để có được các endpoint file dựa trên S3/Minio, theo dõi metadata MetaLink, và dữ liệu tham chiếu ngân hàng Việt Nam. Nó không có application class, port, migration, hay DB schema riêng.

1. Tham chiếu nhanh

Thuộc tínhGiá trị
Package@nx/asset
LoạiThư viện / IGNIS component package
RuntimeBun (chạy bên trong một ứng dụng host)
Base ClassN/A — export các lớp con BaseComponent, không phải Application
Vị trípackages/asset
Base PathN/A — controller mount dưới base path của host
Dev PortN/A — không có entry point độc lập
Container PortN/A — thư viện
Snowflake IDN/A — không phát sinh ID riêng (dùng IdGenerator của host)
DB SchemaN/A — đọc/ghi public.MetaLink được định nghĩa trong @nx/core
Binding Namespace@nx/commerce (giá trị của BindingKeys.BASE; xem Configuration)
Ownerplatform

2. Mục đích & Phạm vi

Bao gồmKhông bao gồm
Upload / download / stream / delete / list object S3/MinioỨng dụng độc lập, port, healthcheck
Bản ghi metadata MetaLink cho object đã lưuSở hữu schema MetaLink (nằm trong @nx/core)
Stream bundle bản dịch i18n (i18n.json)Biến đổi ảnh / tạo thumbnail
Registry ngân hàng Việt Nam + logo PNGĐường dẫn StaticAssetComponent presigned-URL (đã comment — không hoạt động)

3. Tech Stack

Bên ngoài:

Thư việnMục đích
@venizia/ignisDI, BaseComponent, BaseRestController, ControllerFactory, DefaultCRUDRepository
@venizia/ignis-helpersBunS3Helper (S3/Minio client đang hoạt động), BaseStorageHelper, helper multipart + content-disposition
honoHTTP route context (qua IGNIS)
drizzle-ormTruy cập MetaLink qua PostgresCoreDataSource
@hono/zod-openapiSchema request/response cho route

Nội bộ:

PackageMục đích
@nx/coreModel/schema MetaLink, PostgresCoreDataSource, EnvironmentKeys, BindingKeys, crudPermissions

4. Cấu trúc Project

packages/asset/
├── src/
│   ├── index.ts                       # Re-export components + resources (không bootstrap)
│   ├── common/
│   │   ├── keys.ts                    # BindingKeys (binding S3 helper)
│   │   └── rest-paths.ts              # /assets, /meta-links
│   ├── components/
│   │   ├── application-asset.component.ts  # ApplicationAssetComponent
│   │   └── banks-vn.component.ts            # ApplicationAssetBanksVNComponent
│   ├── controllers/
│   │   ├── asset/                     # AssetController (/assets objects + i18n)
│   │   ├── banks-vn/                   # BanksVNController (/assets/banks-vn)
│   │   ├── meta-link/                  # MetaLinkController (/meta-links CRUD)
│   │   └── permissions.ts             # AssetPermissions (= MetaLink CRUD perms)
│   ├── datasources/                   # Re-export PostgresCoreDataSource từ @nx/core
│   ├── repositories/                  # MetaLinkRepository (CRUD mỏng trên core model)
│   ├── resources/                     # banks-vn.json + banks-vn/*.png logos
│   └── utilities/                     # toAbsoluteUrl
├── package.json
└── tsconfig.json

5. Architecture

Chi tiết: xem Architecture.

6. Snapshot Domain

ERD đầy đủ + bảng entity: xem Domain Model.

7. Tổng quan bề mặt

REST controllers (tham chiếu đầy đủ render trực tiếp từ /doc/openapi.json của host; asset không có port riêng):

ControllerBase pathEndpointsAuth
AssetController/assets7hỗn hợp (đọc public, ghi JWT/Basic)
BanksVNController/assets/banks-vn2public
MetaLinkController/meta-links7 (CRUD)JWT/Basic (hiện bỏ qua authorize)

Async topics (tham chiếu đầy đủ trong API Events):

HướngSố lượng
Inbound (Kafka)0
Outbound (Kafka)0
WebSocket out0
BullMQ jobs in0
BullMQ jobs out0

N/A — asset không có bề mặt async. Nó là thư viện REST + S3 đồng bộ.

8. Components

ComponentFileMục đích
ApplicationAssetComponentsrc/components/application-asset.component.tsKhởi tạo BunS3Helper, bind nó dưới APPLICATION_S3_STORAGE_HELPER, đăng ký AssetController + MetaLinkController
ApplicationAssetBanksVNComponentsrc/components/banks-vn.component.tsĐăng ký BanksVNController (registry ngân hàng VN + logo)

9. Services

ServiceFileMô tả ngắn
N/A — không có service layer; logic nằm trực tiếp trong controller + BunS3Helper

10. Repositories

RepositoryBảngNguồnMethod tùy chỉnh
MetaLinkRepositorypublic.MetaLinkmodel từ @nx/core; DefaultCRUDRepository mỏng

11. Entry Points

FileMục đích
src/index.tsRe-export components + resources cho host app; khôngbootstrapApplication()
src/components/*.component.tsHai IGNIS component có thể mount

N/A — không có application.ts, migrate.ts, hay service entry. Mount qua host.component(ApplicationAssetComponent).

12. Configuration

Env vars (APP_ENV_S3_*, APP_ENV_S3_BUCKET, APP_ENV_APPLICATION_EXPLORER_URL) + bindings: xem Configuration.

13. Operations

Deployment (lib — không có pod), observability, security, runbook: xem Operations.

14. Trang liên quan

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.