--- name: may-rong-ui-hep description: "Nguyên tắc owner @S164: 'máy rộng, UI hẹp' — schema/BE thiết kế cho ca tổng quát (N), giao diện mặc định ca đơn giản (1-1), user cần thì bung — 0 đổi máy" metadata: node_type: memory type: feedback originSessionId: f7c1c007-6a03-4bf4-b46b-f6dbe9139702 modified: 2026-07-31T05:17:44.243Z --- Owner chốt cùng 1 nguyên tắc ở 2 quyết định liên tiếp @S164 (chuỗi 4-GĐ SP-002): - OG-1 gộp HĐ: *"thiết kế gộp nhưng giao diện thì cho 1-1 (Khi user đổi ý thì mình làm luôn)"* - OG-7 N-phiếu/PE: *"PE cho nhiều, nhưng giống cái trên làm trước nhưng rào hiển thị 1-1 lại -> User cần thì bung ra"* **Why:** đổi schema/migration sau khi ship = đắt + rủi ro (cardinality-change class S87/S88); đổi UI default = rẻ. Owner muốn trả giá schema MỘT LẦN cho ca tổng quát, nhưng không bắt user ăn complexity khi 90% ca là đơn giản. **How to apply:** khi thiết kế field/quan hệ có 2 mức cardinality (1-1 vs 1-N, đơn vs gộp): (a) schema + BE + validator theo mức RỘNG (N); (b) UI/flow mặc định theo mức HẸP (1) — nút phụ/flag "bung" thay vì bắt chọn; (c) code viết 1 đường chung (hàm nhận list, UI truyền 1 phần tử); (d) rào chặn cứng (409) đổi thành rào hiển thị. Đề xuất lên owner: đưa default HẸP, khai máy đã RỘNG sẵn. Liên quan: [[sol-ccm-sp002-signing-matrix]] · [[cardinality-change-grep-consumers]]