Giao diện
US-T02: Làm mới cap_nhat_owner hàng loạt ​
Thuộc FS: 00-overview.md — SAPP-23954 Ticket Owner 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. As-built @
e77c47a· nguồn: inventory 23954 A-06, A-07.⚠️ Ghi PROD — US này ghi thuộc tính ticket lên HubSpot của portal đang chọn, kể cả portal prod.
| Field | Value |
|---|---|
| US ID | US-T02 |
| Role thực hiện | R1 - Người dùng tool Assumption (OQ về G-01); R2 - Hệ thống (ghi lịch sử) |
| Phase | Đã triển khai (as-built @ e77c47a) |
| Priority | N/A — as-built |
| Status | Draft |
| NFR liên quan | NFR-T-01, NFR-T-02, NFR-T-03, NFR-T-05, NFR-T-07 — xem Overview §5 |
| OQ liên quan | OQ-T-01, OQ-T-02, OQ-T-03, OQ-T-07, OQ-T-08, OQ-T-09 — xem Overview §6 |
1. US Statement ​
text
As a Người dùng tool (Assumption — OQ về G-01)
I want chọn nhiều ticket rồi "làm mới" cap_nhat_owner của chúng — hệ thống ghi rỗng rồi ghi lại đúng giá trị cũ
trên portal HubSpot đang chọn (Dev hoặc Prod) — và xem ticket nào đã làm mới / bỏ qua / lỗi
So that [Assumption — OQ-T-01] automation HubSpot bắt sự kiện đổi cap_nhat_owner chạy lại và gán owner cho ticket
(màn tool tự mô tả: "reset + khôi phục cap_nhat_owner để kích hoạt lại automation")2. Dependencies & Definition Of Ready ​
N/A — đã triển khai (Mode B).
Dependency runtime (tham khảo):
| # | Cần sẵn sàng | Ai cung cấp | Trạng thái |
|---|---|---|---|
| D1 | Có kết quả truy vấn và ≥ 1 ticket được chọn (US-T01) | Người dùng | N/A — runtime |
| D2 | Token HubSpot của portal đang chọn có quyền ghi ticket, trong env_systems (US-P04) | Admin CMS | N/A — runtime |
| D3 | Redis của mind_keep hoạt động (lưu lịch sử — US-T04) | Hạ tầng | N/A — runtime |
3. Business Rules ​
| ID | Rule | Áp dụng ở | Đã cover bởi (AC) | Nguồn code (Mode B/C) |
|---|---|---|---|---|
| BR-01 | Làm mới chỉ chạy khi đã chọn ≥ 1 ticket và người dùng bấm "Làm mới" trong hộp xác nhận; hộp ghi số ticket và tên portal. Bấm "Hủy" thì không gọi gì | M1 - action Xác nhận làm mới | AC-M1.1, AC-M1.2 | fe/src/ui/components/works/sapp/sapp-23954-tool.tsx:655-671, :776 |
| BR-02 | Làm mới một ticket = đọc giá trị cap_nhat_owner hiện tại A → ghi cap_nhat_owner = rỗng → ghi lại A. Giá trị cuối cùng không đổi; chỉ thuộc tính cap_nhat_owner bị ghi | M1 - action Xác nhận làm mới | AC-M1.3 | be/libs/modules/src/lib/sapp/common.service.ts:899-903, :927-959 |
| BR-03 | Ticket có cap_nhat_owner đang rỗng → bỏ qua, lý do "cap_nhat_owner is empty", không ghi gì lên ticket đó | M1 - action Xác nhận làm mới; M2 - nhóm Bỏ qua | AC-M1.4 | be/libs/modules/src/lib/sapp/common.service.ts:944-947 |
| BR-04 | Mỗi ticket xử lý độc lập: một ticket lỗi không dừng cả lượt; lỗi đọc / ghi của từng ticket (kể cả portal thiếu token) được đưa vào nhóm "lỗi" kèm lý do, cả lượt vẫn trả kết quả | M1 - action Xác nhận làm mới; M2 - nhóm Lỗi | AC-M1.5, EC-M1.3 | be/libs/modules/src/lib/sapp/common.service.ts:925-926, :978-986 |
| BR-05 | Các ticket được xử lý lần lượt theo thứ tự đã chọn, trong cùng một lần gọi | M1 - action Xác nhận làm mới | AC-M1.3, NFR-T-03 | be/libs/modules/src/lib/sapp/common.service.ts:925-987 |
| BR-06 | Kết quả gồm 3 nhóm: "đã làm mới", "bỏ qua", "lỗi"; mỗi ticket bỏ qua / lỗi có lý do. Sau khi xong, màn xoá lựa chọn và hiện hộp thành công "{x} làm mới · {y} bỏ qua · {z} lỗi (portal {env})." | M2 - khối Kết quả làm mới | AC-M2.1, AC-M2.2 | fe/src/ui/components/works/sapp/sapp-23954-tool.tsx:145-176, :576-601 |
| BR-07 | Khi có ≥ 1 ticket làm mới thành công, hộp thành công báo thêm "Sẽ tự kiểm tra thay đổi sau 15s." và hệ thống bắt đầu kiểm tra tự động (US-T03); không có ticket thành công thì không kiểm tra | M2 - hộp thành công | AC-M2.3 | fe/src/ui/components/works/sapp/sapp-23954-tool.tsx:583-598 |
| BR-08 | Sau mỗi lượt, hệ thống ghi 1 dòng lịch sử cho mỗi ticket làm mới thành công vào lịch sử của portal đó; ticket bỏ qua / lỗi không ghi. Mọi dòng của cùng lượt có chung thời điểm làm mới | M1 - action Xác nhận làm mới (hệ thống) | AC-M1.6 | be/libs/modules/src/lib/sapp/common.service.ts:971-977, :989, :1025, :1047-1060 |
| BR-09 | Mỗi dòng lịch sử ghi: ticket, tên ticket, cap_nhat_owner "trước" → "sau", owner "trước" → "sau". "Sau" = giá trị đã ghi lại / owner lúc làm mới; "trước" = giá trị "sau" của dòng gần nhất cùng ticket trong lịch sử portal đó (lần đầu = trống) | M1 - action Xác nhận làm mới (hệ thống) | AC-M1.6, AC-M1.7 | be/libs/modules/src/lib/sapp/common.service.ts:1033-1060 |
| BR-10 | Owner trong lịch sử hiển thị dạng "{tên} ({id})"; tên = "Tên Họ" của owner trên portal, không có thì email; không tra được tên thì chỉ id; ticket chưa có owner thì trống | M1 - action Xác nhận làm mới (hệ thống) | AC-M1.7 | be/libs/modules/src/lib/sapp/common.service.ts:1281-1319, :976 |
| BR-11 | Ghi lịch sử thất bại không làm lượt làm mới bị báo lỗi — chỉ ghi log hệ thống | M1 - action Xác nhận làm mới (hệ thống) | EC-M1.5 | be/libs/modules/src/lib/sapp/common.service.ts:1067-1071 |
| BR-12 | Làm mới chạy được trên cả portal prod và dev, theo tab đang chọn; biện pháp kiểm soát duy nhất là hộp xác nhận chung có ghi tên portal (không có bước xác nhận riêng cho prod) | M1 - hộp xác nhận | AC-M1.1, EC-M1.1 | be/apps/api/src/sapp/sapp.controller.ts:321-337; fe/src/ui/components/works/sapp/sapp-23954-tool.tsx:58-61, :661 |
⚠️ Observedkhông viết thành BR: ghi lại thất bại → ticket bị bỏ rỗng, không thử lại / hoàn tác (EC-M1.2, OQ-T-09); không giới hạn số ticket mỗi lượt, tuần tự trong 1 request (EC-M1.4, NFR-T-03, OQ-T-08); ghi prod không có chốt chặn riêng (EC-M1.1, OQ-T-03); làm mới mọi giá trị khác rỗng (EC-M1.6, OQ-T-07).
4. Design ​
a. Mối liên hệ giữa các màn & User Flow ​
text
[US-T01 M1: Bảng kết quả, đã chọn N ticket]
↓ bấm "Làm mới cap_nhat_owner (N)"
[M1: Hộp xác nhận "Làm mới cap_nhat_owner"]
├─ "Hủy" ──→ đóng hộp, không ghi gì
└─ "Làm mới" ──→ BE xử lý tuần tự N ticket (đọc → ghi rỗng → ghi lại) trên portal đang chọn
↓ ghi lịch sử cho ticket thành công (US-T04)
[Hộp thành công] + [M2: Khối "Kết quả làm mới"]
└─ ≥ 1 ticket thành công ──→ đếm ngược 15s ──→ US-T03
└─ cả request lỗi ──→ hộp lỗi "Làm mới cap_nhat_owner thất bại"Link flow chi tiết nếu có:
- Trạng thái
cap_nhat_ownercủa 1 ticket: inventory 23954 §5 (sơ đồ sau bảng Rule).
b. Chi tiết từng màn ​
Màn M1 - Hộp xác nhận "Làm mới cap_nhat_owner" ​
| Field | Value |
|---|---|
| Figma frame | N/A |
| Trigger vào màn | Bấm "Làm mới cap_nhat_owner (N)" ở bảng kết quả US-T01 (N ≥ 1) |
| Mô tả ngắn | Hộp xác nhận chung của hệ thống: "Sẽ reset về rỗng rồi khôi phục cap_nhat_owner cho {N} ticket trong portal {env}. Ticket đang rỗng sẽ bị bỏ qua." với 2 nút "Làm mới" / "Hủy" |
UI States ​
| State | Khi nào | Hiển thị | Figma frame |
|---|---|---|---|
| Default | Hộp vừa mở | Tiêu đề "Làm mới cap_nhat_owner", nội dung có số ticket và tên portal (dev / prod), nút "Làm mới", "Hủy" | N/A |
| Loading | Đã bấm "Làm mới", đang chờ BE | Hộp đóng; nút ở bảng hiện "Đang làm mới…" có spinner, bị khoá | N/A |
| Has data | BE trả kết quả | Chuyển sang hộp thành công + M2 | N/A |
| Empty | N/A — hộp không mở khi chưa chọn ticket | — | N/A |
| Error | Cả request lỗi | Hộp lỗi "Làm mới cap_nhat_owner thất bại", nội dung "{thông điệp} ({mã})" | N/A |
| Disabled | Chưa chọn ticket / đang làm mới | Nút "Làm mới cap_nhat_owner (0)" khoá; đang làm mới thì khoá | N/A |
Fields ​
| Field | Required | Type | Default | Format | Validation | Error Message | Visibility | Depends On |
|---|---|---|---|---|---|---|---|---|
| Danh sách ticket đã chọn (ẩn, lấy từ US-T01) | Yes | Danh sách Ticket ID | Các dòng đang chọn | chuỗi id | ≥ 1 ở màn (BR-01); API chấp nhận cả danh sách rỗng, không giới hạn số phần tử | — | Hidden (chỉ hiện số N) | Lựa chọn ở US-T01 |
Filter / Search / Sort (chỉ màn List/Report — xóa nếu không phải) ​
N/A — hộp xác nhận, không phải màn List.
Actions ​
A1 - Xác nhận làm mới ​
| Item | Description |
|---|---|
| Trigger | Bấm "Làm mới" trong hộp xác nhận |
| Behavior | Gửi danh sách ticket tới BE của portal đang chọn. BE: tải danh sách owner của portal (để hiển thị tên — BR-10); với từng ticket lần lượt (BR-05): đọc tên, cap_nhat_owner, owner; rỗng → bỏ qua (BR-03); khác rỗng → ghi rỗng rồi ghi lại giá trị cũ (BR-02); lỗi → nhóm lỗi (BR-04). Cuối lượt: ghi lịch sử cho ticket thành công (BR-08, BR-09) vào Redis của mind_keep. Ghi vào: HubSpot CRM, thuộc tính cap_nhat_owner của ticket, portal dev hoặc prod theo tab; Redis mind_keep (lịch sử, key theo portal). |
| Success Result | Trả 3 nhóm đã làm mới / bỏ qua / lỗi → M2 |
⚠️ Ghi PROD — trên tab Prod, action này ghi
cap_nhat_ownercủa ticket thật trên HubSpot production, mỗi ticket 2 lần ghi, có thể kích hoạt automation thật (REL-06). Không có giới hạn số ticket, không có xác nhận riêng cho prod (OQ-T-03, OQ-T-08).
Error cases:
| Case | Expected Handling |
|---|---|
Ticket cap_nhat_owner rỗng | Vào nhóm "bỏ qua" với lý do "cap_nhat_owner is empty"; không ghi (BR-03) |
| Đọc ticket lỗi / ghi rỗng lỗi / portal thiếu token | Vào nhóm "lỗi" với lý do là thông điệp lỗi kỹ thuật (mặc định "Failed to refresh cap_nhat_owner"); nếu lỗi ở bước ghi rỗng thì giá trị trên HubSpot chưa bị đổi. Cả request vẫn thành công (BR-04, DR-T-03) |
| Ghi rỗng thành công nhưng ghi lại lỗi | ⚠️ Observed — vào nhóm "lỗi" với lý do "Failed to restore cap_nhat_owner (left empty)"; ticket bị bỏ rỗng trên HubSpot (EC-M1.2) |
| Cả request lỗi (mạng, lỗi không lường trước) | Hộp lỗi "Làm mới cap_nhat_owner thất bại"; lỗi không xác định phía BE trả "Failed to refresh SAPP-23954 cap_nhat_owner (13023)". Lựa chọn giữ nguyên |
A2 - Hủy ​
| Item | Description |
|---|---|
| Trigger | Bấm "Hủy" |
| Behavior | Đóng hộp, không gọi API, không ghi dữ liệu |
| Success Result | Quay lại bảng US-T01, lựa chọn giữ nguyên |
Error cases:
| Case | Expected Handling |
|---|---|
| N/A | Không có lỗi |
Acceptance Criteria của màn M1 ​
AC-M1.1 - Hộp xác nhận ghi số ticket và portal ​
gherkin
Given đang ở tab "Prod" và đã chọn 3 ticket
When bấm "Làm mới cap_nhat_owner (3)"
Then hiện hộp "Làm mới cap_nhat_owner" với nội dung "Sẽ reset về rỗng rồi khôi phục cap_nhat_owner cho 3 ticket trong portal prod. Ticket đang rỗng sẽ bị bỏ qua."
And chưa có ticket nào bị ghi cho tới khi bấm "Làm mới"Maps to:
- Business Rule: BR-01, BR-12
- Field/Action: A1
AC-M1.2 - Hủy không ghi gì ​
gherkin
Given hộp xác nhận đang mở cho 3 ticket
When bấm "Hủy"
Then hộp đóng, không có lời gọi làm mới nào, 3 ticket vẫn đang được chọnMaps to:
- Business Rule: BR-01
- Field/Action: A2
AC-M1.3 - Làm mới giữ nguyên giá trị cuối ​
gherkin
Given ticket T1 có cap_nhat_owner = "Xử lý ticket thông thường"
When xác nhận làm mới T1
Then lịch sử thuộc tính cap_nhat_owner của T1 trên HubSpot có thêm 2 lần đổi: rỗng, rồi "Xử lý ticket thông thường"
And giá trị cap_nhat_owner hiện tại của T1 vẫn là "Xử lý ticket thông thường"
And T1 thuộc nhóm "đã làm mới"Maps to:
- Business Rule: BR-02, BR-05
AC-M1.4 - Bỏ qua ticket rỗng ​
gherkin
Given ticket T2 có cap_nhat_owner rỗng
When xác nhận làm mới T1, T2
Then T2 thuộc nhóm "bỏ qua" với lý do "cap_nhat_owner is empty"
And không có lần ghi nào lên T2Maps to:
- Business Rule: BR-03
AC-M1.5 - Một ticket lỗi không dừng lượt ​
gherkin
Given danh sách chọn gồm T1 (hợp lệ), T3 (không đọc được trên HubSpot), T4 (hợp lệ)
When xác nhận làm mới
Then T3 thuộc nhóm "lỗi" kèm lý do
And T1 và T4 vẫn được làm mới và thuộc nhóm "đã làm mới"Maps to:
- Business Rule: BR-04
AC-M1.6 - Ghi lịch sử cho ticket thành công ​
gherkin
Given lượt làm mới có T1 thành công, T2 bỏ qua, T3 lỗi trên portal dev
When lượt kết thúc
Then lịch sử làm mới của portal dev có thêm đúng 1 dòng cho T1, không có dòng cho T2, T3
And dòng T1 có "sau" cap_nhat_owner = giá trị đã ghi lại, thời gian = thời điểm của lượtMaps to:
- Business Rule: BR-08, BR-09
AC-M1.7 - "Trước" lấy từ dòng gần nhất cùng ticket ​
gherkin
Given lịch sử portal dev đã có 1 dòng của T1 với "sau" cap_nhat_owner = "Xử lý ticket thông thường" và owner "sau" = "Nguyễn An (123)"
When làm mới T1 lần nữa
Then dòng mới của T1 có "trước" cap_nhat_owner = "Xử lý ticket thông thường" và owner "trước" = "Nguyễn An (123)"
And nếu T1 chưa từng có dòng nào thì "trước" để trốngMaps to:
- Business Rule: BR-09, BR-10
Negative AC / Edge Cases của màn M1 ​
| ID | Tình huống | Hành vi mong đợi |
|---|---|---|
| EC-M1.1 | ⚠️ Observed — chạy trên tab Prod | Hành vi hiện tại: ghi thật lên HubSpot production; chốt chặn duy nhất là hộp xác nhận chung có chữ "portal prod"; không có xác nhận thêm, không giới hạn quyền ở API (NFR-T-01). Nguồn: be/apps/api/src/sapp/sapp.controller.ts:321-337; fe/src/ui/components/works/sapp/sapp-23954-tool.tsx:661. Cố ý hay rủi ro: OQ-T-03 |
| EC-M1.2 | ⚠️ Observed — ghi rỗng thành công, ghi lại thất bại | Hành vi hiện tại: ticket vào nhóm "lỗi" với lý do "Failed to restore cap_nhat_owner (left empty)" và bị bỏ rỗng cap_nhat_owner trên HubSpot (kể cả prod); không thử lại, không hoàn tác, không ghi lịch sử cho ticket này; người dùng phải tự sửa trên HubSpot. Nguồn: be/libs/modules/src/lib/sapp/common.service.ts:953-969. Cố ý hay thiếu sót: OQ-T-09 |
| EC-M1.3 | Portal chưa cấu hình token HubSpot | Hành vi hiện tại: mọi ticket vào nhóm "lỗi" (lý do là thông điệp thiếu cấu hình), request vẫn trả thành công — không có hộp lỗi cấu hình. Khác API doc (DR-T-03) |
| EC-M1.4 | ⚠️ Observed — chọn rất nhiều ticket (vd vài trăm sau nhiều lần "Tải thêm" + "Chọn tất cả") | Hành vi hiện tại: không có giới hạn; BE xử lý tuần tự 1 đọc + 2 ghi mỗi ticket trong một request; màn chỉ hiện "Đang làm mới…" tới khi xong, không có tiến độ. Rủi ro timeout / HubSpot rate-limit — nếu request đứt giữa chừng thì một phần ticket đã được ghi mà màn không nhận được kết quả. Nguồn: be/libs/interface/src/lib/dto/sapp/sapp-23954-ticket.dto.ts:114-120; be/libs/modules/src/lib/sapp/common.service.ts:925-987. NFR-T-03, OQ-T-08 (chưa chạy thử để xác nhận) |
| EC-M1.5 | Redis lỗi khi ghi lịch sử | Kết quả làm mới vẫn trả bình thường; lịch sử của lượt đó không được lưu; chỉ có log hệ thống (BR-11) |
| EC-M1.6 | ⚠️ Observed — ticket có cap_nhat_owner = "Cập nhật thành công" / "Cập nhật thất bại" / "Rotate Ticket Owner" | Hành vi hiện tại: vẫn được làm mới như mọi giá trị khác rỗng (không lọc theo giá trị). Nguồn: be/libs/modules/src/lib/sapp/common.service.ts:944-959. OQ-T-07 |
| EC-M1.7 | Cùng ticket bị chọn làm mới ở 2 tab / 2 người cùng lúc | Không có khoá; mỗi lượt đọc giá trị riêng rồi ghi rỗng / ghi lại. Hành vi xen kẽ chưa kiểm chứng (không chạy thử) |
| EC-M1.8 | Đóng / refresh trang khi đang làm mới | Màn không còn nhận kết quả; code không có cơ chế huỷ lượt phía BE — ticket nào đã / chưa được ghi chưa kiểm chứng (không chạy thử). Xem lịch sử (US-T04) để biết ticket nào đã thành công |
Màn M2 - Khối "Kết quả làm mới" và hộp thành công ​
| Field | Value |
|---|---|
| Figma frame | N/A |
| Trigger vào màn | BE trả kết quả của A1 |
| Mô tả ngắn | Hộp thành công "Đã làm mới cap_nhat_owner" + khối "Kết quả làm mới" dưới bảng: 3 nhãn đếm và 2 danh sách lý do thu gọn được |
UI States ​
| State | Khi nào | Hiển thị | Figma frame |
|---|---|---|---|
| Default | Vừa nhận kết quả | Hộp thành công: "{x} làm mới · {y} bỏ qua · {z} lỗi (portal {env})." (+ " Sẽ tự kiểm tra thay đổi sau 15s." nếu x > 0). Khối: nhãn "{x} đã làm mới", "{y} bỏ qua", "{z} lỗi" (nhãn lỗi tô đỏ khi z > 0) | N/A |
| Loading | N/A — kết quả hiển thị một lần | — | N/A |
| Has data | Có ticket bỏ qua / lỗi | Danh sách thu gọn "Bỏ qua (cap_nhat_owner rỗng) ({y})" và "Lỗi ({z})"; mở ra thấy từng dòng "Ticket ID — lý do" | N/A |
| Empty | Không có ticket bỏ qua / lỗi | Không hiện danh sách tương ứng | N/A |
| Error | N/A — lỗi cả request ở M1 | — | N/A |
| Disabled | N/A | — | N/A |
Fields ​
| Field | Required | Type | Default | Format | Validation | Error Message | Visibility | Depends On |
|---|---|---|---|---|---|---|---|---|
| Số đã làm mới | — | Number | — | "{x} đã làm mới" | — | — | Readonly | Kết quả A1 |
| Số bỏ qua | — | Number | — | "{y} bỏ qua" | — | — | Readonly | Kết quả A1 |
| Số lỗi | — | Number | — | "{z} lỗi" | — | — | Readonly | Kết quả A1 |
| Danh sách bỏ qua / lỗi | — | List (Ticket ID, lý do) | Thu gọn | — | — | — | Hiện khi có dòng | Kết quả A1 |
Filter / Search / Sort (chỉ màn List/Report — xóa nếu không phải) ​
N/A — khối kết quả, không phải màn List.
Actions ​
A1 - Mở / thu gọn danh sách lý do ​
| Item | Description |
|---|---|
| Trigger | Bấm tiêu đề "Bỏ qua (…)" hoặc "Lỗi (…)" |
| Behavior | Mở / thu gọn danh sách. Không gọi API, không ghi dữ liệu |
| Success Result | Hiện từng Ticket ID kèm lý do |
Error cases:
| Case | Expected Handling |
|---|---|
| N/A | Không có lỗi |
Acceptance Criteria của màn M2 ​
AC-M2.1 - Tổng hợp kết quả ​
gherkin
Given lượt làm mới trên portal dev có 2 ticket thành công, 1 bỏ qua, 1 lỗi
When BE trả kết quả
Then hộp thành công hiển thị "2 làm mới · 1 bỏ qua · 1 lỗi (portal dev). Sẽ tự kiểm tra thay đổi sau 15s."
And khối "Kết quả làm mới" có nhãn "2 đã làm mới", "1 bỏ qua", "1 lỗi"
And bảng ở US-T01 về "đã chọn 0"Maps to:
- Business Rule: BR-06, BR-07
AC-M2.2 - Xem lý do ​
gherkin
Given khối kết quả có 1 ticket lỗi
When bấm "Lỗi (1)"
Then hiện dòng gồm Ticket ID và lý do lỗi của ticket đóMaps to:
- Business Rule: BR-06
- Field/Action: M2.A1
AC-M2.3 - Không có ticket thành công thì không tự kiểm tra ​
gherkin
Given mọi ticket trong lượt đều bị bỏ qua hoặc lỗi
When BE trả kết quả
Then hộp thành công không có câu "Sẽ tự kiểm tra thay đổi sau 15s."
And không có đếm ngược kiểm tra (US-T03)Maps to:
- Business Rule: BR-07
Negative AC / Edge Cases của màn M2 ​
| ID | Tình huống | Hành vi mong đợi |
|---|---|---|
| EC-M2.1 | Truy vấn lại (US-T01) sau khi làm mới | Khối "Kết quả làm mới" biến mất (US-T01 BR-09) |
| EC-M2.2 | Đổi tab Dev ↔ Prod | Khối kết quả mất (panel dựng lại — OQ-T-15) |
| EC-M2.3 | Lý do lỗi là thông điệp kỹ thuật tiếng Anh | Hiển thị nguyên văn, không dịch |
5. Cross-feature AC ​
AC-X.1 - Kích hoạt lại automation HubSpot ​
gherkin
Given trên HubSpot có automation bắt sự kiện đổi cap_nhat_owner của ticket
When làm mới thành công ticket T1
Then HubSpot ghi nhận 2 lần đổi cap_nhat_owner của T1 (rỗng, rồi giá trị cũ) có thể kích hoạt automation đó
And kết quả automation (nếu có) được US-T03 đo lại sau 15 giâyMaps to:
- REL-06 (Be Affected - Automation HubSpot, ngoài hệ thống)
AC-X.2 - Token portal ​
gherkin
Given token HubSpot của portal prod bị xoá khỏi cấu hình env_systems
When xác nhận làm mới 2 ticket trên tab Prod
Then cả 2 ticket vào nhóm "lỗi", không có ticket nào bị ghiMaps to:
- REL-03 (Affects - Cấu hình env_systems)