v1.0 — 31/03/2026 Bản nháp

INKAVA Build Proposal

Printing MIS Product — Từ Incubator Đến Sản Phẩm

→ Xem Bản Đồ Toàn Cảnh Nhà Máy
24
Modules Hiện Tại
70+
API Endpoints
140
Users (1 Nhà Máy)
19w
Thời Gian Build
4
Giai Đoạn

Executive Summary — TL;DR

Phát hiện chính: Hệ thống MIS thực tế trong ngành in ĐƠN GIẢN hơn rất nhiều so với kiến trúc enterprise lý thuyết. Nhà máy 100–200 người chạy trên ~15 bảng chính + 25 bảng lookup. Phần lớn "độ phức tạp" mà nhà máy phàn nàn là thiết lập master data, không phải database schema.

Nghiên cứu Data Models thực tế từ ngành

Dựa trên phân tích PrintVis (Dynamics 365), EFI Pace, Acumatica PrintShop, X-Rite InkFormulation

Chủ đề Hệ thống thực tế làm gì Cần tránh
Sample vs Production 1 Job entity duy nhất + status flags (Draft → Sample → Production → Shipped). Sample = child records type=LabDip/StrikeOff Tách riêng Sample Job + Production Job
Công thức mực Thư viện ngoài liên kết qua ID. Mỗi formula = 1 màu × 1 substrate. Versioning = duplicate + rename (v1, v2) Nhúng formula vào bảng Job. Formula parameterized cho nhiều substrate
Cấu trúc Job/Case Case → Job → JobItem (per decoration). Apparel = nhân bản: colors × sizes × placements = N line items Job phẳng đơn giản hóa quá mức, không handle apparel complexity
Quản lý Lưới/Bản Inventory đơn giản + usage history (impression count). Reclamation = kiểm tra thủ công Lifecycle tự động, dự đoán hao mòn, chi phí khấu hao per impression
Thông số in Tách riêng khỏi formula. Per Job × Machine. Operator có thể override Gộp print params vào formula. 1 bộ tham số cho mọi máy
Dung sai màu Delta E CMC l:c 2:1. ≤1.0 = PASS. Lưu metadata, không tính trong ERP Build tính Delta E vào MIS (dùng spectrophotometer integration)
Quy mô DB ~15 bảng chính, 20-35 lookups. Status-based workflow, manual override ưu tiên Multi-level BOM, auto cost allocation, capacity scheduling, lot tracking

5 Nguyên tắc thiết kế cho INKAVA

1 Status flags thay vì entity types

1 Job chuyển qua các giai đoạn, không tạo bản ghi trùng lặp

2 Link, don't embed

Formula, screen, machine — tất cả tham chiếu qua ID, không nhúng vào Job

3 Flat hơn Deep

Danh sách vật tư phẳng, không dùng multi-level BOM

4 Luôn cho phép override thủ công

Tự động hóa thu thập dữ liệu, nhưng để con người quyết định

5 Bối cảnh SME Việt Nam

Đa số bỏ qua đo Delta E → duyệt mắt. E-invoice (Nghị định 78/2021) bắt buộc. Workflow đơn giản, tránh bắt buộc approval phức tạp.

Kết luận: INKAVA đã đi đúng hướng — module Công Thức Mực hiện tại (28 fields, clone, 3 views) phù hợp với cách ngành vận hành. Cần giữ đơn giản, tránh over-engineer theo kiểu enterprise ERP.
1

Bối Cảnh & Mục Tiêu

INKAVA là hệ thống MIS (Management Information System) cho nhà máy in ấn / trang trí vải. Hiện tại đã chạy production tại 1 nhà máy ~140 nhân viên. Quản lý toàn bộ quy trình từ kế hoạch sản xuất đến giao nhận thành phẩm.

Mục tiêu product hóa

Hiện TạiMục Tiêu
Phạm vi1 nhà máy duy nhấtMulti-factory SaaS
Công nghệLegacy PHP thuầnModern stack, cloud-ready
Doanh thuCông cụ nội bộ (chi phí)Sản phẩm bán được (doanh thu)
Dữ liệuPhân mảnh, phụ thuộc ExcelSingle source of truth
Giao diệnChỉ desktop, jQueryResponsive, dùng được trên tablet
Tầm nhìn: Mỗi nhà máy in 100–500 người tại Việt Nam đều có thể sử dụng INKAVA để quản lý từ báo giá đến quyết toán, thay vì Excel + Zalo + giấy.
2

