Skip to content

feat(doctor): thêm AvailableSlotsReader khung giờ còn trống (B6) - #325

Open
junUTE wants to merge 1 commit into
mainfrom
feat/doctor-b6-available-slots
Open

junUTE wants to merge 1 commit into
mainfrom
feat/doctor-b6-available-slots

Conversation

@junUTE

@junUTE junUTE commented Nov 10, 2026

Copy link
Copy Markdown
Collaborator

Mô tả

Thêm AvailableSlotsReader (D3) vào SchedulingModule để booking và search K1 lấy khung giờ còn trống của bác sĩ theo ngày.

  • list({ bacSiId, ngay }) và listMany({ bacSiIds, ngay }) trả trangThaiNgay (CoLich, KhongCoLich, ChiNhanhNghi kèm thuNghi, NghiPhep) và danh sách { khungGioId, batDau, ketThuc, ca, trangThai }.
  • slot-status.rules.ts (hàm thuần) suy trạng thái ô khi đọc: quá giờ là HetHan (xét trước), DangGiuCho hết hạn hoặc thiếu giu_cho_den là ConTrong.
  • Loại ô bị nghỉ phép ChoDuyet/DaDuyet phủ (dùng LeaveReader của B5) và ô ngoài giờ nhận khám hiện hành (dùng checkSlotWithinBranchHours của P2).
  • Giờ ca lấy theo chi nhánh ghi trên ca (D12), không theo chi nhánh hiện tại của bác sĩ.
  • Chỉ đọc, không khoá, chạy trong em của người gọi (mặc định dataSource.manager).
  • listMany dùng 3 truy vấn cho cả trang bác sĩ (trần 4 theo H14).
  • ngay_gio đọc bằng DATE_FORMAT rồi ghép +07:00, không phụ thuộc cách driver đổi DATETIME ra Date (M4). [đề xuất]

Test case

AV-01…AV-16, HD-02, HD-04, HD-12 (xem docs/features/doctor/PLAN.md mục 7).

Kiểm thử

  • lint, tsc --noEmit: sạch.
  • vitest run src/scheduling src/doctor: 85/85 pass (gồm HD-08 và kiểm tra chiều phụ thuộc).
  • Test tích hợp MySQL thật (available-slots.reader.int-spec.ts): [chưa chạy, điền kết quả sau khi chạy npm run test:int]. M4 [chưa đo].

Ghi chú cho người review

  • Chưa có endpoint HTTP; search K1 sẽ bọc reader này.
  • Không đổi schema, không cần [ĐỒNG BỘ TL].

Closes #280

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[doctor] B6 · AvailableSlotsReader: khung giờ còn trống (backend)

2 participants