Giao diện
US-E03: Chia sẻ kết quả retry (copy gửi dev, mở Check luồng) ​
Thuộc FS: 00-overview.md — SAPP-20603 eContract (Retry · Check luồng · Thống kê lỗi) Phần chung (tổng quan, roles, flow tổng, related features, NFR, Open Questions, References) xem ở Overview. File này chỉ chứa nội dung riêng của US.
| Field | Value |
|---|---|
| US ID | US-E03 |
| Role thực hiện | R1 - Người dùng tool (Assumption (OQ về G-01) — OQ-E-04) |
| Phase | Đã triển khai (as-built @ e77c47a) — sub-tool sapp.005 Retry econtract |
| Priority | N/A — as-built |
| Status | Draft |
| NFR liên quan | NFR-E-01, NFR-E-02 — xem Overview §5 |
| OQ liên quan | OQ-E-04, OQ-E-05, OQ-E-12 — xem Overview §6 |
1. US Statement ​
text
As a Người dùng tool [Assumption (OQ về G-01)]
I want copy tóm tắt tình trạng flow process của deal để gửi developer khi không tự xử lý được,
và mở nhanh màn Check luồng khi retry đã thành công
So that [Assumption — OQ-E-12] developer có đủ thông tin để điều tra mà tôi không phải chép tay,
và tôi xem được toàn bộ luồng hợp đồng sau khi chạy lại2. Dependencies & Definition Of Ready ​
N/A — đã triển khai. Dependency runtime: đang ở một lượt của US-E01 / US-E02 trên màn Retry econtract; trình duyệt cho phép ghi clipboard.
| # | Cần sẵn sàng | Ai cung cấp | Trạng thái |
|---|---|---|---|
| D1 | Lượt kiểm tra / retry đang có trên màn (US-E01, US-E02) | - | Trong màn |
| D2 | Tool sapp.012 truy cập được để mở Check luồng — US-P02 | Admin CMS | Runtime |
3. Business Rules ​
| ID | Rule | Áp dụng ở | Đã cover bởi (AC) | Nguồn code (Mode B/C) |
|---|---|---|---|---|
| BR-01 | Ghi chú "Cần liên hệ developer để kiểm tra kỹ hơn. Bấm “Copy thông tin gửi dev” để gửi kèm." và nút copy chỉ hiện khi: dừng ở bước 1, hoặc đã ≥ 2 lượt liên tiếp "Chưa chạy" | M1 - vùng ghi chú | AC-M1.1, AC-M1.2, EC-M1.1 | fe/src/ui/components/works/sapp/retry-econtract-tool.tsx:145-146 · :520 · :682-704 |
| BR-02 | Nội dung copy gồm: Deal: <id>; Lý do: <lý do dừng ở bước 1> hoặc "Sau N lượt chờ cron vẫn chưa chạy."; mỗi flow process 1 dòng - tên · status · retry=N · reprocess=N · cập nhật <giờ>. Dùng dữ liệu đọc lại gần nhất nếu có, không thì dữ liệu bước 1 | M1 - action A1 | AC-M1.3 | retry-econtract-tool.tsx:464-482 |
| BR-03 | Chỉ copy vào clipboard dạng text — không tạo file; nút đổi thành "Đã copy" trong 1,5 giây | M1 - action A1 | AC-M1.3 | retry-econtract-tool.tsx:476-481 · :701 |
| BR-04 | Chỉ khi kết quả retry là SUCCESS mới có link "Xem chi tiết ở Check luồng econtract"; link mở màn Check luồng cùng tab với ?dealId= (được mã hoá), màn đó tự chạy tra cứu 1 lần | M1 - action A2 | AC-M1.4 | retry-econtract-tool.tsx:662-668 · fe/src/ui/components/works/sapp/econtract-timeline-tool.tsx:636-648 |
4. Design ​
a. Mối liên hệ giữa các màn & User Flow ​
text
[US-E01 Dừng ở bước 1] ─┐
[US-E02 ≥ 2 lượt "Chưa chạy"] ─┴→ [M1: ghi chú liên hệ dev] → "Copy thông tin gửi dev" → clipboard → (gửi dev ngoài hệ thống)
[US-E02 kết quả SUCCESS] → "Xem chi tiết ở Check luồng econtract" → [US-E04 Check luồng, tự tra cứu]b. Chi tiết từng màn ​
Màn M1 - Vùng chia sẻ trên màn Retry econtract ​
| Field | Value |
|---|---|
| Figma frame | N/A |
| Trigger vào màn | Tự hiện theo BR-01 / BR-04 trong lượt kiểm tra / retry |
| Mô tả ngắn | Khung cảnh báo vàng có ghi chú liên hệ dev + nút copy; hoặc link sang Check luồng trong vùng kết quả SUCCESS |
UI States ​
| State | Khi nào | Hiển thị | Figma frame |
|---|---|---|---|
| Default | BR-01 thoả | Ghi chú liên hệ developer + nút "Copy thông tin gửi dev" | N/A |
| Loading | N/A — copy là thao tác tức thì, không gọi API | - | N/A |
| Has data | Vừa copy | Nút đổi "Đã copy" (1,5 giây) | N/A |
| Empty | BR-01 không thoả | Không có khung ghi chú | N/A |
| Error | N/A — không có thông báo lỗi riêng khi copy thất bại | - | N/A |
| Disabled | N/A — nút không bị khoá | - | N/A |
Fields ​
| Field | Required | Type | Default | Format | Validation | Error Message | Visibility | Depends On |
|---|---|---|---|---|---|---|---|---|
| (nội dung copy) | - | Text nhiều dòng | - | Theo BR-02 | - | - | Không hiển thị trên màn, chỉ vào clipboard | Dữ liệu đọc gần nhất |
Filter / Search / Sort (chỉ màn List/Report — xóa nếu không phải) ​
N/A — không phải màn danh sách.
Actions ​
A1 - Copy thông tin gửi dev ​
| Item | Description |
|---|---|
| Trigger | Bấm "Copy thông tin gửi dev" |
| Behavior | Dựng text theo BR-02, ghi vào clipboard trình duyệt (không ghi hệ thống nào, không tạo file — NFR-E-02) |
| Success Result | Nút hiện "Đã copy" 1,5 giây |
Error cases:
| Case | Expected Handling |
|---|---|
| Trình duyệt chặn clipboard | Không có thông báo lỗi riêng (nút vẫn đổi "Đã copy") — hành vi của thư viện copy, chưa kiểm chứng khi chạy |
A2 - Xem chi tiết ở Check luồng econtract ​
| Item | Description |
|---|---|
| Trigger | Bấm link khi kết quả SUCCESS |
| Behavior | Điều hướng cùng tab tới /works/sapp/tools/econtract-timeline?dealId=<id>; màn đích điền và tự tra cứu (chỉ đọc) |
| Success Result | Màn Check luồng hiển thị timeline của deal (US-E04) |
Error cases:
| Case | Expected Handling |
|---|---|
| Tool sapp.012 đang khoá | Xử lý theo US-P02 |
Acceptance Criteria của màn M1 ​
AC-M1.1 - Ghi chú khi dừng ở bước 1 ​
gherkin
Given lượt kiểm tra deal D kết luận Dừng ở bước 1
When màn hiển thị kết luận
Then hiện ghi chú "Cần liên hệ developer để kiểm tra kỹ hơn…" và nút "Copy thông tin gửi dev"Maps to:
- Business Rule: BR-01
AC-M1.2 - Ghi chú sau 2 lượt Chưa chạy ​
gherkin
Given lượt chờ cron thứ nhất và thứ hai liên tiếp đều cho kết quả "Chưa chạy"
When kết quả lượt thứ hai hiện ra
Then hiện ghi chú liên hệ developer và nút copy
And ở lượt thứ nhất ghi chú chưa hiệnMaps to:
- Business Rule: BR-01
AC-M1.3 - Nội dung copy ​
gherkin
Given deal 123 dừng ở bước 1 vì "Không tìm thấy flow process nào cho deal này."
When người dùng bấm "Copy thông tin gửi dev"
Then clipboard chứa "Deal: 123" và "Lý do: Không tìm thấy flow process nào cho deal này."
And không có file nào được tạo
And nút hiện "Đã copy" rồi trở lại sau 1,5 giâyMaps to:
- Business Rule: BR-02, BR-03
- Field/Action: A1
AC-M1.4 - Mở Check luồng khi SUCCESS ​
gherkin
Given kết quả retry của deal 123 là SUCCESS
When người dùng bấm "Xem chi tiết ở Check luồng econtract"
Then trình duyệt mở …/econtract-timeline?dealId=123 trong cùng tab
And màn Check luồng tự tra cứu deal 123Maps to:
- Business Rule: BR-04
- Field/Action: A2
Negative AC / Edge Cases của màn M1 ​
| ID | Tình huống | Hành vi mong đợi |
|---|---|---|
| EC-M1.1 | Kết quả "Vẫn FAIL" ở lượt đầu | Hành vi hiện tại: không hiện ghi chú liên hệ dev (BR-01 chỉ tính dừng ở bước 1 và "Chưa chạy"); người dùng Kiểm tra lại |
| EC-M1.2 | Lý do khi không dừng ở bước 1 | Luôn là "Sau N lượt chờ cron vẫn chưa chạy." (N = số lượt "Chưa chạy" liên tiếp) |
| EC-M1.3 | ⚠️ Observed — giờ "cập nhật" trong nội dung copy | Có thể lệch múi giờ như US-E01 EC-M1.4 (OQ-E-05) |
| EC-M1.4 | Nội dung copy có chứa dữ liệu khách hàng? | Không — chỉ deal id, tên flow, trạng thái, bộ đếm, giờ cập nhật (BR-02) |
5. Cross-feature AC ​
AC-X.1 - Mở màn đích khi tool Check luồng bị khoá ​
gherkin
Given tool sapp.012 đang khoá trên hub
When người dùng bấm "Xem chi tiết ở Check luồng econtract"
Then FE xử lý truy cập theo US-P02Maps to:
- REL-01 (Affects - Hub & khoá tool)