Bán đồ nội thất lắp ráp online: Trải nghiệm AR + Video hướng dẫn tương tác – Thay thế sách hướng dẫn giấy bằng video trên mobile
Mục tiêu: Xây dựng một kênh thương mại điện tử cho đồ nội thất lắp ráp, tích hợp thực tế tăng cường (AR) để khách hàng “đặt đồ trong không gian thực” và cung cấp video hướng dẫn từng bước trên thiết bị di động, thay thế hoàn toàn tài liệu hướng dẫn giấy truyền thống.
1. Thị trường & xu hướng (2024‑2025)
| Nguồn | Dữ liệu 2024‑2025 | Ý nghĩa cho dự án |
|---|---|---|
| Statista | Thị trường nội thất online toàn cầu đạt US$ 115 tỷ, tăng trưởng CAGR 12 % (2024‑2029). | Thị phần lớn, tiềm năng mở rộng. |
| Cục TMĐT VN | Doanh thu thương mại điện tử Việt Nam 2024: VNĐ 210 tỷ, trong đó đồ nội thất chiếm 15 %. | Thị trường nội địa đủ lớn để thử nghiệm. |
| Google Tempo | 68 % người dùng tìm “cách lắp ráp nội thất” trên mobile, thời gian trung bình 3 phút. | Nhu cầu video hướng dẫn ngắn, tối ưu cho mobile. |
| Shopify Commerce Trends 2025 | 54 % các shop đã triển khai AR, trung bình tăng 23 % tỷ lệ chuyển đổi. | AR là “must‑have” để nâng tỉ lệ mua. |
| Gartner | 2025: 40 % các doanh nghiệp B2C sẽ sử dụng “immersive commerce” (AR/VR) để giảm churn. | Đầu tư AR giúp giữ chân khách hàng. |
⚡ Kết luận: Kết hợp AR + video hướng dẫn là yếu tố quyết định để tăng chuyển đổi và giảm chi phí hỗ trợ sau bán (giảm 30 % yêu cầu hỗ trợ lắp ráp).
2. Kiến trúc tổng quan (Tech Stack)
+-------------------+ +-------------------+ +-------------------+
| Frontend (SPA) | ---> | API Gateway | ---> | Business Logic |
| React + Three.js| | Kong / Nginx | | Node.js (Nest) |
+-------------------+ +-------------------+ +-------------------+
| | |
v v v
+-------------------+ +-------------------+ +-------------------+
| AR Service | | Media Service | | Payment Service |
| Unity + WebGL | | FFmpeg + S3 | | Stripe / MoMo |
+-------------------+ +-------------------+ +-------------------+
| | |
v v v
+-------------------+ +-------------------+ +-------------------+
| DB (Postgres) | | CDN (Cloudflare)| | Analytics (GA4) |
+-------------------+ +-------------------+ +-------------------+
🛡️ Security: API Gateway thực thi JWT + OAuth2, WAF Cloudflare, dữ liệu nhạy cảm mã hoá AES‑256.
3. So sánh 4 lựa chọn công nghệ chính
| Tiêu chí | NestJS + PostgreSQL | Medusa (Node) + MongoDB | Shopify Hydrogen | Magento 2 (PWA) |
|---|---|---|---|---|
| Khả năng mở rộng | ✅ Horizontal scaling via Kubernetes | ✅ Built‑in multi‑store | ❌ Giới hạn API | ✅ Mature clustering |
| Chi phí hạ tầng | Trung bình (EC2 + RDS) | Thấp (Mongo Atlas) | Cao (Shopify Plus) | Cao (Dedicated) |
| Tích hợp AR | ✅ Custom Unity WebGL | ⚠️ Cần custom plugin | ✅ Shopify AR app | ⚠️ Phức tạp |
| Quản lý nội dung video | ✅ FFmpeg + S3 | ✅ Medusa media plugin | ✅ Shopify Files | ✅ Magento Media Gallery |
| Developer experience | ✅ TypeScript, strong typing | ✅ JavaScript, plugin ecosystem | ✅ React + Hydrogen | ✅ PHP, steep learning curve |
| Thời gian triển khai | 8‑10 tuần | 6‑8 tuần | 12‑14 tuần | 10‑12 tuần |
| Độ linh hoạt UI/UX | ✅ Full custom | ✅ Moderate | ❌ Theme‑bound | ✅ Full custom |
Kết luận: NestJS + PostgreSQL được chọn vì cân bằng giữa khả năng mở rộng, chi phí và độ linh hoạt tích hợp AR/video.
4. Chi phí chi tiết 30 tháng
| Hạng mục | Năm 1 | Năm 2 | Năm 3 | Tổng cộng |
|---|---|---|---|---|
| Hạ tầng (EC2, RDS, S3, CloudFront) | 120 USD/tháng → 1 440 USD | 130 USD/tháng → 1 560 USD | 140 USD/tháng → 1 680 USD | 4 680 USD |
| Licenses (Unity Pro, FFmpeg, Cloudflare Pro) | 300 USD/tháng → 3 600 USD | 300 USD/tháng → 3 600 USD | 300 USD/tháng → 3 600 USD | 10 800 USD |
| Nhân sự (Dev 2, QA 1, PM 0.5) | 30 k USD | 32 k USD | 34 k USD | 96 k USD |
| Marketing (AR demo, video production) | 15 k USD | 12 k USD | 12 k USD | 39 k USD |
| Công cụ CI/CD, Monitoring | 200 USD/tháng → 2 400 USD | 200 USD/tháng → 2 400 USD | 200 USD/tháng → 2 400 USD | 7 200 USD |
| Dự phòng (10 % tổng) | 1 500 USD | 1 560 USD | 1 620 USD | 4 680 USD |
| Tổng cộng | 53 440 USD | 53 620 USD | 55 980 USD | 163 040 USD |
⚡ Lưu ý: Các chi phí đã bao gồm VAT, phí chuyển đổi tiền tệ (USD → VND) theo tỷ giá trung bình 2024 (23 500 VND/USD).
5. Các Phase triển khai (6 Phase)
Phase 1 – Khảo sát & Định nghĩa yêu cầu
| Mục tiêu | Thu thập yêu cầu AR, video, quy trình lắp ráp, chuẩn bảo mật |
|---|---|
| Công việc con | 1. Phỏng vấn 10 khách hàng mục tiêu 2. Đánh giá catalog hiện có 3. Xác định chuẩn AR (model polycount ≤ 50k) 4. Định nghĩa flow video (max 3 phút) 5. Lập danh sách API cần thiết 6. Đánh giá compliance (GDPR, PCI‑DSS) |
| Người chịu trách nhiệm | PM (lead), BA, UI/UX Designer |
| Thời gian | Tuần 1‑2 |
| Dependency | – |
Phase 2 – Kiến trúc & Setup môi trường
| Mục tiêu | Xây dựng hạ tầng CI/CD, Kubernetes cluster, DB schema |
|---|---|
| Công việc con | 1. Terraform tạo VPC, Subnet 2. Helm chart Deploy NestJS 3. Docker Compose local dev 4. Cấu hình Nginx reverse‑proxy 5. Thiết lập Cloudflare WAF 6. Tích hợp GitHub Actions |
| Người chịu trách nhiệm | DevOps Lead, Backend Engineer |
| Thời gian | Tuần 3‑4 |
| Dependency | Phase 1 |
Phase 3 – Phát triển Core & AR Service
| Mục tiêu | Xây dựng API, tích hợp Unity WebGL AR, chuẩn video streaming |
|---|---|
| Công việc con | 1. API CRUD sản phẩm 2. Medusa‑like plugin cho lắp ráp 3. Unity project export WebGL 4. FFmpeg pipeline chuyển video 1080p → HLS 5. Cloudflare Worker cache video 6. Unit test (Jest) |
| Người chịu trách nhiệm | Backend Engineer, Unity Developer |
| Thời gian | Tuần 5‑9 |
| Dependency | Phase 2 |
Phase 4 – Frontend & UX
| Mục tiêu | Xây dựng SPA React, tích hợp Three.js, AR, video player |
|---|---|
| Công việc con | 1. Scaffold React + Vite 2. Component ProductDetail 3. AR button gọi Unity iframe 4. Video player (HLS.js) 5. Responsive design 6. A/B test UI |
| Người chịu trách nhiệm | Frontend Lead, UI/UX Designer |
| Thời gian | Tuần 10‑14 |
| Dependency | Phase 3 |
Phase 5 – Kiểm thử & Tối ưu
| Mục tiêu | QA, Load test, Security audit, chuẩn SEO |
|---|---|
| Công việc con | 1. Cypress end‑to‑end 2. k6 load test 500 RPS 3. OWASP ZAP scan 4. Lighthouse SEO 90+ 5. Đánh giá AR latency 6. Fix bugs |
| Người chịu trách nhiệm | QA Lead, Security Engineer |
| Thời gian | Tuần 15‑17 |
| Dependency | Phase 4 |
Phase 6 – Go‑Live & Transfer
| Mục tiêu | Đưa sản phẩm vào production, bàn giao tài liệu, đào tạo |
|---|---|
| Công việc con | 1. Blue‑Green deployment 2. DNS cutover 3. Đào tạo nội bộ (video, SOP) 4. Bàn giao tài liệu (xem bảng 4) 5. Post‑launch monitoring 6. Thu thập feedback |
| Người chịu trách nhiệm | PM, Ops, Trainer |
| Thời gian | Tuần 18‑20 |
| Dependency | Phase 5 |
6. Workflow vận hành tổng quan (text‑art)
┌─────────────────────┐ ┌─────────────────────┐
│ Người dùng (Mobile)│────►│ Frontend React │
└─────────┬───────────┘ └───────┬───────────────┘
│ │
▼ ▼
┌───────────────┐ ┌───────────────┐
│ AR Viewer │◄───────►│ Video Player │
└───────┬───────┘ └───────┬───────┘
│ │
▼ ▼
┌─────────────────────┐ ┌─────────────────────┐
│ API Gateway (Kong)│ │ Media Service (FFmpeg)│
└───────┬─────────────┘ └───────┬─────────────┘
│ │
▼ ▼
┌─────────────────────┐ ┌─────────────────────┐
│ Business Logic │ │ CDN (Cloudflare) │
└───────┬─────────────┘ └───────┬─────────────┘
│ │
▼ ▼
┌─────────────────────┐ ┌─────────────────────┐
│ PostgreSQL DB │ │ Analytics (GA4) │
└─────────────────────┘ └─────────────────────┘
7. Gantt chart chi tiết (ASCII)
Phase | Week 1-2 | Week 3-4 | Week 5-9 | Week10-14 | Week15-17 | Week18-20
--------+----------+----------+----------+-----------+-----------+-----------
Phase 1 | ████████ | | | | |
Phase 2 | | ████████ | | | |
Phase 3 | | | █████████| | |
Phase 4 | | | | ████████ | |
Phase 5 | | | | | ████████ |
Phase 6 | | | | | | ████████
⚠️ Dependency: Mỗi phase chỉ bắt đầu khi phase trước hoàn thành đúng 100 % các deliverable.
8. Rủi ro & phương án dự phòng
| Rủi ro | Tác động | Phương án B | Phương án C |
|---|---|---|---|
| AR model tải chậm (>3 s) | Giảm chuyển đổi 12 % | Sử dụng LOD (Level‑of‑Detail) tự động | Chuyển sang WebXR fallback (2D overlay) |
| Video streaming buffering | Tăng support tickets 20 % | Deploy thêm Edge node Cloudflare | Sử dụng Adaptive Bitrate (ABR) |
| Vi phạm PCI‑DSS | Phạt 10 % doanh thu | Áp dụng tokenization Stripe | Chuyển sang gateway nội địa (MoMo) |
| Sự cố DB replica | Downtime 30 phút | Failover sang read‑replica | Backup restore từ snapshot 15 phút |
| Lỗi tích hợp Unity WebGL | 404 AR button | Sử dụng fallback static image | Tạm thời tắt AR, thông báo “Coming soon” |
9. KPI, công cụ đo & tần suất
| KPI | Mục tiêu | Công cụ đo | Tần suất |
|---|---|---|---|
| Conversion Rate (AR view → Add‑to‑Cart) | ≥ 4 % | Google Analytics 4 (Event “ar_view”) | Hàng ngày |
| Video Completion Rate | ≥ 70 % | Vimeo Analytics API | Hàng tuần |
| Average Assembly Time (video) | ≤ 3 phút | Custom metric “assembly_time” (GA4) | Hàng tháng |
| Page Load Time (AR page) | ≤ 2,5 s | Lighthouse CI (GitHub Actions) | Mỗi build |
| Support Ticket – Lắp ráp | ≤ 5 ticket/1000 đơn | Zendesk | Hàng tuần |
| Revenue per Visitor (RPV) | ↑ 15 % so với baseline | Shopify Reports | Hàng tháng |
| System Uptime | 99,9 % | CloudWatch + Pingdom | Hàng ngày |
ROI = (Tổng lợi ích – Chi phí đầu tư) / Chi phí đầu tư × 100%
Giải thích: Total_Benefits bao gồm tăng doanh thu + giảm chi phí hỗ trợ; Investment_Cost là tổng chi phí 30 tháng (163 040 USD).
10. Danh sách 15 tài liệu bàn giao bắt buộc
| STT | Tài liệu | Người viết | Nội dung chính |
|---|---|---|---|
| 1 | Architecture Diagram | Solution Architect | Kiến trúc hệ thống, các thành phần, flow dữ liệu. |
| 2 | API Specification (OpenAPI 3.0) | Backend Lead | Định nghĩa endpoint, request/response, auth. |
| 3 | Database Schema | DBA | ER diagram, migration scripts (Flyway). |
| 4 | AR Model Guidelines | Unity Dev | Quy tắc polycount, texture size, naming. |
| 5 | Video Production SOP | Content Lead | Kịch bản, chuẩn độ phân giải, HLS packaging. |
| 6 | CI/CD Pipeline Docs | DevOps | GitHub Actions workflow, secrets, rollback. |
| 7 | Infrastructure as Code (Terraform) | DevOps | .tf files, state backend, module description. |
| 8 | Security & Compliance Checklist | Security Engineer | GDPR, PCI‑DSS, OWASP controls. |
| 9 | Performance Test Report | QA Lead | Kết quả k6, load profile, bottleneck. |
| 10 | User Acceptance Test (UAT) Sign‑off | PM | Kết quả test case, bug list, sign‑off. |
| 11 | Monitoring Dashboard (Grafana) | Ops | Dashboard URLs, alert thresholds. |
| 12 | Disaster Recovery Plan | Ops | RTO, RPO, backup schedule. |
| 13 | Training Materials (Video + PDF) | Trainer | Hướng dẫn admin, quản lý sản phẩm, video upload. |
| 14 | Release Notes (v1.0) | PM | Tính năng, known issues, upgrade steps. |
| 15 | License & Vendor Agreements | Legal | Bản sao giấy phép Unity Pro, Cloudflare, Stripe. |
11. Checklist Go‑Live (42 item)
11.1 Security & Compliance (9 item)
| # | Kiểm tra | Trạng thái |
|---|---|---|
| S‑01 | SSL/TLS 1.3 trên tất cả domain | |
| S‑02 | HTTP Security Headers (CSP, HSTS) | |
| S‑03 | JWT token expiration ≤ 15 phút | |
| S‑04 | PCI‑DSS tokenization cho thẻ | |
| S‑05 | GDPR cookie consent banner | |
| S‑06 | Pen‑test OWASP ZAP pass ≥ 90 % | |
| S‑07 | Cloudflare WAF rule set bật | |
| S‑08 | IAM role least‑privilege | |
| S‑09 | Log retention 90 ngày (ELK) |
11.2 Performance & Scalability (9 item)
| # | Kiểm tra | Trạng thái |
|---|---|---|
| P‑01 | Load test 500 RPS, latency ≤ 200 ms | |
| P‑02 | AR page TTFB ≤ 1,2 s | |
| P‑03 | CDN cache hit ≥ 95 % | |
| P‑04 | Auto‑scaling policy (CPU > 70 % → scale) | |
| P‑05 | Database connection pool max 200 | |
| P‑06 | Redis cache warm‑up script chạy | |
| P‑07 | Health check endpoint 200 OK | |
| P‑08 | Blue‑Green deployment verified | |
| P‑09 | Zero‑downtime DNS switch |
11.3 Business & Data Accuracy (8 item)
| # | Kiểm tra | Trạng thái |
|---|---|---|
| B‑01 | SKU sync giữa DB & Search (Elasticsearch) | |
| B‑02 | Giá bán đúng theo cấu hình (price rules) | |
| B‑03 | Stock level cập nhật real‑time | |
| B‑04 | Video URL đúng (no 404) | |
| B‑05 | AR model version đúng với SKU | |
| B‑06 | Checkout flow không lỗi | |
| B‑07 | Email order confirmation gửi | |
| B‑08 | Analytics events firing (GA4) |
11.4 Payment & Finance (8 item)
| # | Kiểm tra | Trạng thái |
|---|---|---|
| Pay‑01 | Stripe webhook signature verification | |
| Pay‑02 | MoMo payment gateway test (sandbox) | |
| Pay‑03 | Refund API hoạt động | |
| Pay‑04 | Reconciliation script chạy nightly | |
| Pay‑05 | PCI‑DSS scan pass | |
| Pay‑06 | Currency conversion rates cập nhật | |
| Pay‑07 | Transaction logs lưu trữ 2 năm | |
| Pay‑08 | Fraud detection rule (Velocity) bật |
11.5 Monitoring & Rollback (8 item)
| # | Kiểm tra | Trạng thái |
|---|---|---|
| M‑01 | Grafana dashboard live | |
| M‑02 | Alert rule for 5xx errors > 5 phút | |
| M‑03 | Log aggregation (ELK) hoạt động | |
| M‑04 | Backup snapshot mỗi 24 h | |
| M‑05 | Rollback script (kubectl rollout undo) | |
| M‑06 | Canary release health check | |
| M‑07 | Incident response runbook sẵn sàng | |
| M‑08 | Post‑mortem template chuẩn |
12. Các đoạn code / config thực tế (≥ 12)
12.1 Docker Compose (local dev)
version: "3.8"
services:
api:
image: node:20-alpine
working_dir: /app
volumes:
- ./backend:/app
command: npm run dev
ports:
- "3000:3000"
env_file: .env
ar:
image: unityci/editor:2021.3.5f1-webgl
volumes:
- ./ar:/project
command: /bin/bash -c "unity -batchmode -projectPath /project -executeMethod BuildScript.BuildWebGL -quit"
ports:
- "8080:80"
db:
image: postgres:15
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: secret
POSTGRES_DB: furniture
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
volumes:
pgdata:
12.2 Nginx reverse‑proxy (production)
server {
listen 443 ssl http2;
server_name shop.example.com;
ssl_certificate /etc/ssl/certs/fullchain.pem;
ssl_certificate_key /etc/ssl/private/key.pem;
ssl_protocols TLSv1.3;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
location /api/ {
proxy_pass http://api-gateway:8000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /ar/ {
proxy_pass http://ar-service:80/;
proxy_set_header Host $host;
}
location /media/ {
proxy_pass http://media-service:9000/;
expires 30d;
add_header Cache-Control "public";
}
}
12.3 Medusa‑like plugin (product‑assembly)
// src/plugins/assembly-plugin.js
module.exports = (options) => ({
name: "assembly-plugin",
routes: [
{
method: "GET",
path: "/products/:id/assembly",
handler: async (req, res) => {
const product = await productService.retrieve(req.params.id);
const steps = await assemblyService.getSteps(product.id);
res.json({ productId: product.id, steps });
},
},
],
});
12.4 Cloudflare Worker (video cache)
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const url = new URL(request.url)
if (url.pathname.startsWith('/media/')) {
const cache = caches.default
let response = await cache.match(request)
if (!response) {
response = await fetch(request)
response = new Response(response.body, response)
response.headers.set('Cache-Control', 'public, max-age=2592000')
await cache.put(request, response.clone())
}
return response
}
return fetch(request)
}
12.5 Script đối soát payment (Node)
// scripts/reconcile-payments.js
const stripe = require('stripe')(process.env.STRIPE_KEY);
const db = require('../db');
(async () => {
const charges = await stripe.charges.list({ limit: 100 });
for (const charge of charges.data) {
const order = await db.order.findOne({ stripeId: charge.id });
if (order && order.amount !== charge.amount) {
console.warn(`Mismatch order ${order.id}: DB=${order.amount}, Stripe=${charge.amount}`);
}
}
console.log('Reconciliation completed');
})();
12.6 GitHub Actions CI/CD (Docker + Helm)
name: CI/CD
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build Docker image
run: |
docker build -t ghcr.io/company/furniture-api:${{ github.sha }} .
echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
docker push ghcr.io/company/furniture-api:${{ github.sha }}
- name: Deploy to Kubernetes
uses: azure/k8s-deploy@v4
with:
manifests: |
k8s/api-deployment.yaml
k8s/api-service.yaml
images: |
ghcr.io/company/furniture-api:${{ github.sha }}
namespace: prod
12.7 Terraform VPC (AWS)
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "furniture-prod-vpc"
}
}
resource "aws_subnet" "public_a" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
availability_zone = "ap-southeast-1a"
map_public_ip_on_launch = true
}
12.8 Helm values (api‑service)
replicaCount: 3
image:
repository: ghcr.io/company/furniture-api
tag: "{{ .Values.imageTag }}"
service:
type: ClusterIP
port: 8000
resources:
limits:
cpu: "500m"
memory: "512Mi"
requests:
cpu: "250m"
memory: "256Mi"
autoscaling:
enabled: true
minReplicas: 3
maxReplicas: 10
targetCPUUtilizationPercentage: 70
12.9 Unity WebGL build script (C#)
using UnityEditor;
public class BuildScript {
[MenuItem("Build/Build WebGL")]
public static void BuildWebGL() {
var options = new BuildPlayerOptions {
scenes = new[] { "Assets/Scenes/Main.unity" },
locationPathName = "Build/WebGL",
target = BuildTarget.WebGL,
options = BuildOptions.None
};
BuildPipeline.BuildPlayer(options);
}
}
12.10 GraphQL query lấy 3D model
query GetProductModel($sku: String!) {
product(sku: $sku) {
id
name
modelUrl
assemblySteps {
stepNumber
description
videoUrl
}
}
}
12.11 HLS.js player init (React)
import Hls from 'hls.js';
import { useEffect, useRef } from 'react';
export const VideoPlayer = ({ src }: { src: string }) => {
const videoRef = useRef<HTMLVideoElement>(null);
useEffect(() => {
if (Hls.isSupported() && videoRef.current) {
const hls = new Hls();
hls.loadSource(src);
hls.attachMedia(videoRef.current);
return () => hls.destroy();
}
}, [src]);
return <video ref={videoRef} controls width="100%" />;
};
12.12 K6 load test script (AR endpoint)
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
stages: [
{ duration: '2m', target: 200 },
{ duration: '5m', target: 500 },
{ duration: '2m', target: 0 },
],
};
export default function () {
const res = http.get('https://shop.example.com/api/v1/products/123/assembly');
check(res, { 'status is 200': (r) => r.status === 200 });
sleep(1);
}
13. Các bước triển khai chi tiết (6 Phase) – bảng tổng hợp
| Phase | Mục tiêu | Công việc con (6‑12) | Người chịu trách nhiệm | Thời gian (tuần) | Dependency |
|---|---|---|---|---|---|
| 1 | Khảo sát & Định nghĩa | 1. Phỏng vấn khách hàng 2. Đánh giá catalog 3. Xác định chuẩn AR 4. Định nghĩa flow video 5. Lập danh sách API 6. Đánh giá compliance |
PM, BA, UI/UX | 1‑2 | – |
| 2 | Kiến trúc & Setup | 1. Terraform VPC 2. Helm chart Deploy 3. Docker Compose local 4. Nginx config 5. Cloudflare WAF 6. GitHub Actions CI/CD |
DevOps Lead, Backend Engineer | 3‑4 | Phase 1 |
| 3 | Core & AR Service | 1. API CRUD 2. Medusa plugin 3. Unity WebGL export 4. FFmpeg HLS pipeline 5. Cloudflare Worker 6. Unit test |
Backend Engineer, Unity Dev | 5‑9 | Phase 2 |
| 4 | Frontend & UX | 1. Scaffold React + Vite 2. ProductDetail component 3. AR iframe integration 4. HLS.js player 5. Responsive layout 6. A/B test UI |
Frontend Lead, Designer | 10‑14 | Phase 3 |
| 5 | Kiểm thử & Tối ưu | 1. Cypress E2E 2. k6 load test 3. OWASP ZAP scan 4. Lighthouse SEO 5. AR latency test 6. Bug fixing |
QA Lead, Security Engineer | 15‑17 | Phase 4 |
| 6 | Go‑Live & Transfer | 1. Blue‑Green deployment 2. DNS cutover 3. Đào tạo nội bộ 4. Bàn giao tài liệu 5. Post‑launch monitoring 6. Thu thập feedback |
PM, Ops, Trainer | 18‑20 | Phase 5 |
14. Kết luận (Key Takeaways)
- AR + video hướng dẫn tăng chuyển đổi 23 % và giảm support tickets 30 % (theo Shopify 2025).
- NestJS + PostgreSQL là nền tảng ổn định, cho phép tùy biến AR và quản lý video mà không phụ thuộc vào SaaS.
- Chi phí 30 tháng ≈ 163 k USD, ROI dự kiến > 150 % trong 2 năm nhờ tăng doanh thu và giảm chi phí hỗ trợ.
- Rủi ro chính: tốc độ tải AR, buffering video, tuân thủ PCI‑DSS – đã có phương án B/C chi tiết.
- KPI được đo bằng GA4, Vimeo API, Lighthouse, CloudWatch; tần suất đo từ hàng ngày tới hàng tháng tùy mục tiêu.
🛡️ Best Practice: Luôn triển khai Blue‑Green và Canary trước khi chuyển DNS, tránh downtime và cho phép rollback nhanh.
15. Câu hỏi thảo luận
Bạn đã từng gặp lỗi “AR model không hiển thị trên Safari” chưa? Giải pháp nào hiệu quả nhất?
16. Kêu gọi hành động
Nếu anh em đang muốn tự động hoá quy trình tạo video hướng dẫn hoặc tích hợp AR nhanh vào shop hiện tại, hãy thử Serimi App – API hỗ trợ streaming và AR rendering, giảm thời gian dev xuống còn 2‑3 tuần.
Nội dung được Hải định hướng, trợ lý AI giúp mình viết chi tiết.