Hệ Thống Hiện Tại

PHP Files
~200+
PHP thuần, không framework
AJAX Endpoints
70+
jQuery gọi trực tiếp
Database Tables
~25-30
MySQL, Windows IIS

Ưu Điểm — Đang Chạy Tốt

Công Thức Mực (PTM) — Module mạnh nhất

28 fields chi tiết, clone công thức, chốt SX, 3 views cho 3 bộ phận (Phòng Mực, Phòng Bảng, Tổ SX). 12 AJAX endpoints. Đây là lợi thế cạnh tranh.

5/5
KCS BTP Inline

Kiểm tra CLI + KC, ghi lỗi + giải pháp. Workflow tốt, dữ liệu đầy đủ.

4/5
Giao Nhận + QR

QR scan, in phiếu qua WebClientPrint, xuất Excel. Tracking nội bộ hoạt động tốt.

4/5
Gemba / 5S

3 quy trình, upload ảnh, KPI. Lean manufacturing chuẩn.

4/5
5 BTP Đầu + Kiểm Tra CL

Kiểm tra chất lượng đầu dây chuyền. Checklist đầy đủ, tìm kiếm đa tiêu chí.

4/5
Tổng kết: Mạnh ở giữa chuỗi sản xuất (PTM → KCS → Giao nhận). Đây là phần giữ lại và tái triển khai trong sản phẩm mới.

Nhược Điểm — Cần Giải Quyết

Kỹ Thuật
Nghiêm trọng Không có framework

PHP thuần — không routing, middleware, ORM, migration. Sửa 1 chỗ có thể vỡ 3 chỗ.

Nghiêm trọng Không có API layer

Frontend gọi trực tiếp AJAX tới PHP files. Không thể tích hợp mobile/bên ngoài.

Cao Rủi ro SQL injection

PHP thuần thường dùng nối chuỗi cho truy vấn SQL.

Cao Không có Git

Code trên server, không có lịch sử phiên bản, không rollback được.

Business Logic
Thiếu sótMức độChi tiết
Không có báo giáNghiêm trọngTính giá tay trên Excel. Không biết margin thật.
Không có PO lifecycleNghiêm trọngPO chỉ là 1 trường text. Không trạng thái, không timeline.
Không có master KHCaoKhách hàng nhập tay mỗi lần, không CRM, không lịch sử.
Không có master mã hàngCaoMã hàng phân tán ở kế hoạch + PTM.
Không có tồn kho NPLCaoChỉ có danh sách. Không tồn kho, không cảnh báo tối thiểu.
Dữ liệu nhập képCaoKH, mã hàng, PO nhập lại ở nhiều modules.
Dashboard thiếuTrung bìnhChỉ có 4 KPI sản xuất. Không có doanh thu, margin, pipeline.

Luồng Dữ Liệu: Hiện Tại vs Lý Tưởng

Hiện Tại — Phân Mảnh
Excel ──upload──> Thương mại ──copy/paste──> Kế hoạch ──nhập tay──> PTM ──nhập tay──> Sản xuất ──nhập tay──> KCS ──nhập tay──> Giao nhận ──nhập tay──> Quyết toán

Mỗi mũi tên = nhập lại dữ liệu, rủi ro sai/thiếu/chậm

Lý Tưởng — Tự Động
Yêu cầu KH ──tự động──> Báo giá (cost engine) ──duyệt──> Đơn hàng (PO) ──tự động──> Kế hoạch SX ──liên kết──> PTM + Sản xuất ──tự động──> KCS + Giao nhận ──tự động──> Quyết toán ──tự động──> Dashboard margin

Dữ liệu chảy tự động, kế thừa từ bước trước

3

Gap Analysis — Chuỗi Giá Trị 12 Bước

1Tiếp nhậnChưa có
2Báo giáChưa có
3Xác nhận POChưa có
4PTM / MẫuMạnh
5Duyệt mẫuThiếu flow
6Kế hoạch SXCần cải thiện
7Sản xuấtHoạt động
8KCSTốt
9Giao hàngThiếu tracking
10Quyết toánThiếu tự động
11Phân tíchChưa có
12Cải tiếnGemba/5S
Kết luận: Mạnh ở bước 4, 7, 8, 12 (giữa + cuối). Thiếu bước 1, 2, 3, 11 (đầu + phân tích). Cần cải thiện bước 5, 6, 9, 10.

Quyết Định: Giữ / Cải Thiện / Xây Mới

