KB-5FC2
NGUYÊN TẮC: menu 4 Mẹ — một nguồn duy nhất, tự đồng bộ mọi tab
3 min read Revision 1
principlenavigationeco-nav4-mothersconsistencygovernance
NGUYÊN TẮC — Menu 4 Mẹ phải nhất quán TUYỆT ĐỐI ở mọi nơi
Date: 2026-06-20 | Status: ENFORCED (eco-nav.js). Lý do: nhiều lần menu hiển thị khác nhau giữa các trang (lỗi kiểu hardcode / cache) → gây nhầm lẫn, bắt user đi dò.
Luật bất biến
- Một nguồn duy nhất. Toàn hệ thống chỉ có MỘT định nghĩa menu = mảng
APPStrongeco-nav.js. Cấm mọi trang tự khai menu riêng (không hardcode trong trang). - Trang chỉ nạp, không định nghĩa. Mỗi trang nạp menu bằng loader chống-cache:
(function(){fetch('./eco-nav.js?ts='+Date.now()).then(r=>r.text()).then(t=>(0,eval)(t));})(); - Tự gỡ bản cũ (self-healing). Khi chạy, eco-nav gỡ mọi
.eco-bar/.eco-pop/style cũ rồi vẽ lại → không bao giờ có 2 thanh, không kẹt bản cũ do nhiều<script>tích tụ. - Tự đồng bộ mọi tab. eco-nav tự
resync(fetch lại nguồn + so signature, chỉ vẽ lại khi đổi) trên:focus,visibilitychange,pageshow, và mỗi 45s. → Đổi menu 1 chỗ ⇒ MỌI tab (cũ/mới) tự cập nhật trong vài giây, KHÔNG cần reload tay. - Khác biệt hợp lệ duy nhất: chỉ là chip "đang xem" (highlight theo
matchcủa trang hiện tại). Mọi mục menu phải giống hệt nhau ở mọi trang.
Hệ quả vận hành
- Sửa menu = sửa đúng 1 chỗ (mảng APPS). Không append script phiên bản mới mỗi lần nữa.
- Tab mở từ TRƯỚC khi cơ chế self-sync tồn tại: cần reload một lần cuối; sau đó tự đồng bộ vĩnh viễn.
- Verify chuẩn: mở ≥3 trang khác nhau, menu phải GIỐNG HỆT (chỉ khác "đang xem"); kích hoạt focus nhiều lần → vẫn 1 thanh.
Cấu trúc menu hiện tại (nguồn: eco-nav.js APPS)
- MOW: Thiết kế quy trình · MODW (biến MOW chạy được) · Danh sách đã đúc
- MOT: Bàn làm việc · Bộ công cụ Studio · MODT (biến MOT chạy được) · Danh sách đã đúc
- MOIT: MODIT (biến MOIT chạy được) · Bộ công cụ Studio (giao diện linh hoạt theo hàng) · Kiến trúc input→DB
- MOUT: Tạo báo cáo · Danh sách đã đúc
- Master: Tổng hợp 4 Mẹ · Ma trận đa chiều · Hiến pháp · MOW/MOT/MOUT đã đúc
(Ma trận đa chiều = con của Master, KHÔNG còn dưới MOW.)
Verified (browser, 2026-06-20)
4 trang (constitution, MOUT, MOT dashboard, MOT master) hiển thị menu giống hệt; resync nhiều lần không nhân đôi (barCount=1).
Việc còn treo (theo yêu cầu "làm từng việc")
- Tách MOIT gốc (trang tạo form nhập liệu — UI xem & thao tác sản phẩm cuối, giao diện linh hoạt theo hàng) riêng với MODIT (bản thiết-kế-kết-nối-dữ-liệu-để-chạy, có chữ D). Chờ user xác nhận để làm.