Báo cáo chuyển đổi warehouse-service

Kho · warehouse/get-warehouse-id-names-by-product · api

GET/api/client/page/warehouse/get-warehouse-id-names-by-product

Vòng
1
Cổng G1–G6
PENDING_SONAR
Bước
sonar-check
Nhánh đích
feat/thongpd/warehouse-create

Báo cáo sai lệch — warehouse/get-warehouse-id-names-by-product — vòng 1

0. Kết luận nhanh

  • Điều kiện đạt: G1 ✅ G2 ✅ G3 ✅ G4 — G5 ✅ G6 ✅ → CHỜ KIỂM SONAR
  • Trạng thái: SẴN SÀNG CHO NGƯỜI XEM
  • Tầng rủi ro: A (R-02 phân quyền; còn lại C chỉ đọc) → người cần đọc: spec + báo cáo + toàn bộ diff
  • Số quy tắc: 6 · PASS 3 · DEVIATION có chủ đích 2 · DEVIATION KHÔNG chủ đích 0 · UNVERIFIED 1
  • Coverage thấp nhất: F-01 94,7% dòng / 100% nhánh
  • Finding logic: CRITICAL 0 · MAJOR 0 · MINOR 0 · UNSURE 0
  • Nghi vấn bug code cũ (mục 3c): 2 (CAO 0) · Quyết định tự chốt cần xác nhận (mục 3d): 6
  • Chạy bằng: /mig-auto (spec do spec-reviewer kiểm, chưa có người duyệt) · Số vòng: 1 verify / lần sửa 0/3

1. Điều kiện đạt

Mã Mục tiêu Kết quả Bằng chứng
G1 mvnw verify ✅ (671 test) verify/round-1/build.md
G2 Test khớp test-plan ✅ (10/10 TC, 6/6 R) verify/round-1/oracle.md
G3 Coverage ✅ F-01 94,7% / 100% verify/round-1/coverage.md
G4 Sonar CHỜ NGƯỜI sonar-ide.md
G5 0 CRITICAL/MAJOR ✅ (không có finding) verify/round-1/review-logic.md
G6 Không lách cổng ✅ verify/round-1/gates.md

Không chặn nhưng cần người: Integration test CHƯA CHẠY · Golden master CHƯA CHẠY (GM-01)

2. Ma trận truy vết

Quy tắc Tầng Code mới Test Golden Kết luận
R-01 C WarehouseController.getWarehouseIdNamesByProduct TC-01, TC-02 — PASS
R-02 A WarehouseQueryService.findIdNamesByProduct → CurrentCompanyService TC-04, TC-05 — DEVIATION (có chủ đích, D-01)
R-03 C InventoryRelationalRepository.findWarehouseIdNamesByProduct TC-06, TC-08, TC-08-EXTRA-1 GM-01 UNVERIFIED (SQL thật — K-13)
R-04 C WarehouseIdNameResponse, controller TC-01, TC-03 — PASS — trừ data rỗng mất key (D-07 UNVERIFIED)
R-05 C @Transactional, bọc PersistenceException TC-07, TC-09 — PASS
R-06 C (không chuyển) TC-10 — DEVIATION (có chủ đích, D-06)

3. Người cần xem

# Vị trí Vì sao cần người xem
1 Toàn bộ verify/round-1/changes.diff Tầng A (R-02)
2 InventoryRelationalRepository.findWarehouseIdNamesByProduct SQL đặt ở context inventory (spec-review F-spec-5); chỉ test mock (K-13)
3 Response data rỗng D-07 — mất key data (chung với get-with-paging F-logic-1b)
4 G4 Người chạy SonarQube for IDE

3b. Phân tích luồng sau chuyển

Chi tiết: verify/round-1/flow-analysis.md

Luồng Tên KHỚP / KHÁC / CHỈ CÓ Ở CŨ / CHỈ CÓ Ở MỚI Lệch luồng đã duyệt Điểm dev cần chú ý
F-01 Kho chứa một sản phẩm 3 / 2 (D-02, D-07) / 1 (D-06) / 1 (D-01) không SQL giữ từng chữ; map cột theo vị trí; không readOnly

3c. Nghi vấn bug / sai ở code cũ (đã GIỮ nguyên khi chuyển)

