GLS · Quản lý xe · Prototype console v4

Mô hình dữ liệu & luồng hệ thống

Tài liệu mô tả thực thể dữ liệu, luồng nghiệp vụ bảo dưỡng / sửa chữa, và đề xuất thiết kế cơ sở dữ liệu bám theo bản xem thử console-v4. Prototype lưu seed trên trình duyệt (localStorage) — đây là bản đồ để chuyển sang hệ thống thật.

Nguồn: seed console v4 · Seed v4.02 Mở console Sơ đồ luồng tương tác

1. Tổng quan kiến trúc dữ liệu

Hệ thống tách rõ dữ liệu nền (master), giao dịch vận hành (nhắc · kế hoạch · phiếu · đánh giá), và cầu nối hệ thống ngoài (PWMS kho / mua hàng, BASE duyệt, GPS odo).

Master / danh mục Giao dịch TMS Hệ thống ngoài Quyết định / trạng thái
Lớp 1 · Master
Xe · Hệ thống · Vật tư · Nội dung SC · Loại DV · Tiêu chí ĐG · Danh mục BD · Barem giờ
Khai báo một lần; gắn xe ↔ danh mục; ánh xạ Object ID PWMS.
↓
Lớp 2 · Vận hành
Nhắc BD · Kế hoạch / mẫu · Phiếu BD·SC · Đánh giá định kỳ · SERI lốp/ắc
Tạo từ master + mốc chu kỳ / sự cố / đánh giá; lưu trạng thái duyệt & thực hiện.
↓
Lớp 3 · Đồng bộ
BASE (duyệt) · PWMS / mua hàng (giá · chứng từ · tồn) · GPS (odo)
TMS kéo dữ liệu mua hàng theo mã phiếu; đẩy trạng thái / mã sang BASE (mô phỏng trên demo).
Nguyên tắc prototype: cụm vật tư dự kiến (kỹ thuật nhập) và cụm mua hàng (sau đồng bộ) không ghi đè nhau. Mọi phiếu đều phải đồng bộ mua hàng — kể cả chỉ vật tư kỹ thuật viên ghi tay.

2. Catalogue thực thể dữ liệu

Ánh xạ trực tiếp các khóa trong object DB của console-v4 (seed + localStorage).

2.1 Master (danh mục nền)

Master
vehicles
  • Đầu kéo / rơ-mooc · biển số · hãng · model
  • km / giờ · khu vực · garage · GPS site
  • pwmsCode · trailerPlate · mốc đánh giá
Master
vehicleSystems
  • Hệ thống trên xe (PWMS)
  • Gắn tiêu chí ĐG · nội dung SC · danh mục BD
Master
materials
  • Mã · tên · đơn vị tính · VAT · giá tham chiếu
  • toi_thieu (SL tối thiểu) · tồn · NCC · kho
  • nhóm / hệ thống PWMS · cờ SERI (lốp/ắc)
Master
repairItems
  • Nội dung sửa chữa / hạng mục công việc
  • Thuộc hệ thống · gợi ý trên phiếu & đánh giá
Master
serviceTypes
  • Loại dịch vụ (bảo dưỡng / sửa chữa…)
  • Gợi ý phân loại hạng mục trên kế hoạch
Master
evalCriteria
  • Tiêu chí / nhóm tiêu chí đánh giá
  • Liên kết hệ thống · gợi ý SC / VT
Master
catalog (+ rules)
  • Danh mục bảo dưỡng: mã · tên · hệ thống
  • Mốc chu kỳ KM/tháng · forceReplace · repeat
  • evalItemIds · repairItemIds · defaultOnEvalBad
Master
baremHours
  • Giờ barem theo hệ thống + nội dung
  • effectiveFrom / effectiveTo (kỳ áp dụng)
Master · liên kết
vehicleCatalogIds / Overrides
  • Gắn danh mục BD vào từng xe
  • Ghi đè chu kỳ định mức theo xe

2.2 Giao dịch vận hành

Giao dịch
catState
  • Khóa vehicleId:catalogId
  • occurrence · lastKm/Date · nextKm/Date
  • Nguồn cho lưới Nhắc bảo dưỡng
Giao dịch
plans / planTemplates
  • Dòng kế hoạch theo xe · kỳ · nội dung · VT
  • Đơn giá · SL · lịch · liên kết BASE
  • Mẫu nhiều hạng mục (xe gốc · loại/hãng/model)
Giao dịch
orders
  • Phiếu BD / SC · approvalStatus · status
  • workItems · materials (dự kiến) · purchaseMaterials
  • purchaseSync · baseSync · approvalLog · ảnh
Giao dịch
evaluations
  • Đánh giá định kỳ theo xe / ngày
  • items (Tốt / SC / Thay) · notes · draft/submit
  • Có thể sinh phiếu SC liên kết
Giao dịch
localLookups
  • Nội dung / garage / VT tạo mới nội bộ
  • Không sync PWMS cho đến khi map master
Giao dịch
Lốp / ắc (SERI)
  • Đơn vị lắp trên xe · serial · ngày lắp
  • Định mức tháng (không theo km trên nhắc)

