Luồng 1 · Tạo sản phẩm POD và đăng lên Etsy

← Tổng quan
LUỒNG 1 · ĐỌC ~8 PHÚT

Tạo sản phẩm POD và đăng lên Etsy

Từ ý tưởng thiết kế đến listing sống trên Etsy. BA mở form Sản phẩm chuẩn, chọn Danh mục + Biến thể, hệ thống tự sinh Mã SKU theo bộ ngữ pháp v2.1. BA bấm Publish, hệ thống gói metadata và gọi Etsy API. Hôm nay 5 trên 11 ca thử nghiệm đăng draft đã thành công thật; 4 ca khác trả về lỗi 400 ở phía Etsy do thiếu chi tiết payload — đội kỹ thuật đang chờ Etsy bật chế độ trả nội dung lỗi đầy đủ để gỡ.

Hoàn thành ~85% UAT 2026-05-28 Nguồn: FLOW_TAO_SAN_PHAM_VN v1.2 · SKU_GRAMMAR v2.1

AAi làm gì — sơ đồ vai trò

Luồng tạo sản phẩm liên kết 4 vai trò người dùng và Etsy. Hệ thống làm việc nền (sinh SKU, đồng bộ kênh, gọi API). Bảng dưới đọc từ trái qua phải: mỗi cột là một vai trò, mỗi hàng là một mốc chính.

Thiết kế (PD)
BA Lead
Marketing
Hệ thống Odoo
Etsy API
1. Chuẩn bị
Hoàn thiện file mockup, upload Google Drive, dán link vào yêu cầu
Nhận yêu cầu, gắn vào dự án
2. Tạo template
Mở form Sản phẩm, điền Tên + Danh mục + Biến thể + Giá USD
Tự sinh Mã SKU chuẩn (vd MUG-CR-F11) sau onchange Danh mục/Biến thể
3. Bổ sung chi tiết Etsy
Bật/tắt 7 nhóm: Tags, Cá nhân hoá, Ảnh phụ, Cân nặng, Override taxonomy…
Phối hợp duyệt nội dung Title/Description nếu cần A/B
Tự suy ra Vật liệu + Kích thước từ Biến thể
4. Lưu + tạo trạng thái kênh
Nhấn Lưu
Lưu sản phẩm + tạo dòng trạng thái kênh mặc định "Etsy — Draft"
5. Đăng Etsy
Bấm Publish to Etsy hoặc Publish Draft Only (free)
Gói payload (createListing, push_inventory, push_images) và gọi Etsy
Trả về listing_id hoặc 400 nếu validator báo lỗi
6. Tracking lỗi
Đọc cột "Lỗi đồng bộ gần nhất" trong tab Channels; bấm Resume Publish sau khi sửa
Ghi vào nhật ký Etsy; chưa lưu được nội dung 400 chi tiết
Trả 400 thiếu body chi tiết (cần Etsy support)