Phân loạiModulesCách tiếp cận
GIỮ NGUYÊN PTM, KCS BTP Inline, 5 BTP Đầu, Kiểm Tra CL, Giao Nhận QR, Gemba/5S, NV+RBAC, NINUNAPZ Tái triển khai logic trong sản phẩm mới với UX tốt hơn
CẢI THIỆN Kế Hoạch, Định Mức Mực, Quyết Toán, NPL, Code Mực, Dashboard, Thương Mại Build lại trong sản phẩm mới với dữ liệu từ đơn hàng
XÂY MỚI Master KH, Master Mã Hàng, Quản Lý Đơn Hàng, Tiếp Nhận, Báo Giá, Cost Engine, Lịch SX, Giao Hàng, Margin, Dashboard KD Core của sản phẩm mới. Giải quyết các gaps lớn nhất.
4

So Sánh Tech Stack

Phương án A: Laravel

Full-stack PHP framework. Team quen PHP.

Backend: PHP 8.x + Eloquent
Frontend: Blade + Livewire
CSDL: MySQL (giữ nguyên)
Xác thực: Laravel Sanctum
Triển khai: VPS Linux
Multi-tenant: Tự xây dựng
Chi phí/năm: ~$250–600
6.95
Tổng điểm / 10

Phương án C: Giữ PHP

Giữ legacy, thêm REST API bọc ngoài.

Backend: PHP thuần + API
Frontend: jQuery (giữ nguyên)
CSDL: MySQL (giữ nguyên)
Xác thực: Session + JWT
Triển khai: Windows IIS
Multi-tenant: Không khả thi
Chi phí/năm: ~$50
3.95
Tổng điểm / 10

Chi Tiết Chấm Điểm

Tiêu chíTrọng sốLaravelNext.js+SBGiữ PHP
Tốc độ dev đơn lẻ + Claude25%794
Product hóa / multi-tenant20%692
Chất lượng giao diện15%793
Chi phí hạ tầng10%798
Thời gian đến MVP15%785
Khả năng bảo trì10%883
Rủi ro đường cong học5%759
TỔNG ĐIỂM100% 6.95 8.55 3.95
Kết luận: Chọn Next.js + Supabase + Vercel
Lý do: (1) Supabase RLS = multi-tenant sẵn — thêm nhà máy chỉ cần thêm row. (2) Claude Code rất mạnh React/TS — dev đơn lẻ ship nhanh. (3) Free tier đủ cho MVP. (4) Đã có Supabase + Vercel MCP tools. (5) shadcn/ui = giao diện đẹp, responsive cho tablet.
5

Kiến Trúc Đề Xuất

THIẾT BỊ TRUY CẬP ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ Desktop │ │ Tablet │ │ Mobile │ │ Legacy │ │ Browser │ │ (Xưởng) │ │ (tương lai) │ │ PHP App │ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └──────────────┴──────────────┴──────────────┘ │ ┌───────────┴───────────┐ │ NEXT.JS (Vercel) │ │ │ │ /dashboard │ │ /customers │ │ /products │ │ /orders │ │ /production │ │ /quality │ │ /ink (PTM) │ │ /delivery │ │ /quotation (GĐ2) │ │ /inventory (GĐ3) │ │ /settings │ └───────────┬───────────┘ │ ┌───────────┴───────────┐ │ SUPABASE (Backend) │ │ │ │ PostgreSQL Database │ │ Xác thực + RBAC │ │ Row-Level Security │ │ Realtime │ │ Storage (file) │ │ Edge Functions │ └───────────────────────┘

Database Schema — 15 Bảng Chính

Tenant & Xác Thực
tenants (id, tên, slug, cài đặt)
users (id, tenant_id, email, vai trò)
roles (id, tenant_id, tên, quyền[])
Dữ Liệu Chủ
customers (id, mã, tên, liên hệ)
products (id, mã, chất liệu, kỹ thuật)
materials (id, mã, NCC, đơn giá)
Vòng Đời Đơn Hàng
orders (id, customer_id, PO, trạng thái)
order_items (id, product_id, SL, sizes{})
Sản Xuất & Chất Lượng
plans (id, order_item_id, line, ngày)
ink_formulas (id, product_id, màu)
ink_components (id, formula_id, KL)
qc_reports (id, order_item_id, loại)
delivery_notes (id, SL, mã QR)
settlements (id, ước tính, thực tế)
Multi-Tenant: Mỗi bảng có cột tenant_id. Supabase RLS đảm bảo nhà máy A không thấy dữ liệu nhà máy B. Thêm nhà máy mới = INSERT 1 row vào bảng tenants, không cần deploy server.
6