2.3 Trường trạng thái quan trọng trên phiếu

Nhóm Trường Giá trị / ý nghĩa
Duyệt nội bộ approvalStatus DRAFT → PENDING_APPROVAL → APPROVED | REJECTED (+ nộp lại)
Thực hiện status NOT_STARTED → IN_PROGRESS → COMPLETED
Vật tư dự kiến materials[].source PWMS (xuất kho) · EXTERNAL (sửa ngoài) · TECHNICIAN (KTV ghi)
Đồng bộ MH purchaseSync.status NONE → SYNCING → SYNCED | FAILED — bắt buộc mọi phiếu
Cụm MH purchaseMaterials[] Giá / NCC / chứng từ / ngày cấp sau đồng bộ; không ghi đè cụm dự kiến
BASE baseSync NONE → SYNCING → SYNCED · mã yêu cầu trên BASE
Vật tư toiThieu / minQty Số lượng tối thiểu khi chọn từ danh mục (không mặc định luôn 1)

3. Luồng dữ liệu nghiệp vụ

Tóm tắt hướng đi của dữ liệu — chi tiết thao tác UI xem thêm sơ đồ luồng tương tác.

3.1 Bảo dưỡng định kỳ

Vào
catalog + vehicleCatalogIds + catState + vehicles.km
Mốc nextKm / nextDate so với odo / ngày hiện tại.
↓
Nhắc bảo dưỡng
Sắp hạn · quá hạn · lốp/ắc theo tháng
Đưa vào kế hoạch (tháng này / tháng sau / ngày cụ thể).
↓
plans / planTemplates
Dòng KH: nội dung · VT gợi ý · SL (toi_thieu) · đơn giá
DM gắn xe: chỉ bỏ chọn. Dòng trống: luôn chọn + có xóa.
↓
Quyết định
Đồng bộ BASE kế hoạch → tạo phiếu BD (gom/tách)
↓
orders (PERIODIC)
Duyệt → bắt đầu → hạng mục → odo → hoàn thành
Cập nhật catState (occurrence, next mốc). Đồng bộ MH + BASE phiếu.

3.2 Sửa chữa

Nguồn vào
Sự cố TX · Đánh giá định kỳ · KTV chủ động · Từ nhắc / KH
↓
orders (INCIDENTAL) nháp
workItems + materials (nhập tự do / autocomplete)
Hình thức XK / SN hệ thống gợi ý theo tồn khi khớp danh mục.
↓
Chu kỳ duyệt
Nộp → Duyệt / Từ chối → (sửa + nộp lại)
↓
Thực hiện
START → đồng bộ MH → hoàn thành WI → COMPLETE
↓
Ra ngoài
purchaseMaterials ← PWMS/MH · baseSync → BASE

3.3 Luồng vật tư trên phiếu

BướcDữ liệu đọcDữ liệu ghi
KTV nhập / chọn autocomplete materials · localLookups.materials orders.materials[] (qty ≥ toi_thieu nếu từ master)
Đồng bộ mua hàng materials (giá / NCC) · mã phiếu purchaseMaterials[] · purchaseSync=SYNCED
Báo cáo chi phí Ưu tiên sum(purchaseMaterials); fallback materials dự kiến orders.cost

4. Sơ đồ liên kết bảng (ER diagram)

Sơ đồ quan hệ đầy đủ cột (PK / FK / kiểu dữ liệu). Chọn tab để xem toàn cảnh hoặc phóng từng cụm. Kéo nền để pan · nút ± / bánh xe để zoom · Vừa khung để căn lại.

Master / danh mục Giao dịch vận hành Bảng dòng / junction Ánh xạ hệ thống ngoài

100%

Chú giải quan hệ (văn bản)

5. Chi tiết cột bảng (đề xuất)

Schema quan hệ đề xuất khi chuyển prototype → backend. Tên bảng tiếng Anh kỹ thuật; mô tả tiếng Việt. Khóa chính PK · khóa ngoại FK. Xem liên kết tổng thể ở mục Sơ đồ liên kết.

5.1 Bảng master

vehicle
  • idbigint PK
  • platevarchar · unique
  • is_trailerbool
  • brand / model / year
  • odo_km / engine_hoursnumeric
  • avg_km_per_monthnumeric · nullable
  • garage / area / gps_site
  • trailer_vehicle_idFK → vehicle
material
  • idbigint / uuid PK
  • codevarchar · unique
  • name / uom
  • ref_price / vatnumeric
  • min_qtynumeric · toi_thieu ≥ 1
  • supplier / warehouse
  • stock_qtycache từ PWMS
  • pwms_group / systemnhom · he_thong
  • requires_serialbool · lốp/ắc
maint_catalog
  • idPK
  • code / name
  • system_idFK → vehicle_system
  • default_on_eval_badREPAIR|REPLACE
maint_catalog_rule
  • idPK
  • catalog_idFK
  • seqint
  • rule_typeKM | MONTH
  • valuenumeric
  • force_replace / repeatbool
  • max_occurrencesint · null = ∞