BCác bước chi tiết (10 bước)

  1. 1
    PD · BA Lead
    Nhận yêu cầu thiết kế và hoàn thiện file gốc
    PD nhận brief (qua chat hoặc message), thiết kế trên Illustrator/Photoshop, đẩy file lên Google Drive thư mục dự án. BA Lead xác nhận file đã sẵn sàng.
  2. 2
    BA · 2 phút
    Mở Sản phẩm → Tạo mới
    Menu Bán hàng → Sản phẩm → nút Tạo mới. Form trắng hiện ra, BA bắt đầu nhập.
  3. 3
    BA · 3 phút
    Điền Tên · Danh mục · Biến thể · Giá USD
    Tên tiếng Anh ("Custom Coffee Mug 11oz"); chọn Danh mục từ dropdown (Mug / Apron / Doormat …); thêm dòng Biến thể (Chất liệu, Size, Color); nhập Giá. Mặc định kênh Etsy được bật.
    Hệ thống: mỗi lần BA đổi Danh mục hoặc Biến thể, ô Mã SKU được tính lại theo bộ ngữ pháp v2.1 — ví dụ Danh mục Mug + Chất liệu Ceramic+Chrome + Size 11oz → MUG-CR-F11. Nếu BA gõ tay sửa, hệ thống nhớ và không ghi đè khi onchange chạy lại (cờ "BA-edited").
  4. 4
    BA · 1 phút (tuỳ chọn)
    Điền Mã SKU Gearment nếu sản phẩm sẽ giao qua Gearment
    Mở tab Channels, gõ mã Gearment vào ô tương ứng. Hệ thống tự bật chế độ Dropship cho sản phẩm này. Để trống → sản phẩm chạy nội bộ (MTO, xem Luồng 3A).
  5. 5
    BA + Marketing · 5–10 phút
    Bổ sung 7 nhóm thông tin Etsy (tuỳ chọn)
    Tags (≤13 từ khoá, mỗi từ ≤20 ký tự); Cá nhân hoá (cho phép khắc tên?); Ảnh phụ (upload thêm 3–9 ảnh phụ); Override taxonomy/shipping/return per sản phẩm; Cân nặng; Thuộc tính biến thể (Material/Color/Size). Mỗi nhóm là một tab phụ trong form.
    Hệ thống: Vật liệu và Kích thước được suy ra tự động từ Biến thể — BA không gõ lại. Nếu để trống tags/personalization thì hệ thống dùng giá trị mặc định của shop khi push lên Etsy.
  6. 6
    BA · 1 giây
    Nhấn Lưu
    Hệ thống lưu sản phẩm, sinh các biến thể, và tạo dòng trạng thái kênh "Draft" cho mỗi kênh đã chọn (mặc định Etsy).
    Phía sau: SKU validator chạy theo chế độ mềm (mặc định) — mã sai format vẫn lưu, có cảnh báo. Chế độ chặt chỉ Admin bật được; sản phẩm legacy SKU không bị bắt buộc đổi.
  7. 7
    BA · 1 phút
    Bấm Publish Draft Only (miễn phí phí Etsy)
    Nút Publish Draft Only mới được thêm 2026-05-28 — đẩy lên Etsy ở trạng thái draft (chưa mở bán, không tốn phí $0.20). Hoặc bấm Publish to Etsy để đẩy thẳng lên live (tốn phí).
    Hệ thống: gọi 3 đường API liền nhau — tạo listing chính; đẩy biến thể và thuộc tính; đẩy ảnh chính + ảnh phụ. Tất cả ghi vào nhật ký Etsy.
  8. 8
    BA · theo dõi
    Đọc kết quả ở tab Channels
    Sau publish, dòng trạng thái kênh chuyển sang "Published" + có mã listing Etsy. Nếu lỗi, dòng sang trạng thái "Error" + cột "Lỗi đồng bộ gần nhất" hiển thị thông tin.
  9. 9
    BA · khi gặp 400
    Bấm Resume Publish sau khi sửa
    Danh sách 400 đang chờ xử lý xem ở Nhật ký Etsy — lọc HTTP=400 (xem mockup #4 ở Vai trò 1 — BA Lead).
    Nếu Etsy trả 400 (ví dụ thiếu taxonomy hoặc cá nhân hoá sai format), nút Publish đổi tên thành Resume Publish. BA sửa metadata, bấm Resume — hệ thống không tạo lại listing mà tiếp tục từ bước bị lỗi.
    ⚠ Hôm nay nội dung 400 chưa hiển thị chi tiết — đang đợi mở tính năng capture body
  10. 10
    BA + Marketing · sau publish
    Xem listing trực tiếp trên Etsy
    Bấm link listing_id trong tab Channels — mở thẳng trang Etsy của listing để kiểm tra ảnh, mô tả, biến thể có đúng không. Nếu cần sửa, BA quay lại form Odoo, sửa, bấm Resume Publish.

Màn hình Odoo trong luồng này

5 màn hình mô phỏng. Cuộn xuống để xem từng cảnh — từ form chuẩn, danh sách SKU drift, gói payload sắp gửi Etsy, modal lỗi 400, và kanban sản phẩm lọc theo kênh.
Màn hình 1 · Form Sản phẩm chuẩn — Auto-SKU sau onchange Danh mục/Biến thể
Bán hàngSản phẩm › Sản phẩm ba.lead@hatafa
Sản phẩmTạo mớiCustom Coffee Mug 11oz
DraftPublishedArchived
Custom Coffee Mug 11oz UNSAVED
Tên sản phẩm
Custom Coffee Mug 11oz
Danh mục
Mug
Giá bán (USD)
14.50
Các kênh áp dụng
Etsy
Mã SKU
MUG-CR-F11 auto
SKU Gearment
— (để trống nếu in nội bộ)
Trạng thái
Draft
Cập nhật lần cuối
2026-05-28 14:32 · ba.lead
Mô tảBiến thểChannelsTagsCá nhân hoáẢnh phụCân nặng & Kích thướcOverride Etsy
Thuộc tínhGiá trịAuto SKU segment
Chất liệuCeramic + ChromeCR
Fluid oz11 ozF11
Colorkhông dùng — bỏ qua
Mã SKU MUG-CR-F11 được sinh tự động ngay khi BA chọn Danh mục Mug và thuộc tính Fluid oz = 11 oz. Thứ tự nối: Family → Material → Size → (Color nếu có) theo SKU Grammar v2.1. BA có thể gõ tay sửa; sau đó hệ thống sẽ không ghi đè khi onchange chạy lại (cờ BA-edited).
Mockup gốc: form sản phẩm chuẩn của Odoo (product.product_template_form_view @ addons/product/views/product_template_views.xml); chỗ khác biệt: thêm tab "Channels" tuỳ biến + onchange tự sinh Mã SKU theo SKU Grammar v2.1 (mở rộng trong etsy_integration/views/product_views.xml).
Màn hình 2 · SKU Drift — danh sách sản phẩm có mã legacy chưa khớp v2.1
Bán hàngSản phẩm › SKU Drift ba.manager@hatafa
Sản phẩmSKU Drift 22 dòng
Tên sản phẩmDanh mụcMã legacyMã đề xuất v2.1Đã publish Etsy?Quyết định
Coffee Mug BlackMugMUG001-BKMUG-CR-F11-BKYes · listing 2845…Chưa quyết
Apron Linen MediumApronAP-LIN-MAPR-LN-AMYes · listing 3019…Chưa quyết
Doormat 30x18 WelcomeDoormatDM-WLCM-3018DMT-TX-R30X18DraftKeep Legacy
Ring Dish SquareRing DishRING-SQ-CERDS-CE-SQYes · listing 2774…Accept
SKU Drift là nơi BA Manager đối chiếu mã legacy với mã chuẩn v2.1. Keep Legacy giữ nguyên mã cũ; Accept Canonical cập nhật mã mới vào Odoo và đẩy lên Etsy (nếu listing đã published). Nếu Etsy báo lỗi khi đổi mã, hệ thống rollback và ghi vào nhật ký để BA xem.
Mockup gốc: view list tuỳ biến (mhc.view_product_sku_drift_list @ multichannel_hub_core/views/product_sku_drift_views.xml); chỗ khác biệt: hiển thị 2 cột so sánh mã legacy vs canonical với 2 nút Keep Legacy / Accept Canonical — không có view chuẩn Odoo tương đương.
Màn hình 3 · Hậu trường — gói payload sắp gửi Etsy (tab Channels)
Bán hàngSản phẩm › Custom Coffee Mug 11oz ba.lead@hatafa
Sản phẩmCustom Coffee Mug 11ozChannels
2 record liên quan: product.template #4081etsy.listing.product #112
Vì sao có 2 bản ghi cho cùng một sản phẩm? Odoo lưu sản phẩm gốc trong product.template (Danh mục, biến thể, kho, giá USD). Mỗi listing Etsy tương ứng được lưu thêm trong etsy.listing.product (listing_id, trạng thái sync, lỗi gần nhất). Cùng một SKU xuất hiện ở cả hai. Đây là lựa chọn thiết kế từ ADR-008 để giữ vòng đời Etsy độc lập (vd. khi Etsy nâng cấp API thì không ảnh hưởng product.template).
KênhTrạng tháiEtsy listing_idĐã syncLỗi đồng bộ gần nhất
Etsy — JaHandmadeArtDraft (chưa push)
Payload Etsy sẽ gửi (preview):
titleCustom Coffee Mug 11oz — Ceramic White
price (VND)368500
taxonomy_id2172
readiness_state_id1406133708616
materialsCeramic, Chrome auto từ Biến thể
tags (5)coffee-mug, ceramic, 11oz, gift, handmade
personalizationtắt
weight0.34 kg → 12 oz (Etsy đơn vị)
offerings (push_inventory)1 biến thể (Ceramic+Chrome / 11oz)
images1 ảnh chính + 3 ảnh phụ (max 10)
Đây là cảnh BA xem ngay trước khi bấm Publish. Hệ thống tự gói các giá trị từ form + cấu hình mặc định shop (taxonomy_id 2172, readiness_state_id …). Nếu BA bật Override Etsy theo sản phẩm thì các giá trị này được thay thế. Lưu ý: JaHandmadeArt là shop VND nên price được nhân từ USD form theo tỉ giá shop trước khi gửi (đã sửa từ UAT 2026-05-28).
Mockup gốc: panel tuỳ biến trong tab Channels của form sản phẩm (mở rộng từ product.product_template_form_view); không có view chuẩn Odoo cho việc preview payload — đây là lựa chọn thiết kế theo ADR-008 (Etsy listing lưu ở mô hình riêng etsy.listing.product trong etsy_integration).
Màn hình 4 · Modal lỗi 400 — Etsy từ chối publish (TC-014 Cân nặng + Kích thước)
Bán hàngSản phẩm › Custom Coffee Mug 11ozba.lead@hatafa
Sản phẩmCustom Coffee Mug 11ozLỗi đồng bộ
⚠ Etsy trả lỗi 400 khi push listing

Sản phẩm: Custom Coffee Mug 11oz

Bước thất bại: createListing

Mã lỗi HTTP: 400

Thời điểm: 2026-05-28 14:38:21

Đang chờ phản hồi chi tiết từ Etsy. Hệ thống Etsy trả lỗi 400 nhưng chưa cung cấp lý do cụ thể. Đội kỹ thuật đang bổ sung tính năng "capture response body" để hiển thị thông điệp lỗi đầy đủ (kế hoạch R-PUB-RESPONSE-BODY-DIAGNOSE). Đây không phải lỗi giao diện — là vấn đề khả năng quan sát đang được khắc phục.

Các bước tiếp theo: BA Lead báo cho đội Kỹ thuật để cấp diagnostics chi tiết, sau đó bấm Resume Publish để tiếp tục từ bước bị lỗi (không tạo lại từ đầu).

Modal hiện ra sau khi Etsy 400 ở bước createListing. UAT 2026-05-28 ghi nhận 4 ca như vậy (TC-009 cá nhân hoá, TC-013 taxonomy override, TC-014 cân nặng + kích thước, TC-015 variant). Vấn đề không nằm ở giao diện hay quy trình — nằm ở việc client chưa lưu body 400 chi tiết. Đã có kế hoạch R-PUB-RESPONSE-BODY-DIAGNOSE để fix capture body trước khi chạy lại các TC bị 400.
Mockup gốc: hộp cảnh báo chuẩn của Odoo (WarningDialog trong OWL frontend); nội dung lỗi được viết riêng cho ngữ cảnh Etsy 400.
Màn hình 5 · Kanban Sản phẩm lọc theo kênh Etsy — trạng thái đăng bán
Bán hàngSản phẩm › Trạng thái theo kênhba.lead@hatafa
Sản phẩmTrạng thái theo kênh: Etsy
132 sản phẩm · 28 Draft · 98 Published · 6 Error
Draft · 28

Custom Coffee Mug 11oz

SKU: MUG-CR-F11
Giá: 14.50 USD
Cập nhật: hôm nay 14:32

Apron Linen Medium

SKU: APR-LN-AM
Giá: 28.00 USD
Cập nhật: hôm qua
Published · 98

Ring Dish Square

SKU: RDS-CE-SQ
listing_id: 2774…
Bán: 23 đơn / 30 ngày

Doormat 30x18 Welcome

SKU: DMT-TX-R30X18
listing_id: 3104…
Bán: 8 đơn / 30 ngày
Error · 6

Mug Personalised Name

SKU: MUG-CR-F11-BK
Lỗi: 400 personalization
Cần: R-PUB-RESPONSE-BODY-DIAGNOSE

Apron XL Heavy

SKU: APR-LN-AXL
Lỗi: 400 weight/dims
Tuổi lỗi: 3 ngày
Kanban này là điểm nhìn tổng cho BA Lead: bao nhiêu sản phẩm draft đang chờ duyệt, bao nhiêu live trên Etsy, và bao nhiêu đang vướng lỗi. Cột Error là việc cần xử lý — bấm vào thẻ sẽ mở thẳng form sản phẩm tại tab Channels để xem lý do và bấm Resume Publish sau khi sửa.
Mockup gốc: kanban sản phẩm chuẩn của Odoo (product.product_template_kanban_view @ addons/product/views/product_template_views.xml); chỗ khác biệt: nhóm theo "Trạng thái kênh" qua mhc.view_multichannel_sync_health_list + bộ lọc kênh Etsy trong multichannel_hub_core/views/multichannel_sync_health_views.xml.

CTiêu chí thành công

DLiên kết với các luồng khác

ELưu ý và câu hỏi mở

Đang chờ Etsy hỗ trợ: R-PUB-RESPONSE-BODY-DIAGNOSE — capture nội dung lỗi 400 đầy đủ để BA chẩn đoán nhanh. Đây là blocker duy nhất để chuyển trạng thái Luồng 1 từ "Đang xây dựng 85%" sang "Hoạt động".

Còn thiết kế: đồng bộ từ Excel hàng đêm (Cách 2 trong FLOW_TAO_SAN_PHAM_VN). Hôm nay BA tạo tay từng sản phẩm; sau Phase 7 sẽ có cron đêm tự nhập Excel từ Google Drive.

Câu hỏi mở từ ADR-014 (Product Hub): bài toán đa kênh (Amazon, Website) — chưa code. Đến khi Spec 009 spawn, form Channels sẽ có thêm cột; logic publish phải tách thành adapter theo kênh. Hôm nay chỉ Etsy hoạt động.

F-PRICE drift (UAT 2026-05-28): form Sản phẩm chuẩn không enforce giá > 0 (ràng buộc cũ ở wizard cũ đã ẩn). Cần quyết định: thêm constraint ở form, hay tiếp tục dựa vào Etsy push-time enforcement ($0.20 floor)? Hôm nay theo phương án 2.