Lộ Trình Build & Deliverables

Tổng Quan 19 Tuần
GĐ0
2 tuần
GĐ1
4 tuần
GĐ2
6 tuần
GĐ3
4 tuần
GĐ4
3 tuần
Nền tảng
Xương sống
Ra giá được
Dữ liệu chảy
Ra quyết định
Giai đoạn 0 — Tuần 1–2
Nền Tảng
2 tuần · Chưa có giao diện cho người dùng cuối
  • Khởi tạo Supabase project + thiết kế DB schema (15 bảng chính + 20 bảng tra cứu)
  • Cài đặt RLS policies cho multi-tenant
  • Nhập dữ liệu mẫu từ nhà máy thật (NPL, code mực, nhân viên)
  • Khởi tạo Next.js project + triển khai lên Vercel
  • Luồng xác thực (đăng nhập/đăng xuất) + RBAC middleware
  • Khung giao diện (sidebar, thanh trên, responsive)
Bàn giao: App chạy trên Vercel, đăng nhập được, CSDL có dữ liệu
Giai đoạn 1 — Tuần 3–6
Xương Sống: Khách Hàng + Mã Hàng + Đơn Hàng
4 tuần · Bàn giao MVP
  • Tuần 3: Master Khách Hàng — CRUD + tìm kiếm + trang chi tiết
  • Tuần 4: Master Mã Hàng — CRUD + thông số (chất liệu, kỹ thuật, số màu)
  • Tuần 5: Quản Lý Đơn Hàng + chi tiết + phân chia size + luồng trạng thái
  • Tuần 6: Đơn hàng → tự tạo Kế Hoạch, import Excel, Dashboard v1 (pipeline)
Bàn giao: Tạo đơn hàng end-to-end, dashboard pipeline
Giai đoạn 2 — Tuần 7–12
Ra Giá Được: Cost Engine + Báo Giá
6 tuần
  • Tuần 7: Thiết lập tham số chi phí + Quản lý giá NPL
  • Tuần 8: Module Công Thức Mực (tái triển khai PTM 28 fields)
  • Tuần 9: Cost Engine tự động tính (mực + bảng + nhân công + hao hụt)
  • Tuần 10: Module tiếp nhận yêu cầu + upload file thiết kế
  • Tuần 11: Module báo giá + xuất PDF
  • Tuần 12: Báo giá → Đơn hàng tự động + lịch sử báo giá
Bàn giao: Nhận yêu cầu → tính chi phí → báo giá PDF → tạo đơn hàng
Giai đoạn 3 — Tuần 13–16
Dữ Liệu Chảy: Kết Nối + Tồn Kho
4 tuần
  • Tuần 13: Module sản xuất (KCS, năng suất) + quét QR
  • Tuần 14: Tồn kho NPL + Đối soát mực (Pha − Cấp − Thải = Tồn)
  • Tuần 15: Theo dõi giao hàng + tự đóng đơn khi giao đủ
  • Tuần 16: Quyết toán + Phân tích margin (Báo giá vs Thực tế)
Bàn giao: Tồn kho real-time, margin thật từng đơn hàng
Giai đoạn 4 — Tuần 17–19
Ra Quyết Định: Dashboard + Thông Minh
3 tuần
  • Tuần 17: Dashboard Kinh Doanh (pipeline, doanh thu, top KH, tỷ lệ thắng)
  • Tuần 18: Dashboard Chi Phí (thực tế vs ngân sách, chi phí hao phí) + Cảnh báo
  • Tuần 19: Module báo cáo + Tích hợp hóa đơn điện tử (cơ bản)
Bàn giao: 3 dashboard + cảnh báo + báo cáo PDF/Excel
7

Phạm Vi MVP

MVP = Giai đoạn 0 + Giai đoạn 1 = 6 tuần
Giải quyết vấn đề gốc rễ: dữ liệu phân mảnh. Khi mỗi đơn hàng có 1 ID duy nhất, mọi module sau chỉ cần tham chiếu ID đó.
MVP Làm Được
  • Tạo và quản lý khách hàng
  • Tạo và quản lý mã hàng (product master)
  • Tạo đơn hàng với PO, SLHD, phân chia size
  • Theo dõi trạng thái đơn hàng (Nháp → Hoàn thành)
  • Dashboard pipeline cơ bản
  • Import đơn hàng từ Excel
  • Responsive trên tablet (dùng tại xưởng)
