Mục tiêu bộ tài liệu
- Mỗi menu là một tài liệu độc lập, dễ dùng khi họp hoặc onboarding.
- Mỗi tài liệu trình bày theo slide ngắn gọn, tập trung quyết định và thao tác.
- Nội dung đã đối chiếu từ source thực tế trong workspace.
Bốn nhóm tài liệu: tổng quan, hướng dẫn kỹ thuật, database, hướng dẫn sử dụng.
User Channels:
- gohub.vn (Next.js storefront VN)
- gohub.com (Next.js storefront global, multi-locale)
- gohub-app (Flutter mobile)
Admin Channels:
- gohub-admin (React + Vite, backoffice vận hành)
- gohub-product-admin (React + Vite, backoffice sản phẩm)
Backend:
- gohub-product-api (Express + Prisma + PostgreSQL)
- GOHUB API core (domain api.gohub.com / api.stg-space.gohub.com)
| Dịch vụ | Staging | Production |
|---|---|---|
| GOHUB API | api.stg-space.gohub.com -> 34.59.152.45 | api.gohub.com -> TBD |
| GOHUB Admin | admin.stg-space.gohub.com (Cloudflare) | admin.space.gohub.com (Cloudflare) |
| GOHUB VN | vn.stg-space.gohub.com -> 34.59.152.45 | gohub.vn -> TBD |
| GOHUB COM | com.stg-space.gohub.com -> 34.59.152.45 | gohub.com -> TBD |
| PM + API PM | pm.stg-space.gohub.com (Cloudflare), api-pm.stg-space.gohub.com -> 34.124.129.187 | pm.space.gohub.com (Cloudflare), api-pm.space.gohub.com -> TBD |
Phân tách theo trust boundary: kênh công khai (B2C) và công cụ nội bộ (staff) là hai nhóm client; phía sau là dịch vụ HTTP và nền tảng dữ liệu / edge. Tên artifact thống nhất kiểu repo / service.
User ngoài biên, không xác thực nội bộ admin
:3006:3005Nhân sự vận hành / product; SPA tách biệt storefront
VITE_API_URL) · refresh /admin/auth/refreshHTTP stateless; tách domain Core vs Product (PM)
api.gohub.com/api-docs · health /healthTách DB theo bounded context; Cloudflare không thay thế API
gohub-apigohub-product-apiLuồng trái → phải giống AWS Architecture Center: Internet / edge managed → tier ứng dụng → API → datastore. Màu cam: lớp edge; xanh đậm: dữ liệu.
| Dịch vụ | Staging | Production |
|---|---|---|
| GOHUB API | api.stg-space.gohub.com -> 34.59.152.45 | api.gohub.com -> TBD |
| GOHUB Admin | admin.stg-space.gohub.com (Cloudflare) | admin.space.gohub.com (Cloudflare) |
| GOHUB VN | vn.stg-space.gohub.com -> 34.59.152.45 | gohub.vn -> TBD |
| GOHUB COM | com.stg-space.gohub.com -> 34.59.152.45 | gohub.com -> TBD |
| PM + API PM | pm.stg-space.gohub.com (Cloudflare), api-pm.stg-space.gohub.com -> 34.124.129.187 | pm.space.gohub.com (Cloudflare), api-pm.space.gohub.com -> TBD |
gohub-vn: Next.js 16, dev port 3006, Docker + GAR pipeline.gohub-com: Next.js 16 đa ngôn ngữ, dev port 3005, Docker + GAR pipeline.gohub-admin: React 19 + Vite 7, deploy Cloudflare Pages project gohub-admin.gohub-product-admin: React 19 + Vite 7, deploy Cloudflare Pages cho main và staging.gohub-app: Flutter app, build IPA/AAB qua script theo env.gohub-product-api: Node 20+, Express 4, Prisma 7, Postgres adapter./product-master, /pm-listing, /pm-item, /pm-sku, /vendors, /countries./api-docs, health check: /health./lark-*.--dart-define.| Nhóm | Biến chính | Rủi ro cần kiểm |
|---|---|---|
| Admin | VITE_API_URL, VITE_AUTH_API_URL, VITE_PRODUCT_API_URL | Sai endpoint dẫn tới lỗi auth/cross-domain |
| Storefront | NEXT_PUBLIC_API_URL, NEXT_SERVER_API_URL | Lệch public/server API gây sai data runtime |
| Product API | DATABASE_URL, AUTH_SERVICE_URL | Kết nối DB/auth fail ở runtime |
| Mobile | DEV_API_URL, PROD_API_URL qua --dart-define | Build nhầm env trước release store |
gohub-adminVITE_API_URL, refresh token qua /admin/auth/refresh.gohub-admin.gohub-product-adminVITE_API_URL, VITE_AUTH_API_URL, VITE_PRODUCT_API_URL.main và staging.gohub-product-apiDATABASE_URL, có auth service URL riêng./pm-listing, /pm-item, /pm-sku, /product-master.../lark-*.3003.gohub-vn và gohub-comgohub-com có routing /[locale], i18n JSON, sitemap theo locale.3006, COM 3005.Mỗi API backend gắn một (hoặc một cụm) PostgreSQL riêng. Tài liệu dưới đây bám trực tiếp source có trong workspace.
| Nguồn | API / service | DB & công cụ | Source of truth trong repo |
|---|---|---|---|
| 1 · Product / PM | gohub-product-api (Express, ví dụ domain api-pm.*) |
PostgreSQL — Prisma Client + adapter @prisma/adapter-pg, pool pg |
gohub-product-api/prisma/schema.prisma, src/core/database/db.ts, prisma/migrations/ |
| 2 · GOHUB Core | Backend phục vụ gohub-admin, storefront qua BFF (ví dụ api.stg-space.gohub.com / api.gohub.com) |
PostgreSQL (tách instance; schema không có trong monorepo này) | Chỉ tham chiếu hợp đồng API (env VITE_API_URL trong admin). Cần bổ sung từ team sở hữu repo Core. |
DATABASE_URL (bắt buộc), pool tối đa mặc định 50 (trần 100), idle timeout cấu hình qua env — xem src/core/database/db.ts, src/core/config/env.ts.prisma/schema.prisma (generator prisma-client-js).prisma/migrations (kèm seed tùy chọn prisma/seed.ts trong config).lark_*), màn PM (pm_*), audit (audit_logs), tích hợp vendor / third-party token.Tên bảng theo @@map trong Prisma — dùng làm data dictionary ngắn.
| Nhóm | Bảng tiêu biểu | Ghi chú |
|---|---|---|
| Master & danh mục | categories, countries, support_countries, currencies, operators, platforms, listings, specs, common_options | Platform → Listing → Product list; specs dùng chung cho master / variant / list variant. |
| Vendor & đối tác | vendors, vendor_tokens, third_party, third_party_token | Token API partner / third-party tách bảng. |
| Catalog sản phẩm | product_master, product_vendor, product_variants, product_groups, product_group_variants, product_master_specs, product_variant_specs | Clone vendor view product_vendor; variant gắn product_code / tenant. |
| Kênh & giá list | product_lists, product_list_variants, product_list_variant_specs | PK composite list variant; pricing theo list. |
| Topup | product_topup, product_variant_topups | Gói topup + liên kết variant. |
| Lark & PM mirror | lark_product, lark_sku, lark_listing, lark_item, lark_country; pm_product, pm_sku, pm_listing, pm_item | Mirror cột từ Lark Base; pm_* có cờ sync (manual vs sync). |
| Audit | audit_logs | JSON old/new, index theo bảng + record. |
gohub-admin và các client gọi REST qua base URL production (https://api.gohub.com/v1 trong workflow deploy admin).Mỗi mục 02.x / 03 mô tả kiến trúc hoặc repo; cột “phân vùng DB” chỉ ra khi đọc tài liệu đó cần nhớ DB nào.
| Submenu | Trọng tâm tài liệu | Phân vùng DB / gợi ý bảng |
|---|---|---|
| 02.1 System Landscape | Ranh giới app · API · nền tảng | Cả hai: phân biệt service nào gọi Product DB vs Core DB (không trộn connection). |
| 02.2 Architecture Diagram | Edge → App → API → Data | Hai node PostgreSQL tách: catalog/PM vs vận hành chung. |
| 02.3 Domain & Routing Map | Hostname, môi trường | Cùng phân vùng logic; DATABASE_URL / secret theo env (staging ≠ prod). |
| 02.4 Frontend Platforms | Storefront, admin FE | FE không nối DB trực tiếp; dữ liệu đổ về đúng API → đúng phân vùng. |
| 02.5 Backend Services | product-api vs core API | Product DB (Prisma) · Core DB (ngoài repo). |
| 02.6 Data & Integration | Đồng bộ Lark, tích hợp | Chủ yếu Product DB: lark_*, pm_*, common_options, audit_logs. |
| 02.7 Deployment Pipelines | Build / deploy | Migration chỉ trong pipeline gohub-product-api; Core tách pipeline/secret. |
| 02.8 Environment Matrix & Risks | Ma trận env | Hai dòng secret DB độc lập (Product vs Core); rủi ro trộn env. |
| 03. Source Catalog | Repo, đường dẫn source | Schema: gohub-product-api/prisma/schema.prisma. |
| Submenu | Trọng tâm | Phân vùng DB |
|---|---|---|
| Tổng quan | Bản đồ hệ sinh thái, domain | Tham chiếu cả hai phân vùng ở mức domain (chưa chi tiết bảng Core). |
| 05. GOHUB Admin SOP | Backoffice vận hành | Thao tác qua API Core → Core DB (auth, đơn, nội dung, cấu hình…). |
| 06. Product Admin SOP | PM, catalog, publish | Product DB: product_*, pm_*, master/listing/item. |
Cách đọc: khi viết runbook hoặc RCA, lấy đúng phân vùng theo cột thứ ba — tránh giả định một DB duy nhất.
schema.prisma, cập nhật lại slide “nhóm bảng” và bảng ánh xạ submenu nếu có bảng / luồng mới.