5.2 Bảng trạng thái & kế hoạch

vehicle_catalog_state
  • vehicle_id + catalog_idPK kép
  • occurrenceint
  • last_km / last_date
  • next_km / next_datemốc nhắc
  • planned_date_overridenullable
plan_line
  • idPK
  • vehicle_idFK
  • catalog_idnullable
  • periodYYYY-MM
  • content / service
  • qty / uom / unit_price / vat
  • schedule_datedate
  • work_order_idnullable · đã tạo phiếu
  • base_sync_status / code
plan_line_material
  • idPK
  • plan_line_idFK
  • material_idnullable
  • code / name / qty / uomqty ≥ min_qty khi có material_id
plan_template
  • idPK
  • name / period
  • vehicle_type / brand / modeláp dụng hàng loạt
  • seed_vehicle_id
  • items JSON / bảng conhạng mục mẫu

5.3 Bảng phiếu công việc

work_order
  • idPK
  • codeunique · RO-… / PBD-…
  • vehicle_idFK
  • order_kindMAINT | REPAIR
  • sourceINCIDENT|PLAN|EVAL|…
  • approval_statusenum
  • exec_statusenum
  • odo_km / garage / content
  • catalog_idnullable
  • started_at / completed_at
  • material_requested_at / ready_at4 mốc
  • costnumeric · derived
  • revisionint
work_order_item
  • idPK
  • work_order_idFK
  • system / content / service
  • performerKTV
  • barem_hours / actual_hours
  • started_at / completed_at
  • statusTODO|DOING|DONE
work_order_material
  • idPK · cụm dự kiến
  • work_order_idFK
  • material_idnullable
  • sourcePWMS|EXTERNAL|TECHNICIAN
  • qty / uom / price / vatqty ≥ min_qty
  • local_onlybool
work_order_purchase_line
  • idPK · cụm MH
  • work_order_idFK
  • planned_material_idnullable
  • price / supplier / warehousetừ MH
  • purchase_doc_codeXK-… / MH-…
  • issued_attimestamp
work_order_sync
  • work_order_idPK/FK
  • purchase_statusNONE|SYNCING|SYNCED|FAILED
  • purchase_synced_at / issue_doc
  • base_status / base_code
  • base_synced_at
work_order_approval_log
  • idPK
  • work_order_idFK
  • actionCREATE|SUBMIT|APPROVE|…
  • at / by / note
  • changes_jsondiff cũ→mới

5.4 Chỉ mục & ràng buộc gợi ý

Đối tượngRàng buộc / index
vehicle UNIQUE(plate); INDEX(is_trailer, area)
material UNIQUE(code); CHECK(min_qty > 0)
work_order_material CHECK: nếu material_id NOT NULL thì qty ≥ material.min_qty
vehicle_catalog_state PK(vehicle_id, catalog_id); INDEX(next_km), INDEX(next_date)
plan_line INDEX(vehicle_id, period); INDEX(schedule_date)
work_order UNIQUE(code); INDEX(vehicle_id, approval_status, exec_status)
work_order_sync CHECK purchase_status ≠ 'NA' (mọi phiếu đều phải đồng bộ MH)
Ghi chú triển khai: Prototype chưa có master người dùng / vai trò — production cần thêm app_user, role, và bảng phân quyền trước khi gắn approval_log.by / performer KTV vào tài khoản thật.

6. Biên hệ thống ngoài (đồng bộ)

Trên demo chỉ mô phỏng. Hướng tích hợp thật (xem thêm IT · API PWMS).

PWMS / Mua hàng
TMS ← kéo
  • Master vật tư · tồn · giá · NCC
  • Chứng từ xuất kho / mua ngoài theo mã phiếu
  • Ánh xạ xe: TMS id ↔ Object ID PWMS
BASE
TMS → đẩy / cập nhật
  • Yêu cầu kế hoạch / phiếu · trạng thái duyệt
  • Nhận mã BASE về base_sync.code
GPS
TMS ← odo
  • Km ODO GPS trên nhắc BD (đối chiếu đồng hồ)
  • Hỗ trợ tính mốc / cảnh báo vượt km
Nội bộ TMS
Không đẩy vòng đời phiếu sang PWMS
  • Trạng thái duyệt / giờ KTV giữ trong TMS
  • localLookups: tạo nhanh ND/VT/garage chỉ nội bộ

Ánh xạ object seed → bảng đề xuất

Trong console-v4 DB.*Bảng đề xuất
vehiclesvehicle
materialsmaterial
catalog + rules[]maint_catalog + maint_catalog_rule
vehicleCatalogIdsvehicle_catalog (junction)
catStatevehicle_catalog_state
plansplan_line (+ plan_line_material)
planTemplatesplan_template (+ items)
orderswork_order
orders.workItemswork_order_item
orders.materialswork_order_material
orders.purchaseMaterialswork_order_purchase_line
orders.purchaseSync / baseSyncwork_order_sync
orders.approvalLogwork_order_approval_log
evaluationsevaluation + evaluation_item
pwmsVehicleMap / ánh xạpwms_vehicle_map