MVP Chưa Có (Giai đoạn 2+)
  • Báo giá & Cost engine
  • Công thức mực chi tiết
  • Tồn kho NPL & Mực
  • Dashboard kinh doanh
  • Phân tích margin
  • Tích hợp hóa đơn điện tử

Ngày Đầu Tiên — 5 Hành Động Cụ Thể

#Hành độngThời gianKết quả
1Tạo Supabase project10 phútURL project + API keys
2Khởi tạo Next.js + triển khai Vercel15 phútURL truy cập được (trang trắng)
3Thiết kế DB schema (SQL migrations)2–3 giờ15 bảng chính + 20 bảng tra cứu
4Nhập dữ liệu mẫu từ nhà máy thật1–2 giờNPL, code mực, NV có dữ liệu
5Xác thực + khung giao diện3–4 giờĐăng nhập hoạt động, sidebar điều hướng
Ngày đầu tiên: Có app chạy trên Vercel, đăng nhập được, cơ sở dữ liệu có dữ liệu thật từ nhà máy.
8

Rủi Ro & Giải Pháp

Rủi roXác suấtẢnh hưởngGiải pháp
Đường cong học TypeScript Cao TB Claude Code viết TS rất tốt. Học qua thực hành.
Nhà máy mất internet TB Cao PWA + bộ nhớ cache ngoại tuyến (Giai đoạn 2+). MVP cần internet.
Di chuyển dữ liệu cũ Cao TB Xây công cụ import Excel. Di chuyển từng nhà máy, không big-bang.
Người dùng không quen giao diện mới TB TB Giữ quy trình quen thuộc, chỉ đổi giao diện. Đào tạo 1–2 buổi.
Supabase free tier không đủ Thấp Thấp Free: 500MB DB, 1GB storage. Đủ cho 2–3 nhà máy.
Phình scope tính năng Cao Cao Giữ ranh giới giai đoạn nghiêm ngặt. Ship MVP trước, lặp lại sau.
9

Phối Hợp In-house IT & Migration

Chiến lược: Build hoàn toàn mới trên Next.js + Supabase. Legacy PHP tiếp tục chạy. Chuyển dần từng module khi hệ thống mới ổn định. Không bao giờ tắt legacy đột ngột.

Lộ trình chuyển đổi song song

Tháng 1–2
Legacy PHP 100%
Tháng 3–4
Legacy 85%
New
Tháng 5–6
Legacy 65%
New 35%
Tháng 7+
Legacy 50%
New 50%

Phân công: BEUP vs Inkava IT

🔨 BEUP (Build mới)
  • Thiết kế DB Supabase (PostgreSQL)
  • Build toàn bộ modules mới (Next.js)
  • UI + API + CI/CD + deploy Vercel
  • Viết data migration scripts
  • Training cho end users
🔧 Inkava IT (Giữ legacy + hỗ trợ)
  • Export MySQL schema + data CSV
  • Giải thích business rules phức tạp
  • Maintain PHP code hiện tại
  • Validate data sau migration
  • Test legacy không bị ảnh hưởng
IT team chỉ cần 2–3 tasks nhỏ per phase. Không quá tải, không cần học stack mới. Họ giữ PHP, BEUP build phần mới hoàn toàn.

Data Migration: MySQL → Supabase

Bảng MySQL cũ Bảng Supabase mới
danh_sach_nplCSVmaterials
danh_sach_code_mucCSVink_codes
nhan_vienCSVusers
ke_hoach_khach_hangCSVorders + order_items
cong_thuc_mucCSVink_formulas + ink_components
phieu_giao_nhanCSVdelivery_notes

Quy trình: IT export CSV → BEUP transform script → import staging → IT validate → import production. Legacy vẫn chạy song song suốt quá trình.

Giao tiếp

💬
Daily 15'
Standup Zalo
📺
Weekly 1h
Demo + plan tuần sau
👥
Bi-weekly
End-user thử module mới

INKAVA Build Proposal v1.0 · 31/03/2026 · Bản nháp

Nghiên cứu: Mô hình dữ liệu MIS ngành in · Phân tích nghiệp vụ (24 modules) · Gap Analysis · Chiến lược xây dựng

Tài liệu liên quan

→ Xem Bản Đồ Toàn Cảnh Nhà Máy INKAVA