Bắt đầu ở đây — dành cho người test mới, chưa biết code

Đọc trước khi test

Mở trình duyệt tới http://localhost:3000 (nếu máy chủ chạy ở cổng khác — ví dụ 3001 — đổi số cổng tương ứng). Làm theo các bước dưới, rồi kéo xuống checklist.

  1. Mở trình duyệt tới http://localhost:3000/login (nếu máy chủ chạy ở cổng khác — 3001 — thay số cổng tương ứng, hỏi dev nếu không chắc).
  2. Ở khung 'Chọn nhanh (demo, không mật khẩu)' phía dưới form, bấm thẳng vào tên tài khoản bạn cần (xem bảng Tài khoản test bên dưới) — KHÔNG cần gõ gì thêm. Hoặc gõ email vào ô 'Email hoặc userId', để trống ô Mật khẩu, bấm Đăng nhập.
  3. Sau khi vào ứng dụng, mở tab Tài liệu (biểu tượng Doanh nghiệp → Tài liệu, hoặc gõ thẳng /docs) rồi chọn tab 'Kiểm thử' — đây chính là trang bạn đang xem.
  4. Đi theo từng nhóm từ trên xuống dưới. Với mỗi dòng: bấm 'Mở màn ↗' để mở đúng màn cần test ở tab mới, làm theo cột 'Bước', rồi so kết quả thực tế với cột 'Kỳ vọng'.
  5. Bấm nút PASS hoặc FAIL cho dòng đó (khung 3 nút bên phải mỗi dòng). Có thể gõ thêm Ghi chú nếu FAIL (mô tả lỗi thấy được, không cần thuật ngữ kỹ thuật).
  6. Kết quả tự lưu khi bạn tick (badge góc phải bảng: 'Đã lưu máy chủ' = đã đồng bộ, 'Lưu cục bộ (offline)' = máy chủ tạm không phản hồi nhưng dữ liệu vẫn ở trên máy bạn).
  7. Khi test xong (hoặc xong một phiên), bấm nút 'Sao chép kết quả' — nội dung dạng bảng Markdown được chép vào clipboard, dán vào email/chat gửi cho người phụ trách.
  8. Gặp màn không mở được, nút không phản hồi, hoặc lỗi hiển thị lạ: chụp màn hình + ghi lại đường dẫn (URL) đang mở, gửi kèm khi báo cáo.

Tài khoản test

