# Mô hình dữ liệu logic đề xuất

## 1. Employee
Thông tin nhân viên / lái xe.

| Field | Ý nghĩa |
|---|---|
| EmployeeId | khóa chính |
| EmployeeCode | mã nhân viên |
| FullName | họ tên |
| RoleType | loại nhân sự, ví dụ DRIVER |
| DepartmentId | phòng ban |
| Status | đang làm việc / nghỉ việc |

## 2. ManualTicket
Phiếu thủ công.

| Field | Ý nghĩa |
|---|---|
| TicketId | khóa chính |
| TicketCode | mã phiếu |
| TicketType | REWARD / PENALTY |
| EmployeeId | người bị áp dụng |
| CategoryId | phân loại |
| Title | tiêu đề |
| Content | nội dung |
| Amount | số tiền |
| Status | trạng thái |
| CreatedBy | người tạo |
| CreatedAt | thời điểm tạo |

## 3. DriverCashDue
Nghĩa vụ nộp tiền của lái xe theo ngày.

| Field | Ý nghĩa |
|---|---|
| CashDueId | khóa chính |
| DriverId | lái xe |
| BusinessDate | ngày phát sinh |
| AmountDue | số tiền phải nộp |
| SourceReference | tham chiếu nghiệp vụ gốc |
| CreatedAt | thời điểm ghi nhận |

## 4. DriverCashPayment
Các lần nộp tiền của lái xe.

| Field | Ý nghĩa |
|---|---|
| PaymentId | khóa chính |
| DriverId | lái xe |
| PaymentTime | thời gian nộp |
| Amount | số tiền nộp |
| ReferenceNo | chứng từ |
| CreatedAt | thời điểm ghi nhận |

## 5. AutoPenaltyConfig
Cấu hình xử lý tự động.

| Field | Ý nghĩa |
|---|---|
| ConfigId | khóa chính |
| IsEnabled | bật / tắt |
| IsPaused | tạm dừng hay không |
| PauseReason | lý do tạm dừng |
| CutoffTimeNextDay | giờ cutoff ngày hôm sau |
| ResetPolicy | MONTHLY / QUARTERLY / LIFETIME |
| EffectiveFrom | hiệu lực từ |
| EffectiveTo | hiệu lực đến |
| CreatedBy | người tạo |
| UpdatedBy | người sửa |

## 6. AutoPenaltyLevel
Cấu hình mức xử lý theo số lần vi phạm.

| Field | Ý nghĩa |
|---|---|
| LevelId | khóa chính |
| ConfigId | thuộc cấu hình nào |
| FromCount | từ lần |
| ToCount | đến lần |
| ActionType | REMIND / PENALTY |
| PenaltyAmount | số tiền phạt |

## 7. DriverCashViolation
Bản ghi vi phạm tự động.

| Field | Ý nghĩa |
|---|---|
| ViolationId | khóa chính |
| DriverId | lái xe |
| BusinessDate | ngày phát sinh nghĩa vụ |
| DeadlineAt | hạn chót |
| AmountDue | số phải nộp |
| AmountPaidBeforeDeadline | số đã nộp trước hạn |
| OutstandingAmount | còn thiếu tại deadline |
| ViolationCount | lần vi phạm trong scope |
| ResetPolicyApplied | chính sách reset áp dụng |
| ConfigIdApplied | cấu hình áp dụng |
| Status | NEW / TICKET_CREATED / IGNORED |
| CreatedAt | thời điểm tạo |

## 8. AutoPenaltyTicket
Phiếu/biên bản được sinh tự động từ vi phạm.

| Field | Ý nghĩa |
|---|---|
| TicketId | khóa chính |
| ViolationId | liên kết vi phạm |
| DriverId | lái xe |
| TicketCode | mã phiếu |
| ActionType | REMIND / PENALTY |
| Amount | số tiền |
| Status | trạng thái |
| CreatedAt | thời điểm tạo |

## 9. ConfigAuditLog
Lưu lịch sử đổi cấu hình.

| Field | Ý nghĩa |
|---|---|
| LogId | khóa chính |
| ConfigType | loại cấu hình |
| OldValue | giá trị cũ |
| NewValue | giá trị mới |
| ChangedBy | người thay đổi |
| ChangedAt | thời điểm thay đổi |
| Reason | lý do thay đổi |