Files
sys-analysis-design/e-commerce/bid/estimate.computed.json
2026-09-08 12:35:40 +07:00

1299 lines
28 KiB
JSON

{
"generatedAt": "2026-09-06",
"unit": "MD",
"mdPerMM": 21,
"hoursPerDay": 8,
"roles": [
"PM",
"BA",
"SA",
"UIUX",
"BE",
"FE",
"QA",
"DEVOPS"
],
"items": [
{
"id": "WBS-01",
"name": "Thiết lập dự án & môi trường (Dev/Staging/Production trên AWS)",
"group": "Xuyên suốt",
"sources": [
"§3.2",
"§3.3"
],
"complexity": "L",
"risk": "medium",
"effortMD": {
"PM": 2,
"SA": 2,
"BE": 5,
"DEVOPS": 20
},
"itemMD": 29,
"contingencyPct": 20,
"contingencyMD": 5.8
},
{
"id": "WBS-02",
"name": "Pipeline CI/CD (build→test→SAST/SCA→deploy nhiều môi trường)",
"group": "Xuyên suốt",
"sources": [
"§9.3"
],
"complexity": "L",
"risk": "medium",
"effortMD": {
"DEVOPS": 18,
"QA": 4
},
"itemMD": 22,
"contingencyPct": 20,
"contingencyMD": 4.4
},
{
"id": "WBS-03",
"name": "Kiến trúc nền tảng dịch vụ & event backbone (Kafka/MSK, database-per-service)",
"group": "Xuyên suốt",
"sources": [
"§3.1",
"§3.2"
],
"complexity": "XL",
"risk": "high",
"effortMD": {
"PM": 2,
"SA": 15,
"BE": 25,
"DEVOPS": 10
},
"itemMD": 52,
"contingencyPct": 35,
"contingencyMD": 18.2
},
{
"id": "WBS-04",
"name": "Design system & khung i18n/l10n (5 ngôn ngữ)",
"group": "Xuyên suốt",
"sources": [
"§7.0",
"FR-15",
"NFR-06"
],
"complexity": "L",
"risk": "medium",
"effortMD": {
"UIUX": 15,
"FE": 12
},
"itemMD": 27,
"contingencyPct": 20,
"contingencyMD": 5.4
},
{
"id": "WBS-05",
"name": "Bảo mật xuyên suốt (OWASP, chống IDOR, mã hoá KMS, MFA, audit log)",
"group": "Xuyên suốt",
"sources": [
"§8",
"§4.1.1",
"§4.1.13",
"§9.1.5"
],
"complexity": "XL",
"risk": "high",
"effortMD": {
"SA": 10,
"BE": 20,
"QA": 8,
"DEVOPS": 5
},
"itemMD": 43,
"contingencyPct": 35,
"contingencyMD": 15.05
},
{
"id": "WBS-06",
"name": "Hiệu năng & khả năng mở rộng (cache Redis, CDN, load/chaos test)",
"group": "Xuyên suốt",
"sources": [
"NFR-01",
"NFR-02",
"NFR-03",
"§9.1.4"
],
"complexity": "L",
"risk": "high",
"effortMD": {
"BE": 10,
"DEVOPS": 10,
"QA": 8
},
"itemMD": 28,
"contingencyPct": 35,
"contingencyMD": 9.8
},
{
"id": "WBS-07",
"name": "Giám sát, logging tập trung & DR/backup",
"group": "Xuyên suốt",
"sources": [
"§9.4",
"§9.5",
"§5.3.2"
],
"complexity": "M",
"risk": "medium",
"effortMD": {
"DEVOPS": 12,
"BE": 3
},
"itemMD": 15,
"contingencyPct": 20,
"contingencyMD": 3
},
{
"id": "WBS-08",
"name": "Quản lý dự án & PMO (ceremonies, báo cáo, rủi ro/thay đổi)",
"group": "Xuyên suốt",
"sources": [
"bid-config methodology",
"§9"
],
"complexity": "L",
"risk": "medium",
"effortMD": {
"PM": 40
},
"itemMD": 40,
"contingencyPct": 20,
"contingencyMD": 8
},
{
"id": "WBS-09",
"name": "Đào tạo & bàn giao (tài liệu vận hành, workshop Admin/Seller/CSR/Ops)",
"group": "Xuyên suốt",
"sources": [
"B9 dossier-structure",
"bid-config warrantyMonths"
],
"complexity": "M",
"risk": "low",
"effortMD": {
"BA": 5,
"PM": 5,
"QA": 3
},
"itemMD": 13,
"contingencyPct": 10,
"contingencyMD": 1.3
},
{
"id": "WBS-10",
"name": "Hỗ trợ go-live & bảo hành giai đoạn đầu (hypercare)",
"group": "Xuyên suốt",
"sources": [
"bid-config warrantyMonths=12",
"NFR-08"
],
"complexity": "M",
"risk": "medium",
"effortMD": {
"PM": 3,
"BE": 6,
"QA": 4,
"DEVOPS": 8
},
"itemMD": 21,
"contingencyPct": 20,
"contingencyMD": 4.2
},
{
"id": "WBS-11",
"name": "Tích hợp VNPay (redirect + IPN, chống replay, đối soát)",
"group": "Xuyên suốt",
"sources": [
"§3.4",
"§4.1.6",
"TC-09",
"TC-10"
],
"complexity": "M",
"risk": "medium",
"effortMD": {
"BE": 6,
"QA": 3
},
"itemMD": 9,
"contingencyPct": 20,
"contingencyMD": 1.8
},
{
"id": "WBS-12",
"name": "Tích hợp Momo (redirect + IPN, chống replay, đối soát)",
"group": "Xuyên suốt",
"sources": [
"§3.4",
"§4.1.6"
],
"complexity": "M",
"risk": "medium",
"effortMD": {
"BE": 5,
"QA": 2
},
"itemMD": 7,
"contingencyPct": 20,
"contingencyMD": 1.4
},
{
"id": "WBS-13",
"name": "Tích hợp GHN (tạo vận đơn, webhook, retry)",
"group": "Xuyên suốt",
"sources": [
"§3.4",
"§4.1.12",
"TC-29"
],
"complexity": "M",
"risk": "medium",
"effortMD": {
"BE": 5,
"QA": 2
},
"itemMD": 7,
"contingencyPct": 20,
"contingencyMD": 1.4
},
{
"id": "WBS-14",
"name": "Tích hợp GHTK (tạo vận đơn, webhook, fallback từ GHN)",
"group": "Xuyên suốt",
"sources": [
"§3.4",
"§4.1.12",
"BR-15",
"TC-29b"
],
"complexity": "M",
"risk": "medium",
"effortMD": {
"BE": 4,
"QA": 2
},
"itemMD": 6,
"contingencyPct": 20,
"contingencyMD": 1.2
},
{
"id": "WBS-15",
"name": "Tích hợp Email/SMS Provider",
"group": "Xuyên suốt",
"sources": [
"§3.4",
"Notification Service §3"
],
"complexity": "S",
"risk": "low",
"effortMD": {
"BE": 4,
"QA": 2
},
"itemMD": 6,
"contingencyPct": 10,
"contingencyMD": 0.6
},
{
"id": "WBS-16",
"name": "Tích hợp Google/Facebook OAuth",
"group": "Xuyên suốt",
"sources": [
"§3.4",
"§4.1.3",
"TC-03"
],
"complexity": "S",
"risk": "medium",
"effortMD": {
"BE": 4,
"QA": 2
},
"itemMD": 6,
"contingencyPct": 20,
"contingencyMD": 1.2
},
{
"id": "WBS-17",
"name": "Tích hợp ngân hàng cho payout (batch file/API, không tự động retry)",
"group": "Xuyên suốt",
"sources": [
"§3.4",
"§4.1.8",
"TC-25b"
],
"complexity": "M",
"risk": "high",
"effortMD": {
"BE": 6,
"QA": 3
},
"itemMD": 9,
"contingencyPct": 35,
"contingencyMD": 3.15
},
{
"id": "WBS-18",
"name": "Định danh & tài khoản khách hàng",
"group": "Khách hàng",
"sources": [
"FR-01",
"FR-02",
"FR-03",
"§4.1.3",
"SCR-08",
"SCR-09"
],
"complexity": "L",
"risk": "medium",
"effortMD": {
"BA": 3,
"SA": 2,
"BE": 12,
"FE": 10,
"UIUX": 4,
"QA": 5
},
"itemMD": 36,
"contingencyPct": 20,
"contingencyMD": 7.2
},
{
"id": "WBS-19",
"name": "Danh mục & tìm kiếm sản phẩm đa seller",
"group": "Khách hàng",
"sources": [
"FR-04",
"§3.1 Catalog & Search",
"§4.1.4",
"SCR-01",
"SCR-02",
"SCR-03"
],
"complexity": "XL",
"risk": "high",
"effortMD": {
"BA": 4,
"SA": 3,
"BE": 20,
"FE": 15,
"UIUX": 6,
"QA": 8
},
"itemMD": 56,
"contingencyPct": 35,
"contingencyMD": 19.6
},
{
"id": "WBS-20",
"name": "Giỏ hàng đa seller",
"group": "Khách hàng",
"sources": [
"FR-05",
"§4.1.5",
"SCR-04"
],
"complexity": "M",
"risk": "medium",
"effortMD": {
"BA": 2,
"BE": 8,
"FE": 6,
"UIUX": 2,
"QA": 4
},
"itemMD": 22,
"contingencyPct": 20,
"contingencyMD": 4.4
},
{
"id": "WBS-21",
"name": "Checkout & tách đơn theo seller (saga đặt hàng)",
"group": "Khách hàng",
"sources": [
"FR-06",
"§6 Luồng 1",
"BR-01",
"BR-02",
"SCR-05",
"SCR-06",
"SCR-07"
],
"complexity": "XL",
"risk": "high",
"effortMD": {
"PM": 2,
"BA": 4,
"SA": 3,
"BE": 18,
"FE": 12,
"UIUX": 4,
"QA": 10
},
"itemMD": 53,
"contingencyPct": 35,
"contingencyMD": 18.55
},
{
"id": "WBS-22",
"name": "Thanh toán — business logic Payment Service",
"group": "Khách hàng",
"sources": [
"FR-07",
"§3 Payment Service",
"§4.1.6",
"NFR-05",
"SCR-06"
],
"complexity": "L",
"risk": "high",
"effortMD": {
"PM": 1,
"BA": 2,
"SA": 2,
"BE": 12,
"FE": 4,
"QA": 6
},
"itemMD": 27,
"contingencyPct": 35,
"contingencyMD": 9.45
},
{
"id": "WBS-23",
"name": "Quản lý đơn hàng khách hàng",
"group": "Khách hàng",
"sources": [
"FR-08",
"§4.1.5",
"SCR-10"
],
"complexity": "M",
"risk": "low",
"effortMD": {
"BA": 2,
"BE": 6,
"FE": 6,
"QA": 3
},
"itemMD": 17,
"contingencyPct": 10,
"contingencyMD": 1.7
},
{
"id": "WBS-24",
"name": "Đổi trả & khiếu nại (khách hàng)",
"group": "Khách hàng",
"sources": [
"FR-09",
"§4.1.5",
"SCR-11"
],
"complexity": "M",
"risk": "medium",
"effortMD": {
"BA": 2,
"BE": 6,
"FE": 5,
"UIUX": 2,
"QA": 3
},
"itemMD": 18,
"contingencyPct": 20,
"contingencyMD": 3.6
},
{
"id": "WBS-25",
"name": "Danh sách yêu thích (Wishlist)",
"group": "Khách hàng",
"sources": [
"FR-10",
"SCR-12"
],
"complexity": "S",
"risk": "low",
"effortMD": {
"BE": 2,
"FE": 2,
"QA": 1
},
"itemMD": 5,
"contingencyPct": 10,
"contingencyMD": 0.5
},
{
"id": "WBS-26",
"name": "Đánh giá & nhận xét sản phẩm",
"group": "Khách hàng",
"sources": [
"FR-11",
"SCR-13",
"BR-11"
],
"complexity": "S",
"risk": "low",
"effortMD": {
"BE": 3,
"FE": 3,
"QA": 2
},
"itemMD": 8,
"contingencyPct": 10,
"contingencyMD": 0.8
},
{
"id": "WBS-27",
"name": "Thông báo đơn hàng",
"group": "Khách hàng",
"sources": [
"FR-12",
"§3 Notification Service",
"SCR-15"
],
"complexity": "M",
"risk": "medium",
"effortMD": {
"BA": 1,
"BE": 6,
"FE": 3,
"QA": 3
},
"itemMD": 13,
"contingencyPct": 20,
"contingencyMD": 2.6
},
{
"id": "WBS-28",
"name": "Khuyến mãi & mã giảm giá",
"group": "Khách hàng",
"sources": [
"FR-13",
"§3 Promotion & Loyalty",
"SCR-26"
],
"complexity": "M",
"risk": "low",
"effortMD": {
"BA": 2,
"BE": 6,
"FE": 5,
"UIUX": 2,
"QA": 3
},
"itemMD": 18,
"contingencyPct": 10,
"contingencyMD": 1.8
},
{
"id": "WBS-29",
"name": "Chương trình loyalty & hạng thành viên",
"group": "Khách hàng",
"sources": [
"FR-14",
"§3 Promotion & Loyalty",
"SCR-14",
"BR-06",
"BR-07",
"BR-08"
],
"complexity": "M",
"risk": "medium",
"effortMD": {
"BA": 2,
"BE": 7,
"FE": 5,
"QA": 3
},
"itemMD": 17,
"contingencyPct": 20,
"contingencyMD": 3.4
},
{
"id": "WBS-30",
"name": "Đa ngôn ngữ nội dung",
"group": "Khách hàng",
"sources": [
"FR-15",
"§4.1.1",
"§5 product_i18n"
],
"complexity": "M",
"risk": "medium",
"effortMD": {
"BA": 2,
"BE": 5,
"FE": 4,
"QA": 3
},
"itemMD": 14,
"contingencyPct": 20,
"contingencyMD": 2.8
},
{
"id": "WBS-31",
"name": "Hiển thị đa tiền tệ tham khảo",
"group": "Khách hàng",
"sources": [
"FR-16",
"§4.1.1",
"§4.1.2"
],
"complexity": "S",
"risk": "low",
"effortMD": {
"BE": 2,
"FE": 2,
"QA": 1
},
"itemMD": 5,
"contingencyPct": 10,
"contingencyMD": 0.5
},
{
"id": "WBS-32",
"name": "Đăng ký & KYC người bán",
"group": "Merchant",
"sources": [
"FR-17",
"§3 Seller Management",
"§4.1.7",
"SCR-16",
"SCR-23"
],
"complexity": "L",
"risk": "high",
"effortMD": {
"PM": 2,
"BA": 3,
"SA": 2,
"BE": 12,
"FE": 8,
"UIUX": 3,
"QA": 5
},
"itemMD": 35,
"contingencyPct": 35,
"contingencyMD": 12.25
},
{
"id": "WBS-33",
"name": "Quản lý sản phẩm & tồn kho (Seller)",
"group": "Merchant",
"sources": [
"FR-18",
"§4.1.4",
"SCR-18"
],
"complexity": "M",
"risk": "medium",
"effortMD": {
"BA": 2,
"BE": 8,
"FE": 7,
"UIUX": 2,
"QA": 4
},
"itemMD": 23,
"contingencyPct": 20,
"contingencyMD": 4.6
},
{
"id": "WBS-34",
"name": "Quản lý đơn hàng (Seller)",
"group": "Merchant",
"sources": [
"FR-19",
"§4.1.5",
"SCR-19"
],
"complexity": "M",
"risk": "medium",
"effortMD": {
"BA": 2,
"BE": 6,
"FE": 6,
"QA": 3
},
"itemMD": 17,
"contingencyPct": 20,
"contingencyMD": 3.4
},
{
"id": "WBS-35",
"name": "Dashboard doanh thu & payout (Seller)",
"group": "Merchant",
"sources": [
"FR-20",
"§4.1.7",
"SCR-17",
"SCR-20"
],
"complexity": "M",
"risk": "low",
"effortMD": {
"BA": 2,
"BE": 5,
"FE": 6,
"UIUX": 2,
"QA": 3
},
"itemMD": 18,
"contingencyPct": 10,
"contingencyMD": 1.8
},
{
"id": "WBS-36",
"name": "Cấu hình hoa hồng theo ngành hàng",
"group": "Admin",
"sources": [
"FR-21",
"§4.1.8",
"SCR-25",
"BR-04"
],
"complexity": "S",
"risk": "medium",
"effortMD": {
"BA": 1,
"BE": 4,
"FE": 3,
"QA": 2
},
"itemMD": 10,
"contingencyPct": 20,
"contingencyMD": 2
},
{
"id": "WBS-37",
"name": "Payout định kỳ & Commission engine",
"group": "Admin",
"sources": [
"FR-22",
"§3 Commission & Payout",
"§4.1.8",
"§6.1.4",
"SCR-27",
"TC-25"
],
"complexity": "XL",
"risk": "high",
"effortMD": {
"PM": 2,
"BA": 3,
"SA": 2,
"BE": 15,
"FE": 6,
"QA": 7
},
"itemMD": 35,
"contingencyPct": 35,
"contingencyMD": 12.25
},
{
"id": "WBS-38",
"name": "Quản trị người bán (duyệt/khoá)",
"group": "Admin",
"sources": [
"FR-23",
"§4.1.7",
"SCR-23"
],
"complexity": "M",
"risk": "medium",
"effortMD": {
"BA": 1,
"BE": 5,
"FE": 5,
"QA": 3
},
"itemMD": 14,
"contingencyPct": 20,
"contingencyMD": 2.8
},
{
"id": "WBS-39",
"name": "Quản trị catalog toàn sàn",
"group": "Admin",
"sources": [
"FR-24",
"§4.1.4",
"SCR-24"
],
"complexity": "M",
"risk": "low",
"effortMD": {
"BA": 1,
"BE": 5,
"FE": 5,
"QA": 3
},
"itemMD": 14,
"contingencyPct": 10,
"contingencyMD": 1.4
},
{
"id": "WBS-40",
"name": "Xử lý tranh chấp & khiếu nại (CSR + Admin)",
"group": "Admin",
"sources": [
"FR-25",
"§3 Dispute/CSR handling",
"§4.1.5",
"SCR-28",
"SCR-32",
"BR-14"
],
"complexity": "L",
"risk": "high",
"effortMD": {
"PM": 1,
"BA": 3,
"SA": 1,
"BE": 10,
"FE": 8,
"QA": 5
},
"itemMD": 28,
"contingencyPct": 35,
"contingencyMD": 9.8
},
{
"id": "WBS-41",
"name": "Vận hành kho & vận chuyển (business logic)",
"group": "Admin",
"sources": [
"FR-26",
"§3 Shipping & Fulfillment",
"§4.1.12",
"SCR-30",
"SCR-31",
"BR-15"
],
"complexity": "L",
"risk": "medium",
"effortMD": {
"BA": 2,
"SA": 1,
"BE": 10,
"FE": 6,
"QA": 5
},
"itemMD": 24,
"contingencyPct": 20,
"contingencyMD": 4.8
},
{
"id": "WBS-42",
"name": "Xác thực đa yếu tố (MFA) cho Admin/Seller",
"group": "Admin",
"sources": [
"FR-27",
"§4.1.3",
"§8.1.1a",
"SCR-21",
"SCR-29"
],
"complexity": "M",
"risk": "medium",
"effortMD": {
"BE": 5,
"FE": 3,
"QA": 3
},
"itemMD": 11,
"contingencyPct": 20,
"contingencyMD": 2.2
},
{
"id": "WBS-43",
"name": "Admin Dashboard tổng quan vận hành",
"group": "Admin",
"sources": [
"SCR-22"
],
"complexity": "M",
"risk": "low",
"effortMD": {
"BA": 1,
"BE": 4,
"FE": 5,
"UIUX": 2,
"QA": 2
},
"itemMD": 14,
"contingencyPct": 10,
"contingencyMD": 1.4
}
],
"totals": {
"baseMDByRole": {
"PM": 60,
"SA": 43,
"BE": 305,
"DEVOPS": 83,
"QA": 143,
"UIUX": 44,
"FE": 162,
"BA": 52
},
"contingencyMDByRole": {
"PM": 13,
"SA": 14.3,
"BE": 79.5,
"DEVOPS": 20.35,
"QA": 35.3,
"UIUX": 10.15,
"FE": 36.95,
"BA": 11.95
},
"overheadMD": 0,
"overheadRole": null,
"totalMDByRole": {
"PM": 73,
"BA": 63.95,
"SA": 57.3,
"UIUX": 54.15,
"BE": 384.5,
"FE": 198.95,
"QA": 178.3,
"DEVOPS": 103.35
},
"baseMD": 892,
"contingencyMD": 221.5,
"grandMD": 1113.5,
"baseMM": 42.48,
"mmByRole": {
"PM": 3.48,
"BA": 3.05,
"SA": 2.73,
"UIUX": 2.58,
"BE": 18.31,
"FE": 9.47,
"QA": 8.49,
"DEVOPS": 4.92
},
"grandMM": 53.02
},
"cost": {
"currency": "VND",
"rateCard": {
"PM": 90000000,
"BA": 60000000,
"SA": 100000000,
"UIUX": 55000000,
"BE": 65000000,
"FE": 60000000,
"QA": 45000000,
"DEVOPS": 75000000
},
"laborByRole": {
"PM": 313200000,
"BA": 183000000,
"SA": 273000000,
"UIUX": 141900000,
"BE": 1190150000,
"FE": 568200000,
"QA": 382050000,
"DEVOPS": 369000000
},
"laborTotal": 3420500000,
"nonLaborItems": [
{
"id": "NL-01",
"name": "Hạ tầng cloud AWS năm đầu (Dev + Staging + Production)",
"basis": "Sizing 3 môi trường theo §3.3 (ECS Fargate/EKS, RDS Multi-AZ + read replica, ElastiCache Redis, OpenSearch cluster đa node, CloudFront, WAF)",
"recurring": "yearly",
"amount": null,
"currency": "VND"
},
{
"id": "NL-02",
"name": "OpenSearch cluster (Search subsystem)",
"basis": "§3.2 Search subsystem đa node cho Production",
"recurring": "yearly",
"amount": null,
"currency": "VND"
},
{
"id": "NL-03",
"name": "Phí giao dịch cổng thanh toán VNPay/Momo",
"basis": "§3.4 — phí theo % giao dịch hoặc phí cố định",
"recurring": "monthly",
"amount": null,
"currency": "VND"
},
{
"id": "NL-04",
"name": "Phí gửi Email/SMS thông báo",
"basis": "§3.4 Notification Service",
"recurring": "monthly",
"amount": null,
"currency": "VND"
},
{
"id": "NL-05",
"name": "Phí tích hợp API GHN/GHTK",
"basis": "§3.4 — phí kết nối/API theo hợp đồng đơn vị vận chuyển",
"recurring": "monthly",
"amount": null,
"currency": "VND"
},
{
"id": "NL-06",
"name": "Domain, SSL certificate, WAF rule bổ sung",
"basis": "§3.2 (WAF), §3.3",
"recurring": "yearly",
"amount": null,
"currency": "VND"
},
{
"id": "NL-07",
"name": "Pentest ứng dụng hàng năm + ASV scan hàng quý",
"basis": "§9.1.5 DAST/Penetration test cho phạm vi PCI-DSS SAQ A",
"recurring": "yearly",
"amount": null,
"currency": "VND"
},
{
"id": "NL-08",
"name": "Chi phí đào tạo & tài liệu bàn giao",
"basis": "B9 dossier-structure",
"recurring": "one-off",
"amount": null,
"currency": "VND"
}
],
"nonLaborTotal": 0,
"subtotal": 3420500000,
"vatPct": 10,
"vat": 342050000,
"total": 3762550000,
"priceComplete": false,
"missingRates": [],
"missingAmounts": [
"Hạ tầng cloud AWS năm đầu (Dev + Staging + Production)",
"OpenSearch cluster (Search subsystem)",
"Phí giao dịch cổng thanh toán VNPay/Momo",
"Phí gửi Email/SMS thông báo",
"Phí tích hợp API GHN/GHTK",
"Domain, SSL certificate, WAF rule bổ sung",
"Pentest ứng dụng hàng năm + ASV scan hàng quý",
"Chi phí đào tạo & tài liệu bàn giao"
]
},
"ucp": {
"UAW": 25,
"UUCW": 210,
"TCF": 1.13,
"EF": 0.87,
"UCP": 231.03,
"hoursPerUCP": 20,
"hours": 4620.6,
"md": 577.58,
"mm": 27.5,
"tcfSum": 52.5,
"efSum": 17.5
},
"crosscheck": {
"wbsBaseMM": 42.48,
"ucpMM": 27.5,
"variancePct": 54.47,
"thresholdPct": 25,
"flag": true
},
"timeline": {
"teamSize": 9,
"teamDerived": true,
"parallelEfficiency": 0.85,
"durationMonths": 7,
"scheduleMonths": 7,
"startDate": null,
"endDate": null,
"phases": [
{
"name": "Khởi động & chuẩn bị",
"pct": 5,
"startMonth": 0,
"endMonth": 0.5,
"startDate": null,
"endDate": null,
"effortMM": 2.65
},
{
"name": "Phân tích & thiết kế chi tiết",
"pct": 15,
"startMonth": 0.5,
"endMonth": 1.5,
"startDate": null,
"endDate": null,
"effortMM": 7.95
},
{
"name": "Phát triển",
"pct": 45,
"startMonth": 1.5,
"endMonth": 4.5,
"startDate": null,
"endDate": null,
"effortMM": 23.86
},
{
"name": "Kiểm thử hệ thống, hiệu năng, bảo mật",
"pct": 15,
"startMonth": 4.5,
"endMonth": 5.5,
"startDate": null,
"endDate": null,
"effortMM": 7.95
},
{
"name": "UAT & đào tạo",
"pct": 12,
"startMonth": 5.5,
"endMonth": 6.5,
"startDate": null,
"endDate": null,
"effortMM": 6.36
},
{
"name": "Go-live & hỗ trợ ổn định",
"pct": 8,
"startMonth": 6.5,
"endMonth": 7,
"startDate": null,
"endDate": null,
"effortMM": 4.24
}
],
"deadlineFit": {
"deadline": null,
"fits": null,
"availableMonths": null,
"suggestedTeamSize": null
}
},
"staffing": {
"unit": "FTE (MM/tháng)",
"byMonth": [
{
"month": 1,
"label": "M1",
"fte": {
"PM": 0.61,
"BA": 1.15,
"SA": 1.16,
"UIUX": 1.03,
"BE": 0.92,
"FE": 0.47,
"QA": 0.42,
"DEVOPS": 1.73
},
"total": 7.49
},
{
"month": 2,
"label": "M2",
"fte": {
"PM": 0.49,
"BA": 0.79,
"SA": 0.72,
"UIUX": 0.9,
"BE": 3.21,
"FE": 1.65,
"QA": 0.92,
"DEVOPS": 0.45
},
"total": 9.13
},
{
"month": 3,
"label": "M3",
"fte": {
"PM": 0.46,
"BA": 0.2,
"SA": 0.23,
"UIUX": 0.26,
"BE": 4.58,
"FE": 2.37,
"QA": 0.99,
"DEVOPS": 0.41
},
"total": 9.5
},
{
"month": 4,
"label": "M4",
"fte": {
"PM": 0.46,
"BA": 0.2,
"SA": 0.23,
"UIUX": 0.26,
"BE": 4.58,
"FE": 2.37,
"QA": 0.99,
"DEVOPS": 0.41
},
"total": 9.5
},
{
"month": 5,
"label": "M5",
"fte": {
"PM": 0.49,
"BA": 0.18,
"SA": 0.25,
"UIUX": 0.13,
"BE": 3.21,
"FE": 1.65,
"QA": 2.2,
"DEVOPS": 0.58
},
"total": 8.69
},
{
"month": 6,
"label": "M6",
"fte": {
"PM": 0.47,
"BA": 0.31,
"SA": 0.14,
"BE": 1.19,
"FE": 0.61,
"QA": 2.34,
"DEVOPS": 0.49
},
"total": 5.55
},
{
"month": 7,
"label": "M7",
"fte": {
"PM": 0.49,
"BA": 0.23,
"BE": 0.64,
"FE": 0.33,
"QA": 0.64,
"DEVOPS": 0.86
},
"total": 3.19
}
],
"peak": 9.5,
"peakHeadcount": 10
},
"warnings": [
"Giá tạm tính: thiếu đơn giá [], thiếu số tiền [Hạ tầng cloud AWS năm đầu (Dev + Staging + Production), OpenSearch cluster (Search subsystem), Phí giao dịch cổng thanh toán VNPay/Momo, Phí gửi Email/SMS thông báo, Phí tích hợp API GHN/GHTK, Domain, SSL certificate, WAF rule bổ sung, Pentest ứng dụng hàng năm + ASV scan hàng quý, Chi phí đào tạo & tài liệu bàn giao]",
"WBS (42.48 MM) lệch 54.47% so với UCP (27.5 MM) — vượt ngưỡng 25%, cần giải thích ở C1",
"projectStartDate chưa có — Gantt sẽ dùng tháng tương đối (M1, M2…)"
]
}