Skip to content

US-E06: Xem danh sách deal lỗi và trạng thái tự hồi phục ​

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.

Chỉ đọc. Danh sách đến từ cùng lượt tải của US-E05 (không có lời gọi API riêng); thao tác trong modal chỉ copy vào clipboard hoặc mở màn khác — không ghi hệ thống nào.

FieldValue
US IDUS-E06
Role thực hiệnR1 - Người dùng tool (Assumption (OQ về G-01) — OQ-E-04)
PhaseĐã triển khai (as-built @ e77c47a) — sub-tool sapp.013 Thống kê lỗi econtract
PriorityN/A — as-built
StatusDraft
NFR liên quanNFR-E-01, NFR-E-02, NFR-E-03 — xem Overview §5
OQ liên quanOQ-E-04, OQ-E-10, OQ-E-11, OQ-E-12 — xem Overview §6

1. US Statement ​

text
As a Người dùng tool  [Assumption (OQ về G-01)]
I want xem danh sách các deal có lần chạy lỗi trong khoảng đang thống kê, lọc deal "Vẫn lỗi" /
       "Đã tự hồi phục", copy deal id và mở Check luồng của từng deal
So that [Assumption — OQ-E-12] tôi tách được deal còn cần xử lý khỏi deal cron retry đã tự xử lý,
       rồi điều tra từng deal còn lỗi

2. Dependencies & Definition Of Ready ​

N/A — đã triển khai. Dependency runtime:

#Cần sẵn sàngAi cung cấpTrạng thái
D1Đã tải thống kê ở US-E05 và có ≥ 1 deal lỗi-Trong màn
D2Tool sapp.012 truy cập được để mở Check luồng — US-P02Admin CMSRuntime

3. Business Rules ​

IDRuleÁp dụng ởĐã cover bởi (AC)Nguồn code (Mode B/C)
BR-01Nút "Danh sách" chỉ nằm ở ô "Deal bị lỗi" và chỉ hiện khi danh sách deal lỗi có ≥ 1 dealUS-E05 M1 - ô Deal bị lỗiAC-M1.1fe/src/ui/components/works/sapp/econtract-error-stats-tool.tsx:426-434 · :451-461
BR-02Danh sách chứa tối đa 500 deal lỗi gần nhất trong khoảng; bị cắt thì tiêu đề là "Deal bị lỗi (500 / tổng)" và có cảnh báo DEALS_TRUNCATED ("Có hơn 500 deal lỗi — danh sách chỉ hiện 500 deal lỗi gần nhất. Thu hẹp khoảng thời gian để xem đủ.")M1 - tiêu đề, cảnh báoAC-M1.2be/libs/constants/src/lib/sapp/sapp.constants.ts:206-215 · be/libs/modules/src/lib/sapp/common.service.ts:2044-2064 · :2109-2122 · econtract-error-stats-tool.tsx:85-86 · :785
BR-03Sắp lỗi gần nhất ở trên (theo thời điểm lỗi cuối)M1 - danh sáchAC-M1.2common.service.ts:2062 · econtract-error-stats-tool.tsx:787
BR-04Deal "Đã tự hồi phục" = lần chạy cuối cùng của deal trong khoảng (mọi trạng thái) là SUCCESS; còn lại là "Vẫn lỗi". Màn giải thích: "SUCCESS nghĩa là cron retry đã tự xử lý; FAIL là vẫn đang hỏng."M1 - bộ lọc, cột Lần chạy cuốiAC-M1.3common.service.ts:2040-2043 · :2058 · econtract-error-stats-tool.tsx:742-743 · :837-842
BR-05Bộ lọc 3 nút "Tất cả" / "Vẫn lỗi" / "Đã tự hồi phục" kèm số đếm; ô tìm "Lọc theo deal id, flow, lỗi…" (không phân biệt hoa thường) kết hợp với bộ lọc; chân modal "Đang hiện N deal"M1 - lọc / tìmAC-M1.4econtract-error-stats-tool.tsx:736-740 · :762-776 · :790-795 · :808-834
BR-06Copy: nút "Copy N deal id" copy các deal đang hiện (mỗi id 1 dòng, khoá khi N = 0); nút copy từng dòng copy 1 deal id; chỉ vào clipboard, không tạo file; nút đổi "Đã copy" 1,5 giâyM1 - action A1, A2AC-M1.5econtract-error-stats-tool.tsx:778-782 · :796-804 · :959-970
BR-07Nút mở ngoài ở mỗi dòng mở Check luồng econtract của deal ở tab mới (?dealId= được mã hoá) — màn đó tự tra cứuM1 - action A3AC-M1.6econtract-error-stats-tool.tsx:972-982 · fe/src/ui/components/works/sapp/econtract-timeline-tool.tsx:636-648
BR-08Mỗi deal hiện: deal id, flow lỗi, số lần lỗi, lỗi cuối lúc, lần chạy cuối (trạng thái), lỗi gần nhất (dòng đầu của error)M1 - danh sáchAC-M1.2econtract-error-stats-tool.tsx:846-940 · common.service.ts:2044-2064