NhãnTênEmail / userIdMật khẩuGhi chú
ADMIN / PLATFORMNguyễn Hoài Nam (Giám đốc Công nghệ)nam.nguyen@xtech.com.vn(để trống)Tài khoản có mọi quyền (PLATFORM_ADMIN — quyền '*'). Dùng cho MỌI dòng có nhãn [ADMIN] hoặc [PLATFORM]. Đây cũng là tài khoản mặc định để test các màn không ghi nhãn vai trò.
NHÂN VIÊN THƯỜNGTrần Thu Hà (Trưởng nhóm Kinh doanh)ha.tran@xtech.com.vn(để trống)Tài khoản KHÔNG có quyền quản trị — dùng để xác nhận khu Quản trị (/admin/*) và Platform Console (/platform/*) KHÔNG hiện ra cho người dùng thường.
T002 (đa tenant)Admin tenant Chủ đầu tư BĐS Demo (tenant-realestate-demo)(userId: tenant-realestate-demo-admin)cần dev cấp — xem ghi chúTài khoản này KHÔNG đăng nhập được bằng cách chọn nhanh (không nằm trong danh sách 16 người tenant-xtech). Mật khẩu được sinh ngẫu nhiên mỗi lần chạy `npm run provision:t002` ở xhub-api và chỉ in ra console lúc đó (biến môi trường T002_ADMIN_PASSWORD/T002_EMP_PASSWORD nếu dev đặt trước). Nếu bạn cần test nhóm 'Đa tenant' (U52–U54), hãy nhờ dev cung cấp mật khẩu hiện hành hoặc chạy lại lệnh trên và gửi bạn kết quả.

[ENFORCE]: [ENFORCE] = màn/luồng đó chỉ thể hiện đúng khi máy chủ API bật AUTH_ENFORCE=true. Ở môi trường demo mặc định (đa số trường hợp) biến này TẮT — các dòng [ENFORCE] không kiểm tra được, hãy để 'Chưa test' và ghi chú 'N/A demo mode', KHÔNG tính là FAIL.

Báo cáo kết quả: Gửi kết quả (bấm 'Sao chép kết quả' rồi dán) cho quản trị viên tenant X-TECH phụ trách XHub, hoặc bộ phận IT phụ trách nền tảng. Nếu không rõ người nhận, hỏi người đã gửi bạn tài liệu này.

User test — checklist bạn tự tick

Cục bộ

💡 Chụp màn hình (Print Screen / Snipping Tool), bấm Ctrl+V ngay trong ô ghi chú của từng dòng để đính kèm ảnh minh chứng — không cần chọn file.

Đã test

0/79

🧪

PASS

0

✅

FAIL

0

❌

Tiến độ

0%

📊

X.Office

U27Request Center /office/requests — tạo→submit→duyệtMở màn ↗

Kỳ vọng: Tạo yêu cầu → submit → người duyệt approve; trạng thái chuyển đúng

U28Yêu cầu — comment + đính kèm + thực thi/bằng chứngMở màn ↗

Kỳ vọng: Thêm bình luận & tệp đính kèm; bước execute ghi nhận evidence

U29My Requests /office/my-requestsMở màn ↗

Kỳ vọng: Chỉ hiện yêu cầu của chính mình; trạng thái đồng bộ với Request Center

U30Directive /office/directives — issue→acknowledge→acceptMở màn ↗

Kỳ vọng: Tạo chỉ đạo → issue → người nhận acknowledge → accept; timeline ghi nhận

U31Service Desk /office/service-desk — ticket vòng đờiMở màn ↗

Kỳ vọng: Tạo ticket → assign → resolve → CSAT; SLA/trạng thái cập nhật

U32Booking /office/bookings — tạo→duyệt→check-inMở màn ↗

Kỳ vọng: Đặt chỗ tạo→duyệt→check-in; đặt trùng khung giờ trả xung đột (409)

U33Announcement /office/announcements — publish→read→ack→remindMở màn ↗

Kỳ vọng: Publish thông báo → người nhận read → acknowledge → báo cáo tỷ lệ + nhắc lại (remind)

U34Inbox /inbox — hộp việcMở màn ↗

Kỳ vọng: Các work-item cần xử lý gom về hộp việc; mở item → sang màn xử lý đúng

U35Approvals /approvals — hàng chờ duyệtMở màn ↗

Kỳ vọng: Danh sách chờ duyệt tập trung; approve/reject cập nhật nguồn

U36Workflows /office/workflows — quy trìnhMở màn ↗

Kỳ vọng: Danh sách quy trình; mở builder/form/versions của 1 quy trình hiển thị đúng

U37Monitor /office/monitor — giám sát vận hànhMở màn ↗

Kỳ vọng: Bảng giám sát instance/quy trình đang chạy hiển thị số liệu

Tài liệu

U38Mở /documentsMở màn ↗

Kỳ vọng: Chip 'Kho tài liệu trực tiếp (/api/records)'; danh sách tài liệu; Dung lượng + Phiên bản có số thật

U39Mở 1 tài liệu — lịch sử phiên bảnMở màn ↗

Kỳ vọng: Timeline phiên bản bất biến (bản hiện hành / bản cũ), size/mime/tác giả/sha256

U40'+ Tải tài liệu' (upload)Mở màn ↗

Kỳ vọng: Drawer upload → tạo tài liệu mới thật, quay lại thấy trong danh sách

U41'Phiên bản mới' + 'Tải nội dung'Mở màn ↗

Kỳ vọng: Thêm version (+1, bản cũ giữ nguyên); tải nội dung 1 phiên bản đúng nội dung

Công việc

U56Danh sách dự án /work/projects → mở 1 dự ánMở màn ↗

Kỳ vọng: Thấy danh sách ExecutionProject; mở chi tiết 1 dự án hiển thị WBS/tiến độ/baseline

U57Gantt — mở nút 'Gantt' trên chi tiết dự ánMở màn ↗

Kỳ vọng: Timeline kéo dài theo ngày; thanh kế hoạch vs thực tế; đường phụ thuộc FS/SS/FF/SF; mốc milestone; cây WBS thu/mở

U58Gantt — kéo/resize 1 thanh việc

Kỳ vọng: Ngày cập nhật ngay (optimistic); nếu đổi ngày phá vỡ phụ thuộc FS → báo lỗi, tự rollback về ngày cũ

U59Gantt phối hợp — mở link chia sẻ dạng SUMMARY

Kỳ vọng: CHỈ thấy thanh việc CHA (tiêu đề + % tiến độ + ngày); KHÔNG thấy việc con, KHÔNG thấy mô tả chi tiết; có badge 'Chia sẻ phối hợp'

U60Bảng Kanban /work/boardMở màn ↗

Kỳ vọng: Cột theo trạng thái; kéo thẻ đổi cột → trạng thái lưu server (rollback nếu trạng thái không hợp lệ); có thể gom nhóm theo tag/chiều phân tích

U61Lịch /work/calendarMở màn ↗

Kỳ vọng: Lưới tháng hiện việc theo hạn (dueAt) + milestone; bấm 1 việc mở chi tiết

U62Danh mục dự án /work/portfolioMở màn ↗

Kỳ vọng: Thẻ KPI: số dự án đang chạy/đỏ/quá hạn/nghẽn; biểu đồ sức khỏe; bấm vào bảng dự án chi tiết

U63Thống kê đa chiều /work/reportsMở màn ↗

Kỳ vọng: Chọn trục hàng (tag/chiều/status/loại/ưu tiên/dự án) × trục cột × chỉ số (đếm/tiến độ TB/quá hạn) → bảng pivot + biểu đồ cột đúng số

Quản trị

U64Trang chủ điều hành /manageMở màn ↗

Kỳ vọng: Thẻ sức khỏe: số mục tiêu đúng tiến độ, KPI đỏ, quyết định đang mở, action quá hạn — số liệu thật

U65Mục tiêu chiến lược /manage/objectivesMở màn ↗

Kỳ vọng: 4 mục tiêu (Tăng trưởng/Khách hàng/Vận hành/Năng lực) mở chi tiết 1 mục tiêu → thấy chỉ số liên kết

U66Chỉ số /manage/metrics — KPI ACT-CLOSEMở màn ↗

Kỳ vọng: Biểu đồ tỷ lệ cam kết đúng hạn tính TỪ dữ liệu Work thật (không nhập tay); giá trị khớp số việc quá hạn thực tế

U67Review /manage/reviews — mở 1 review thángMở màn ↗

Kỳ vọng: Pre-read: snapshot chỉ số + ngoại lệ (RAG) → quyết định RAPID → action; bấm action → sang đúng việc thật /work/items/[id]

U68Đóng 1 review

Kỳ vọng: Trạng thái review chuyển sang 'Follow-up'/'Đã đóng'; follow-up được ghi nhận

U69Quyết định /manage/decisionsMở màn ↗

Kỳ vọng: Danh sách quyết định kiểu RAPID (Recommend/Agree/Decide/Input/Perform); có độ tuổi (aging) của quyết định chưa xử lý

U85Scorecard /manage/scorecardsMở màn ↗

Kỳ vọng: 4 góc nhìn (Tài chính/Khách hàng/Vận hành/Năng lực); KPI đỏ hiển thị RÕ RÀNG — không bị điểm gộp/trung bình che đi

U86OKR /manage/okrs — mở chu kỳ 2026Q3Mở màn ↗

Kỳ vọng: 2 mục tiêu O-001/O-002, mỗi mục tiêu có Key Result kèm % tin cậy; Key Result liên kết Initiative/Action — KHÔNG phải danh sách task thô

U87Thêm 1 check-in cho 1 Key Result

Kỳ vọng: Check-in mới xuất hiện; lịch sử check-in CŨ vẫn còn nguyên (không bị ghi đè/xoá)

U98Danh mục đầu tư /manage/portfolioMở màn ↗

Kỳ vọng: Portfolio PF-CORE gồm 3 initiative theo 3 giai đoạn khác nhau (stage-gate); initiative CHƯA gắn dự án hiện badge 'Chưa gắn thực thi'

U99Gắn 1 dự án thực thi có sẵn cho initiative chưa gắnMở màn ↗

Kỳ vọng: Sau khi gắn, hiện nhãn 'Nguồn: Work v2' + health/tiến độ THẬT của dự án; bấm 'Xem thực thi' sang đúng /work/projects/[id]

U100Chuyển giai đoạn 1 initiative bằng nút mũi tên

Kỳ vọng: Chỉ chuyển được sang giai đoạn TIẾP THEO (không nhảy cóc); nút 'Dừng' luôn khả dụng và không quay lại được sau khi dừng

IOC — Bản sao số

U71Trung tâm điều hành /iocMở màn ↗

Kỳ vọng: Thẻ: bảng điều khiển đã xuất bản, scene đã xuất bản, số lớp dữ liệu, số phòng ban bận/quá tải — số liệu thật, không phải mẫu

U72Bản sao số văn phòng /ioc/twin/officeMở màn ↗

Kỳ vọng: Mặt bằng 2D hiện 8 vùng với TÊN PHÒNG BAN THẬT (Ban Điều hành, Kinh doanh, Tài chính…) + màu theo mức tải; thẻ KPI khớp số ở bảng bên dưới

U73Bấm tab 'Không gian 3D' ở màn twin

Kỳ vọng: Hiện khối 3D xoay/zoom được, chiều cao khối theo mức tải; đóng tab về 2D vẫn nguyên dữ liệu

U74TẮT WebGL trong trình duyệt rồi mở lại /ioc/twin/office (AT-007)Mở màn ↗

Kỳ vọng: Trang VẪN dùng được đầy đủ: mặt bằng 2D + danh sách vùng + KPI hiện đủ; chỉ báo '3D không khả dụng', không có màn trắng/lỗi

U75Twin Studio /ioc/studioMở màn ↗

Kỳ vọng: Chuỗi cấu hình 7 bước + danh sách scene/mặt bằng với trạng thái và số phiên bản

U76Trình vẽ mặt bằng: chọn 1 vùng, đổi tên, kéo 1 đỉnh

Kỳ vọng: Lưới 1 m + thước tỷ lệ; kéo đỉnh đổi hình; sau ~1,5s tự lưu, hiện 'Đã lưu bản nháp (revision N)'

U77Trình vẽ: công cụ 'Vẽ vùng' → bấm 4 điểm → Hoàn tất; thử vẽ hình nơ (tự cắt)

Kỳ vọng: Vùng hợp lệ được tạo; hình tự cắt bị chặn kèm thông báo (máy chủ cũng từ chối)

U78Trình vẽ: gán 1 vùng cho đơn vị + chọn icon, rồi Hoàn tác/Làm lại

Kỳ vọng: Nhãn vùng đổi thành tên đơn vị thật + icon; Ctrl+Z / Ctrl+Shift+Z hoạt động

U79Trình vẽ: bấm 'Xuất bản phiên bản' 2 lần (có sửa ở giữa)

Kỳ vọng: Tạo v1 rồi v2 kèm checksum; v1 chuyển SUPERSEDED chứ KHÔNG bị sửa/xoá

U80Lớp dữ liệu /ioc/studio/data-layersMở màn ↗

Kỳ vọng: Mỗi lớp hiện kết quả trực tiếp theo phòng ban; phần Catalog ghi rõ hệ thống nguồn (SoR) và cảnh báo cấm camera/chấm công/sinh trắc học

U81Tạo 1 việc mới ở /work/tasks rồi tải lại /ioc/studio/data-layersMở màn ↗

Kỳ vọng: Tổng tải của phòng ban tương ứng TĂNG — chứng tỏ IOC chiếu dữ liệu Work thật, không lưu số riêng

U82Bảng điều khiển /ioc/studio/dashboardsMở màn ↗

Kỳ vọng: Xem trước bố cục lưới 12 cột đúng như màn twin; danh mục widget được phép hiển thị đầy đủ

U83Rà soát & xuất bản /ioc/studio/publishMở màn ↗

Kỳ vọng: Bảng lịch sử phiên bản cho mặt bằng/scene/bảng điều khiển kèm checksum + trạng thái PUBLISHED/SUPERSEDED

U84Icon & asset /ioc/studio/assetsMở màn ↗

Kỳ vọng: 14 icon dựng sẵn; mục tải asset tuỳ chỉnh ghi rõ CHƯA MỞ kèm lý do an toàn

U101Bấm 1 vùng trên mặt bằng 2D ở /ioc/twin/officeMở màn ↗

Kỳ vọng: Cột phải đổi từ 'AI Twin Brief' sang 'Chi tiết vùng: <tên phòng ban>' — hiện danh sách người giữ vị trí (tên thật + chức danh), việc đang xử lý, cảnh báo của đúng vùng đó; nút 'Quay lại AI Twin Brief' trả về màn cũ

U102Chuyển sang tab 'Không gian 3D' rồi bấm 1 khối vùng khác

Kỳ vọng: Cùng panel chi tiết vùng cập nhật đúng theo khối vừa bấm (không cần rời màn 3D); khối đang chọn sáng lên rõ hơn các khối khác

U103Đăng nhập bằng tài khoản KHÔNG có quyền xem chi tiết cá nhân (ví dụ nhân viên thường), bấm 1 vùng

Kỳ vọng: Panel báo lỗi rõ ràng (không phải màn trắng) — từ chối xem roster cá nhân, đúng tinh thần 'dữ liệu cá nhân cần quyền riêng'

U104Khối 'Xu hướng chỉ số (thật)' trong AI Twin Brief

Kỳ vọng: Hiện cột chỉ số + mini biểu đồ cột từ các kỳ MetricObservation thật (không phải luôn 'chưa đủ dữ liệu')

U105Khối 'Phân bố giờ vào/ra' cuối trang /ioc/twin/officeMở màn ↗

Kỳ vọng: Biểu đồ cột 24 giờ, xanh=vào/xanh dương=ra, dựng từ AttendanceEvent thật (PE-02); nếu tenant chưa import chấm công thì hiện đúng lý do trung thực thay vì biểu đồ trống

Nhân sự & Công

U90Trang chủ /peopleMở màn ↗

Kỳ vọng: Thẻ số dư theo từng loại nghỉ (nghỉ phép năm/ốm/không lương/nghỉ bù/từ xa) khớp seed:people-leave; đơn đang chờ hiện đúng

U91Tạo đơn nghỉ /people/leave — chọn ngày rồi bấm 'Xem trước ảnh hưởng'Mở màn ↗

Kỳ vọng: Hiện mức ảnh hưởng LOW/MEDIUM/HIGH + số việc/phê duyệt/đặt phòng/chỉ đạo đến hạn trong kỳ nghỉ — số liệu thật, nút Gửi chỉ bật SAU khi đã xem trước

U92Gửi đơn nghỉ vừa xem trướcMở màn ↗

Kỳ vọng: Đơn xuất hiện ở 'Đơn của tôi' trạng thái SUBMITTED; đồng thời hiện ở /approvals và /inbox (không tạo hàng đợi duyệt riêng)

U93Gửi lại đơn y hệt (double-click nhanh nút Gửi)

Kỳ vọng: KHÔNG tạo 2 đơn trùng — idempotency chặn tạo trùng dù bấm nhiều lần

U94Lịch hiện diện nhóm /people/team/availability — mặc định đơn vị của mìnhMở màn ↗

Kỳ vọng: Danh sách định biên thật (Position) + đơn đang chờ duyệt của đơn vị; bấm 'Duyệt'/'Từ chối' đổi trạng thái ngay

U95Chọn 1 đơn vị NGOÀI phạm vi quản lý của mình ở /people/team/availabilityMở màn ↗

Kỳ vọng: Hiện rõ thông báo 'Ngoài phạm vi của bạn' (403 do DataScope) — KHÔNG hiện lẫn lộn với 'Backend offline'

U96Duyệt 1 đơn nghỉ rồi quay lại /peopleMở màn ↗

Kỳ vọng: Số dư (available) giảm đúng bằng số ngày nghỉ; đơn chuyển APPROVED

U97Huỷ 1 đơn đã duyệt (APPROVED) ở /people/leave

Kỳ vọng: Chuyển CANCEL_REQUESTED trước, không huỷ thẳng; sau khi HR/quản lý duyệt huỷ, số dư được hoàn lại đúng

Kinh doanh

U112Khách hàng /office/customers — tạo khách hàng mới (tên gần giống 1 khách đã có), xem gợi ý trùng, mở 360 viewMở màn ↗

Kỳ vọng: Tạo thành công; hiện gợi ý 'có thể trùng' với khách hàng tên gần giống (so khớp theo từ khoá, không cần trùng y hệt); trang 360 view hiển thị đúng liên hệ + dòng thời gian sự kiện của khách hàng vừa tạo

U113Cơ hội bán hàng /office/opportunities — tạo cơ hội gắn với 1 khách hàng, chuyển trạng thái LEAD→QUALIFIED→DISCOVERY→PROPOSAL→NEGOTIATIONMở màn ↗

Kỳ vọng: Chỉ chuyển được đúng thứ tự cho phép (không nhảy cóc, ví dụ không thể LEAD→NEGOTIATION thẳng); mỗi lần chuyển có ghi log lịch sử

U114Chuyển 1 cơ hội khác sang LOST mà KHÔNG nhập lý doMở màn ↗

Kỳ vọng: Bị từ chối, bắt buộc nhập lý do (lostReason) mới chuyển được sang LOST

U115Chuyển 1 cơ hội sang WON (thắng)Mở màn ↗

Kỳ vọng: Chuyển trạng thái thành công nhưng KHÔNG tự sinh hợp đồng/doanh thu nào — 'Thắng cơ hội' không đồng nghĩa 'đã có doanh thu' (phải tạo Hợp đồng riêng ở bước sau)

U116Danh mục thương mại /office/catalog — xem danh sách gói dịch vụ/sản phẩm để chào bánMở màn ↗

Kỳ vọng: Hiển thị đúng tên, loại, mô hình giá của từng mục; version tăng lên khi có mục nào được sửa

U117Báo giá — tạo báo giá theo 1 cơ hội, thêm 1 dòng chiết khấu > 15%

Kỳ vọng: Tổng tiền báo giá tự tính đúng bằng tổng các dòng; báo giá tự chuyển sang 'cần duyệt' vì chiết khấu vượt ngưỡng 15%

U118Duyệt báo giá 'cần duyệt' ở trên mà KHÔNG nhập ghi chú người duyệt

Kỳ vọng: Bị từ chối (400) — báo giá có chiết khấu vượt ngưỡng bắt buộc phải có ghi chú người duyệt mới chuyển được sang trạng thái Đã duyệt

U119Hợp đồng /office/contracts — tạo hợp đồng từ báo giá đã duyệt, thêm dòng hợp đồng, chuyển trạng thái tới SIGNING (chờ ký)Mở màn ↗

Kỳ vọng: Tên khách hàng + tổng tiền hiển thị đúng ở đầu trang; từ khi vào SIGNING trở đi, KHÔNG sửa/thêm được dòng hợp đồng nữa (phải làm phụ lục — tính năng để sau)

U120Bấm 'Ký hợp đồng (mock)', sau đó thử chuyển sang EFFECTIVE (có hiệu lực)Mở màn ↗

Kỳ vọng: Ghi nhận đúng 1 chữ ký (nhà cung cấp MOCK — CHƯA nối DocuSign/HelloSign thật); chỉ chuyển được sang EFFECTIVE sau khi đã có ít nhất 1 chữ ký, thử chuyển khi chưa ký sẽ bị từ chối

U121Sau khi hợp đồng EFFECTIVE, mở tab Nghĩa vụ & cảnh báoMở màn ↗

Kỳ vọng: Tự sinh nghĩa vụ cho các dòng thanh toán theo mốc (billingMethod = MILESTONE); trạng thái cảnh báo hiển thị đúng theo hạn (Đang chờ/Sắp đến hạn/Trễ hạn)

U122Hoàn thành 1 nghĩa vụ (nhập bằng chứng), sau đó bấm 'Tạo yêu cầu xuất hoá đơn' 2 LẦN LIÊN TIẾPMở màn ↗

Kỳ vọng: Nghĩa vụ chuyển 'Hoàn thành'; yêu cầu xuất hoá đơn KHÔNG bị tạo trùng khi bấm lại lần 2 (idempotent) — chỉ có đúng 1 yêu cầu

U123KPI doanh thu /office/revenue-kpi — xem 6 chỉ sốMở màn ↗

Kỳ vọng: Mỗi KPI có công thức + nguồn dữ liệu rõ ràng; 2 chỉ số cần hệ thống FinERP thật hiển thị đúng là 'chưa sẵn sàng' (không bịa số ảo)

Đa tenant

U52Đăng nhập user T002 (tenant-realestate-demo) [ENFORCE]Mở màn ↗

Kỳ vọng: Thấy đúng dữ liệu T002 (người dùng/đơn vị/tài liệu của T002)

U53Kiểm tra cách ly khỏi T001 [ENFORCE]Mở màn ↗

Kỳ vọng: User T002 KHÔNG thấy bất kỳ bản ghi nào của T001; RLS chặn rò rỉ

U54Tài liệu T002 vào folder riêng [ENFORCE]Mở màn ↗

Kỳ vọng: Tài liệu T002 lưu ở folder/tenant riêng, tách biệt lưu trữ T001

U88Đăng nhập tenant T003 (Sản xuất) → /manage/objectives + /manage/metricsMở màn ↗

Kỳ vọng: Mục tiêu/KPI về SẢN XUẤT thật (OEE, tỷ lệ lỗi/phế phẩm, MTBF, OTIF) — KHÔNG phải bộ KPI văn phòng/công nghệ của T001

U89So sánh với tenant T004 (Phân phối/Bán lẻ) → /manage/objectivesMở màn ↗

Kỳ vọng: Bộ KPI khác hẳn T003 (vòng quay tồn kho, hàng chết, CAC…) — chỉ trùng đúng 1 chỉ số chung ACT-CLOSE (tính từ Work)