Bỏ qua tới nội dung
~nguyen-huu-trung
← Quay lại dự án

Conexa · Nền tảng cho agency thương mại điện tử

Nền tảng vận hành thương mại điện tử tích hợp Shopee

Backend đồng bộ đơn hàng, tồn kho, quảng cáo và báo cáo của nhiều shop Shopee, console quản trị cho đội vận hành và website công khai — backend Node.js được nâng cấp dần sang Go mà không gián đoạn hệ thống.

Vai trò
Lead developer — backend, admin console (cùng một developer khác), website
Thời gian
2025 – 2026
Công nghệ
TypeScriptNode.jsGoNext.jsReactMUIPostgreSQLRedisClaude APIDockerGitHub ActionsNginx

note: Dự án riêng tư — mô tả ở mức kiến trúc, không kèm mã nguồn hay dữ liệu khách hàng.

  • Shopee

    đơn hàng, tồn kho, quảng cáo, báo cáo

  • 0

    gián đoạn khi nâng cấp backend

  • 2

    ngôn ngữ trên console và website

  • Log

    mọi thay đổi đều ghi lại

Bài toán

Agency quản lý quảng cáo và vận hành cho nhiều shop Shopee cùng lúc. Họ cần một nơi để xem đơn hàng, tồn kho, hiệu quả quảng cáo và báo cáo của từng shop, đặt lịch thay đổi ngân sách, và nhận cảnh báo khi có vấn đề.

Hệ thống ban đầu tôi viết bằng Node.js chạy trong một tiến trình duy nhất. Khi số shop và số tác vụ chạy nền tăng lên, nó tốn tài nguyên và khó mở rộng — nhưng hệ thống đang chạy thật và ghi thẳng vào ngân sách quảng cáo của khách, nên không thể dừng để viết lại.

Cách giải

  1. 01

    Tích hợp Shopee

    Đồng bộ đơn hàng, tồn kho, sản phẩm, chiến dịch quảng cáo và báo cáo của từng shop vào PostgreSQL. Khi Shopee giới hạn số lần gọi thì chờ rồi thử lại, khi phiên đăng nhập hết hạn thì tự đăng nhập lại.

  2. 02

    Nâng cấp từng phần, không viết lại một lần

    Backend được tách thành các service Go nhỏ theo từng mảng (tài khoản, chiến dịch, báo cáo, nội dung) và chuyển dần từng phần. Trong lúc chuyển, bản cũ và bản mới chạy song song, kết quả của hai bên được so với nhau trước khi tắt bản cũ.

  3. 03

    Job chạy nền an toàn

    Các tác vụ theo lịch (cập nhật ngân sách, thu thập số liệu, xuất báo cáo) chạy nền, có khoá để không chạy trùng hai lần và tự thử lại khi lỗi. Báo cáo lớn chạy thành job có tiến độ, người dùng đóng tab vẫn quay lại tải được.

  4. 04

    Console quản trị theo vai

    Console Next.js cho đội vận hành: chiến dịch, lịch chạy, quy tắc ngân sách, cảnh báo, báo cáo, song ngữ Việt/Anh. Quyền chia theo cấp (quản lý, leader, nhân viên) và theo từng shop; API key chỉ nằm phía server, không ra tới trình duyệt.

  5. 05

    AI đề xuất, người duyệt

    Mỗi giờ, Claude xem số liệu và đề xuất tăng hay giảm ngân sách. Quy tắc trong code quyết định đề xuất đó được tự áp dụng hay phải chờ người duyệt, và mọi quyết định đều được ghi log kèm lý do.

  6. 06

    Vận hành production

    Log, cảnh báo vào nhóm chat khi có lỗi, health check cho từng service, deploy tự động bằng GitHub Actions. Khi cần chuyển sang máy chủ mới, dữ liệu được đồng bộ trước theo runbook nên chỉ mất vài phút downtime; database được sao lưu hằng đêm.

Kiến trúc

Giao diện

admin console

Next.js · phân quyền · vi/en

website

render phía server · blog

Cổng vào

API gateway

JWT, định tuyến

Service

accounts

tài khoản, đăng nhập

campaigns

lịch chạy, ngân sách

reporting

số liệu, báo cáo

content

nội dung website

Xử lý nền

workers

job theo lịch

AI suggestions

Claude + người duyệt

Dữ liệu

PostgreSQL

Redis

cache, khoá

Hai giao diện Next.js trước một gateway; các service Go theo mảng xử lý dữ liệu, việc nặng chạy ở worker.

Kết quả

  • Đội vận hành làm việc hằng ngày trên console song ngữ, mỗi người thấy đúng các shop và dữ liệu thuộc quyền của mình.
  • Backend Node.js đã được thay bằng các service Go mà không dừng hệ thống; tác vụ nền chạy được trên nhiều worker thay vì dồn vào một tiến trình.
  • Đề xuất ngân sách bằng AI chạy thật nhưng luôn trong khuôn khổ quy tắc, việc cần người duyệt thì chờ người duyệt.
  • Website công khai và blog song ngữ lấy nội dung từ cùng backend, render phía server để Google đọc được.
  • Chi tiết nghiệp vụ và mã nguồn thuộc về khách hàng; phần trình bày ở đây dừng ở mức kiến trúc và cách làm.