B-01 Một kho hiện nhiều lần trong danh sách

  • Mức nghi ngờ: THẤP — frontend có thể đã tự lọc trùng.
  • Ở đâu: code cũ base:repositories/BaseWarehouseRepository.java:123 → code mới (giữ nguyên) InventoryRelationalRepository.findWarehouseIdNamesByProduct
  • Code cũ đang làm gì: trả một phần tử cho mỗi dòng tồn; sản phẩm có nhiều đơn vị tính ở cùng kho thì kho lặp lại.
  • Ví dụ cụ thể: SP 55 bán theo "cái" và "hộp", cả hai có dòng tồn ở "Kho A" → danh sách có "Kho A" hai lần. Lẽ ra một lần.
  • Vì sao nghi là sai: API trả "id + tên kho" thường dùng cho ô chọn kho, không cần lặp.
  • Ảnh hưởng nếu đúng là bug: ô chọn kho hiện trùng.
  • Đã xử lý khi chuyển: GIỮ. Test khoá: TC-06, TC-08 (không DISTINCT).
  • Nếu muốn sửa: thêm DISTINCT; đổi TC-06, TC-08.
  • Liên quan: D-03, R-03

B-02 Trả cả kho đã ngừng hoạt động / không còn hàng

  • Mức nghi ngờ: THẤP
  • Ở đâu: như B-01
  • Code cũ đang làm gì: không lọc trạng thái kho, tồn, dòng tồn chính.
  • Ví dụ cụ thể: "Kho 7" đã ngừng, còn dòng tồn SP 55 bằng 0 → vẫn có trong danh sách. Nếu nghĩa là "kho đang chứa hàng" thì không nên có.
  • Vì sao nghi là sai: tên chức năng "các kho đang chứa một SP".
  • Ảnh hưởng nếu đúng là bug: người dùng chọn nhầm kho ngừng hoạt động.
  • Đã xử lý khi chuyển: GIỮ. Test khoá: TC-08 (SQL không lọc).
  • Nếu muốn sửa: lọc w.status = 1 và/hoặc i.on_hand > 0; đổi TC-08.
  • Liên quan: D-04, R-03

3d. Quyết định AI tự chốt và thay đổi tự động (cần người xác nhận)

# Nguồn AI đã làm gì Khác code cũ ở điểm nào (input → cũ / mới) Người cần xác nhận gì
1 D-07 (MƠ HỒ) Giữ cấu hình JSON starter SP chưa có tồn → cũ "data":[] / mới không có key data Quyết chung với warehouse/get-with-paging 3d #1
2 D-01 (LỖI KỸ THUẬT) Kiểm comId của token công ty khác → cũ trả tên kho / mới 400; comId ≤ 0 → cũ 200 [] / mới 400; token thiếu companyId → mới 401 Đồng ý
3 D-02 (ADR BẮT KHÁC) Body theo starter, 417→500 giữ mã reason mã; không có key count Frontend đọc mã
4 D-05 (MƠ HỒ) @Transactional không readOnly — (giữ đọc DB chính) Chung với get-with-paging D-06
5 D-06 (PHỤ THUỘC NGOÀI) Không kiểm gói công ty hết hạn vẫn xem được Tầng đảm nhận (chung)
6 spec-review Spec qua 1 lần review (0 CRITICAL), R-xx sửa theo MAJOR: R-04 (data rỗng, D-07) — Đọc kỹ R-04

4. Finding đã xác nhận

Không có.

5. Finding bị loại

Finding Lý do loại
— —

6. Xử lý của người

Vấn đề Cổng Chỉ thị
G4 — chưa kiểm Sonar G4

7. So với vòng trước

Vấn đề Vòng trước Vòng này
(vòng đầu) — —

8. Thay đổi trong repo đích

11 file (verify/round-1/changed-files.md): 8 main + 3 test, trong src/main, src/test. Mới: WarehouseIdNameResult, WarehouseIdNameResponse. Không có file ngoài phạm vi.

9. Đề xuất bổ sung kinh nghiệm

Đề xuất Đưa vào đâu
Câu SQL join bảng của context khác: đặt ở adapter của context sở hữu điều kiện lọc chính (ở đây inventory), warehouse gọi qua *QueryService target-cheatsheet mục 2

Nguồn của trang này

  • Báo cáo sai lệch migrations/warehouse/get-warehouse-id-names-by-product/report.md vòng 1 · sha256 6f54dc8710c8

v1 dựng 2026-11-06 00:42 · base commit đích a06ccfa6d4