4. Design ​

a. Mối liên hệ giữa các màn & User Flow ​

text
[US-E05 kết quả] → ô "Deal bị lỗi" → "Danh sách"
  ↓
[M1: Modal "Deal bị lỗi (N)"]
  ├─ lọc Tất cả / Vẫn lỗi / Đã tự hồi phục, ô tìm
  ├─ "Copy N deal id" / copy 1 deal id → clipboard
  ├─ nút mở ngoài → [US-E04 Check luồng, tab mới, tự tra cứu]
  └─ đóng modal → về US-E05

b. Chi tiết từng màn ​

Màn M1 - Modal "Deal bị lỗi" ​

FieldValue
Figma frameN/A
Trigger vào mànBấm "Danh sách" ở ô "Deal bị lỗi" của US-E05
Mô tả ngắnTiêu đề "Deal bị lỗi (N)" (hoặc "N / tổng" khi bị cắt); phụ đề "<từ> → <đến> · lỗi gần nhất ở trên"; trên mobile hiện dạng thẻ, desktop dạng bảng
UI States &ZeroWidthSpace;
StateKhi nàoHiển thịFigma frame
DefaultVừa mởBộ lọc "Tất cả" đang chọn, ô tìm trống, toàn bộ danh sách; chân "Đang hiện N deal" + "Copy N deal id"N/A
LoadingN/A — dữ liệu đã có từ US-E05, không gọi API-N/A
Has dataCó deal khớp lọcDanh sách deal theo BR-08N/A
EmptyLọc / tìm không khớp deal nàoDanh sách rỗng, "Đang hiện 0 deal", nút "Copy 0 deal id" bị khoáN/A
ErrorN/A — không có lời gọi API trong modal-N/A
Disabled0 deal đang hiệnNút copy hàng loạt bị khoáN/A
Fields &ZeroWidthSpace;
FieldRequiredTypeDefaultFormatValidationError MessageVisibilityDepends On
Ô tìm "Lọc theo deal id, flow, lỗi…"NoSearch textTrốngTự do, bỏ khoảng trắng, không phân biệt hoa thường--Always-
Bộ lọc trạng tháiYes3 nút chọn 1Tất cả"Tất cả (n)" / "Vẫn lỗi (n)" / "Đã tự hồi phục (n)"--AlwaysBR-04
(hiển thị) deal id · flow lỗi · lần lỗi · lỗi cuối lúc · lần chạy cuối · lỗi gần nhất-Text-Giờ theo máy người xem--Mỗi dòngBR-08
Filter / Search / Sort (chỉ màn List/Report — xóa nếu không phải) &ZeroWidthSpace;
LoạiTheo fieldKiểuDefaultNotes
FilterTrạng thái lần chạy cuối3 nút chọn 1Tất cảBR-04, BR-05
Searchdeal id, flow lỗi, lỗi gần nhấtfree-text—Lọc ở FE trên ≤ 500 deal đã tải
SortLỗi cuối lúcCố địnhMới nhất trướcBR-03
Pagination--Không phân trangTối đa 500 deal (BR-02)
Actions &ZeroWidthSpace;
A1 - Copy N deal id &ZeroWidthSpace;
ItemDescription
TriggerBấm "Copy N deal id" ở chân modal
BehaviorGhi các deal id đang hiện (mỗi id 1 dòng) vào clipboard trình duyệt; không ghi hệ thống nào, không tạo file (NFR-E-02)
Success ResultNút hiện "Đã copy" 1,5 giây

Error cases:

CaseExpected Handling
0 deal đang hiệnNút bị khoá
A2 - Copy 1 deal id &ZeroWidthSpace;
ItemDescription
TriggerBấm biểu tượng copy ở dòng deal
BehaviorGhi deal id đó vào clipboard
Success ResultBiểu tượng đổi thành dấu tích 1,5 giây

Error cases:

CaseExpected Handling
N/A-
A3 - Mở Check luồng (tab mới) &ZeroWidthSpace;
ItemDescription
TriggerBấm biểu tượng mở ngoài "Mở Check luồng econtract của deal này (tab mới)"
BehaviorMở /works/sapp/tools/econtract-timeline?dealId=<id> ở tab mới; modal ở tab hiện tại giữ nguyên
Success ResultTab mới tự tra cứu timeline của deal (US-E04, chỉ đọc)

Error cases:

CaseExpected Handling
Tool sapp.012 đang khoáTab mới xử lý theo US-P02
Acceptance Criteria của màn M1 &ZeroWidthSpace;
AC-M1.1 - Nút Danh sách &ZeroWidthSpace;
gherkin
Given lượt thống kê có Deal bị lỗi = 0
When kết quả hiện ra
Then ô "Deal bị lỗi" không có nút "Danh sách"
Given lượt thống kê có ít nhất 1 deal lỗi
Then ô "Deal bị lỗi" có nút "Danh sách" mở modal "Deal bị lỗi (N)"

Maps to:

  • Business Rule: BR-01
AC-M1.2 - Nội dung, thứ tự và giới hạn 500 &ZeroWidthSpace;
gherkin
Given khoảng thống kê có 620 deal lỗi
When người dùng mở danh sách
Then tiêu đề là "Deal bị lỗi (500 / 620)" và có cảnh báo "Có hơn 500 deal lỗi — …"
And deal có lỗi gần nhất ở trên cùng
And mỗi deal hiện flow lỗi, số lần lỗi, lỗi cuối lúc, lần chạy cuối và lỗi gần nhất

Maps to:

  • Business Rule: BR-02, BR-03, BR-08
AC-M1.3 - Đã tự hồi phục &ZeroWidthSpace;
gherkin
Given deal A có lần chạy FAIL rồi lần chạy cuối trong khoảng là SUCCESS, deal B có lần chạy cuối là FAIL
When người dùng chọn "Đã tự hồi phục"
Then chỉ thấy deal A
When người dùng chọn "Vẫn lỗi"
Then chỉ thấy deal B

Maps to:

  • Business Rule: BR-04
AC-M1.4 - Tìm kết hợp bộ lọc &ZeroWidthSpace;
gherkin
Given bộ lọc "Vẫn lỗi" đang chọn
When người dùng gõ "cancel" vào ô tìm
Then chỉ hiện deal "Vẫn lỗi" có flow lỗi hoặc lỗi gần nhất chứa "cancel" (không phân biệt hoa thường)
And chân modal hiện "Đang hiện N deal" đúng số dòng

Maps to:

  • Business Rule: BR-05
AC-M1.5 - Copy deal id &ZeroWidthSpace;
gherkin
Given danh sách đang hiện 3 deal
When người dùng bấm "Copy 3 deal id"
Then clipboard chứa 3 deal id, mỗi id một dòng, không có dữ liệu nào khác
And không có file nào được tạo

Maps to:

  • Business Rule: BR-06
  • Field/Action: A1, A2
AC-M1.6 - Mở Check luồng ở tab mới &ZeroWidthSpace;
gherkin
Given dòng deal 123 trong danh sách
When người dùng bấm biểu tượng mở ngoài
Then tab mới mở …/econtract-timeline?dealId=123 và tự tra cứu
And modal ở tab hiện tại vẫn mở

Maps to:

  • Business Rule: BR-07
  • Field/Action: A3
Negative AC / Edge Cases của màn M1 &ZeroWidthSpace;
IDTình huốngHành vi mong đợi
EC-M1.1Đúng 500 deal lỗi (không bị cắt)Hành vi hiện tại: cảnh báo DEALS_TRUNCATED vẫn bật (so ≥ 500) — DR-E-01, OQ-E-10
EC-M1.2Tìm không khớpDanh sách rỗng, nút copy hàng loạt khoá
EC-M1.3Muốn Retry một deal "Vẫn lỗi" ngay trong danh sáchHiện không có nút Retry trong modal; người dùng copy deal id và dùng màn Retry (US-E01/E02). Việc còn mở audit T2-05 — OQ-E-11
EC-M1.4Cần danh sách của khoảng thời gian khácModal dùng dữ liệu của lượt tải gần nhất; đóng modal, đổi khoảng và tải lại ở US-E05
EC-M1.5Deal "Đã tự hồi phục" trong khoảng nhưng lỗi lại sau thời điểm "Đến"Vẫn tính "Đã tự hồi phục" — BR-04 chỉ xét lần chạy trong khoảng

5. Cross-feature AC &ZeroWidthSpace;

AC-X.1 - Deal hồi phục nhờ Retry &ZeroWidthSpace;

gherkin
Given deal D lỗi, sau đó US-E02 Retry và cron chạy lại thành công trong cùng khoảng thống kê
When người dùng mở danh sách deal lỗi của khoảng đó
Then D nằm ở nhóm "Đã tự hồi phục" (lần chạy cuối SUCCESS), dù lần chạy lại là do Retry tay

Maps to:

  • REL-03 (Be Affected - Cron econtract-payment + EFY/FPT)

AC-X.2 - Mở Check luồng khi tool bị khoá &ZeroWidthSpace;

gherkin
Given tool sapp.012 đang khoá trên hub
When người dùng mở Check luồng từ danh sách
Then tab mới xử lý truy cập theo US-P02

Maps to:

  • REL-01 (Affects - Hub & khoá tool)