Tính toán & Đề xuất

Nhập liệu → app tự đề xuất 3 phương án → mô phỏng → báo giá sơ bộ
—

Nhập thông tin dự án

1 Dữ liệu điện của khách hàng
Công suất phụ tải (kW)
Tiền điện trung bình / tháng (đ, chưa VAT)
Sản lượng điện / tháng (kWh)
Sản lượng / tháng theo hoá đơn 3 giá (kWh)
Bình thường
Cao điểm
Thấp điểm
2 Địa điểm · mô hình dùng điện · giá điện
Tỉnh / khu vực (sản lượng Solar theo Global Solar Atlas)
Mô hình sử dụng điện
Lịch làm việc (ngày nghỉ chỉ còn tải nền)
Ngày nghỉ
Lễ, Tết (ngày/năm)
Tải ngày nghỉ (%)
Biểu giá điện EVN
3 Cách tính giá đầu tư
Giá thực tếtheo BOQ thiết bị
Tổng vốnnhập 1 con số
Giá TB từng loạiđ/kWp · đ/kWh
Tổng vốn đầu tư (đ) — để trống = tự theo giá thực tế
Solar (đ/kWp)
BESS (đ/kWh)
4 Hình thức đầu tư · tiêu chí đề xuất
Tiêu chí ⭐
Hoàn vốn mục tiêu (năm)
⚙️ Tuỳ chọn nâng cao
Giới hạn mái (kWp, 0 = không)
Solar bị cắt tối đa (%)
PA1 Chỉ Solar: hệ số × tải max ban ngày (0 = không giới hạn)
🔋 PA2 & PA3 chỉ nạp pin bằng Solar dư (không sạc lưới giờ thấp điểm).
☀️🔋
Nhập thông tin bên trái rồi bấm “Tính toán”
App sẽ tự đề xuất 3 phương án (Chỉ Solar · Solar + BESS thu hồi vốn nhanh · Solar + BESS 5h), chọn công suất tối ưu, mô phỏng vận hành và lập báo giá sơ bộ.

Hoá đơn tiền điện 12 tháng — trước & sau dự án

Nguồn tiết kiệm theo tháng

Cân bằng năng lượng cả năm

Dòng tiền đời dự án

So sánh 3 phương án

Độ nhạy hoàn vốn

Tóm tắt & giả định

Nhập liệu — tự động lưu khi thay đổi Chưa có thay đổi

Loại hình & khu vực

CĐ / BT / TĐ = Cao điểm / Bình thường / Thấp điểm (đ/kWh).

Khung giờ EVN TOU (biểu giá 3 giá — đã cập nhật)

TĐ0h–6h
Bình thường6h–17h30
⚡ CĐ17h30–22h30
BT
⚡ CAO ĐIỂM
17h30–22h30
5 giờ · Thứ 2–7
BÌNH THƯỜNG
6h–17h30
+ 22h30–24h · 13h
THẤP ĐIỂM
0h–6h
6 giờ · Mọi ngày
☀️ Solar phát 6h–17h30 → toàn bộ giờ Bình thường (không trùng CĐ). BESS sạc 0h–6h (TĐ), xả 17h30–22h30 (CĐ) — 1 chu kỳ/ngày sạch.

Nhập dữ liệu phụ tải (chọn cách nhập phù hợp)

Công suất phụ tải dùng trực tiếp để tính BESS & mọi tab.
—

Tự tính quy mô Solar & BESS (mô phỏng vận hành 30 phút · 5 kiểu ngày nắng/mây · hiệu chỉnh theo số liệu vận hành thật LT Power Station 1 & 2)

Mỗi 30 phút: Solar cấp TẢI trước → phần dư mới nạp BESS → còn dư bị cắt (Zero Export, 0đ). BESS xả giờ CĐ 17h30–22h30. Tiết kiệm = hoá đơn trước − hoá đơn sau. Bỏ tích = cách tính cũ.
Quét hàng trăm tổ hợp Solar kWp × số bộ BESS, mỗi tổ hợp chạy mô phỏng + dòng tiền (tham số tab Hiệu quả tài chính, đơn giá BOQ thực tế).
0 = không giới hạn. Tham khảo ~5,5 m² mái/kWp.
Chỉ nạp phần Solar dư trong ngày KHÔNG bù đủ cho giờ CĐ. Có lãi vì giá TĐ ÷ hiệu suất (≈1.376 đ/kWh) < giá CĐ.
Chọn ở đây hoặc ở tab Công suất lắp đặt Dự kiến. Vốn, doanh thu, hoàn vốn, báo giá đều chạy theo phương án đã chọn (giá thực tế BOQ).
Hoàn vốn mục tiêunăm
Áp cho 3 phương án ở trang Tính toán & Đề xuất và tab Công suất. PA2 tự chọn số tủ BESS + kWp Solar để tiết kiệm nhiều nhất mà vẫn hoàn vốn trong mục tiêu.
Mặc định 3h: số bộ BESS ≥ tải CĐ × N giờ ÷ (kWh/bộ × DOD × η_xả) và Solar (+ sạc bù lưới nếu bật) phải nạp đủ lượng này mỗi ngày.
Không đề xuất Solar lớn tới mức phần phát dư bị Zero Export cắt quá ngưỡng này. 10% ≈ thực tế LT Station 2 (594 kWp, tải ~255 kW: 9,3%). 0 = không giới hạn.
Áp cho phương án Chỉ Solar (PA1). Mặc định 1,3 = quy tắc nội bộ (tải max 8h–16h × 1,3 ≈ DC/AC 1,3, gần như không bị cắt). Trong giới hạn này app vẫn chọn mức lợi nhuận 15 năm cao nhất. 0 = không giới hạn (chỉ theo NPV + trần cắt).
Để trống = theo công thức cũ. VD kiểm tra phương án 800 kWp + 6 bộ.

Thông số kỹ thuật & vận hành (điều chỉnh theo thực tế dự án)

EVN mới: CĐ 17h30–22h30 = 5h. BESS chỉ xả trong khung này.
Trần cho phép so với nhu cầu thực (1.4 = +40%), tính trên dung lượng xả thực (×DOD×η_xả). BESS luôn chọn đủ số bộ phủ nhu cầu, hướng tới xả gần hết giờ CĐ, không vượt trần trừ khi mức tối thiểu đủ tải đã vượt.
Solar tính theo PSH của tỉnh đang chọn; ô này chỉ dùng khi tỉnh chưa có PVOUT.
Đang tự chọn theo nhu cầu xả giờ cao điểm: ≤12 kWh → 5,12 kWh/bộ · ≤60 kWh → 16,1 kWh/bộ · ≤200 kWh → 30 kWh/bộ · lớn hơn & Solar ≥100 kWp → tủ 261 kWh/bộ. Bỏ tích ô trên để tự chọn tay.
Chỉ Solar: Solar (kWp) = Phụ tải × giờ ÷ PSH tỉnh. Mặc định 6h (≈8h00–14h00). Thay đổi theo ca vận hành.
Khi bật: solar phát dư hơn tải tức thì bị cúp/throttle, năng lượng đó mất. Hệ số tự tiêu thực tế (SCR) ≈ 88% được áp dụng vào tính tiết kiệm. Khuyến nghị: thêm BESS 250–500 kWh để hấp thụ phần dư, tăng SCR lên 98–99%.
Ngày nghỉ: tải chỉ còn phần nền (ô bên cạnh) → Solar dư bị cắt, pin ít việc. App tự tính lại.
Ngày lễ không tính tiết kiệm. Số ngày T2–T7 / CN bên dưới tự tính.
= 313 ngày T2–T7 − ngày lễ rơi vào T2–T7. Gồm cả Thứ 7 nghỉ (nếu chọn nghỉ T7 + CN).
= 52 CN − ngày lễ rơi vào CN. CN không có giờ CĐ → BESS xả ở giá Bình thường.
Sạc từ lưới 0h–6h (TĐ, 6h). PCS giới hạn 6h×kW.
RTE = ηchg × ηdisch = —

Báo giá sơ bộ — chọn cách định giá (dùng tính Vốn đầu tư & Hiệu quả tài chính)

✓
💰
Tổng vốn đầu tư
Nhập tổng vốn dự kiến (VNĐ)
đồng (toàn hệ thống) · ↺ tự động
—
Tổng vốn đầu tư
✓
⚡
TB Solar + TB BESS
đ/kWp Solar
đ/kWh BESS
☀️ Solar: —
🔋 BESS: —
—
Tổng vốn đầu tư
✓
🏷️
Giá thực tế
Từ tab Giá & Thiết bị
Solar: —
BESS: —
—
Tổng vốn đầu tư
Loại hình: — Tỉnh: — (PSH — kWh/kWp/ngày) Biểu giá: — Tải đại diện: — kW

Phương án 1 — Chỉ Điện mặt trời

Sản lượng & doanh thu theo tháng (dự tính)
Mô phỏng sản lượng & doanh thu 20 năm (suy hao pin)
📌 Số liệu tính từ dữ liệu ở tab "Nhập liệu" hiện tại, dùng đúng công thức Solar/BESS của tab "Quy mô hệ thống" — ép tính riêng cho từng phương án để so sánh, không làm thay đổi lựa chọn hiện tại của bạn ở các tab khác.
Phụ tải: — kW Tỉnh: — Hãng BESS: — RTE: —
✓
🔆 Solar + BESS
Solar cấp cho tải trước, phần dư nạp BESS (0đ) để xả vào giờ cao điểm. Vốn cao nhất, doanh thu/lợi nhuận cao nhất.
← chọn từ Nhập liệu

Kết quả quy mô

Dung lượng BESS theo thiết kế0 kWh
Số bộ BESS (làm tròn lên)0
Công suất PCS / xả (= phụ tải)0 kW
Công suất Solar lắp đặt0 kWp
Dung lượng xả thực/ngày (×DOD×Hxả)0 kWh
Dung lượng cần sạc/ngày0 kWh
Diện tích mái cần cho Solar (≈)0 m²

Vận hành & doanh thu/ngày

Diễn giải công thức

⬛ Thấp điểm 0h–6h ⬜ Bình thường 6h–17h30 & 22h30–24h 🟥 Cao điểm 17h30–22h30 Phương án: — 📊 Phụ tải: —
☀️ Solar phát/ngày
0kWh
—
⚡ Điện dư Solar
0kWh
Sạc vào BESS
🔋 BESS xả/ngày
0kWh
—
🏭 Phụ tải/ngày
0kWh
—

Biểu đồ phụ tải & nguồn cấp điện theo giờ

🟡 Solar phát · 🟢 BESS xả · 🔵 Điện mua lưới · ─── Tổng phụ tải. Nền đỏ nhạt = giờ cao điểm (CĐ 17h30–22h30). SOC pin đọc trục phải.

Cân bằng năng lượng theo khung giờ EVN

Lịch vận hành BESS trong ngày

Chi phí BESS
0
—
Chi phí Solar
0
—
Lắp đặt & đấu nối
0
Vật tư, đấu nối, khác
Tổng vốn đầu tư
0
Trọn gói

Bóc tách chi phí

Cơ cấu vốn

Hình thức đầu tư

Tham số tài chính

% giảm giá điện Cty bán cho NM. Chỉ tác động khi chọn mô hình BOT (không ảnh hưởng EPC/ESCO/Thuê).
Dùng tính NPV & "Hoàn vốn chiết khấu".
Dùng chung cho tab Hiệu quả tài chính & tab Công suất lắp đặt.
Tỉ lệ (0.005 = 0,5%/năm). Áp cho phần doanh thu do Solar.
Tỉ lệ (0.03 = 3%/năm). Tự lấy theo hãng nếu hãng có khai báo (tab Giá & Thiết bị).
Đời dự án > tuổi thọ BESS: nhập % (vd 0.6 = 60% vốn pin) để tính chi phí thay pin; để 0 = chỉ cảnh báo.

Kết quả hiệu quả – EPC

Bảng dòng tiền theo năm

So sánh 4 hình thức đầu tư

Lưu ý & rủi ro

—
Thông tin báo giá
Tab Cấu hình giá & thiết bị — chỉ tài khoản Admin được chỉnh sửa.
Các tab khác mọi người dùng chung bình thường. Đăng nhập tài khoản Admin để mở khóa nhập/sửa giá.
Tab cập nhật giá & thiết bị. Mọi thay đổi tại đây tự động áp vào toàn bộ tính toán. Bấm "Lưu cấu hình" để ghi nhớ trên trình duyệt này.

Sao lưu / Khôi phục Giá & Thiết bị — dùng trước & sau mỗi lần deploy bản mới

File JSON lưu toàn bộ giá & thiết bị (BESS, tấm pin, biểu giá EVN, tỉnh thành, gói Solar…) — đầy đủ hơn CSV ở dưới. Quy trình đề xuất: Bấm "Sao lưu" trước khi đưa code mới lên server → sau khi deploy xong, mở lại trang → bấm "Khôi phục" và chọn đúng file vừa tải → giá cũ được nạp lại ngay, không cần nhập tay. Cấu hình cũng tự lưu trên trình duyệt này (localStorage) và có thể đồng bộ đám mây ở tab Cài đặt/Supabase để không phụ thuộc vào việc nhớ bấm sao lưu.

Lịch sử phiên bản bảng giá — chỉ Admin · mỗi lần đồng bộ lên đám mây lưu 1 phiên bản (gom các lần sửa trong 5 phút)

Nhập giá từ file — cập nhật toàn bộ báo giá tự động

Quy trình: Tải file mẫu → sửa cột "Đơn giá" → Nhập giá từ file mẫu. Hoặc tải thẳng bảng giá Sigen để cập nhật catalog inverter. Giá mới tự áp vào báo giá Solar/BESS & hiệu quả tài chính.

Gói Solar hòa lưới — báo giá & đơn giá đ/kWp — chọn model tấm pin, sửa/thêm/xóa; tự tính TB đ/kWp áp vào Báo giá & Hiệu quả tài chính

Bảng giá BESS theo hãng (Topband · Sigenergy · Khác) — mỗi hãng 1 bộ giá riêng; chọn hãng nào dùng giá đó

Hiển thị thêm; vốn dùng tính hiệu quả là giá trước VAT.
v1.1: phí lắp đặt ở chế độ giá gói/tổng vốn = đúng các dòng lắp đặt/nhân công/vận chuyển của hãng đang chọn trong bảng dưới (Cố định + Theo số bộ), không nhân theo kWh nữa. Ô này là mức sàn cho hệ rất nhỏ.
Đơn giá TB đ/kWh theo quy mô ở bảng dưới tính trực tiếp từ chi tiết vật tư của từng hãng (cột "Cách tính": Theo số bộ / Cố định) — không dùng hệ số riêng nữa, nên luôn khớp 100% với báo giá thật.
Giá BESS hãng đang chọn theo dung lượng (mỗi 250 kWh) — Pin tuyến tính · Phụ kiện × hệ số tăng dần → đơn giá TB giảm khi quy mô lớn. Đơn giá pin: —

Hãng BESS – thông số & dung lượng module (sửa trực tiếp)

Biểu giá điện EVN (đ/kWh) (sửa trực tiếp)

Tỉnh thành & giờ nắng (kWh/kWp/năm)

📄 Tính toán & Báo giá Điện Mặt Trời + Lưu Trữ (Hộ gia đình & SME)
Công cụ đầy đủ: Tính toán 1 pha (hộ gia đình — biểu giá 6 bậc) · Tính toán 3 pha — 3 giá (Kinh doanh / Sản xuất — cao điểm, bình thường, thấp điểm) · tự sinh cấu hình báo giá đúng công suất · nhập theo số lượng tấm pin · chỉ Điện mặt trời (không BESS) · tính vay ngân hàng · bảng giá & lợi nhuận theo hãng · xuất Excel báo giá. Công cụ chạy độc lập trong khung bên dưới, tự lưu dữ liệu trên trình duyệt (localStorage), tách biệt với công cụ C&I ở các tab khác.
Lưu báo giá HGĐ/SME lên đám mây Danh sách dự án ›
Lưu bảng báo giá Tự chọn / Nhập tay, thông tin khách hàng và bảng giá gốc đang dùng. Mở lại ở tab Cài đặt/Supabase → danh sách dự án (loại HGĐ/SME).
Cài đặt / Supabase — chỉ tài khoản Admin được thay đổi.
Kết nối/đổi Supabase, bật đồng bộ, xóa dự án trên cloud — cần đăng nhập Admin.

Kết nối Supabase — lưu / tải dự án trên đám mây

Chưa kết nối.

Đồng bộ tự động cấu hình

Cấu hình tự lưu cả ở trình duyệt (offline). Bật đồng bộ Supabase để giữ thông số xuyên thiết bị & sau khi deploy lại.

Lưu / Tải dự án — mọi người dùng lưu & mở được; xóa / đổi trạng thái: chỉ Admin

Lưu toàn bộ thông số + giá thiết bị hiện tại (tab Nhập liệu C&I). Khách hàng, tỉnh, chế độ định giá tự lấy từ form; trạng thái mặc định "Nháp". Báo giá HGĐ/SME lưu bằng nút ở đầu tab "Tính toán & Báo giá HGĐ/SME" — dùng chung danh sách này. "Mở" sẽ nạp lại dự án.
Kết nối Supabase để xem danh sách dự án.

Ghi chú thay đổi phiên bản

v1.15 — 28/10/2026
• Xuất PDF từng phương án ở tab Tổng quan: thanh "Xuất PDF theo phương án" PA1 · PA2 · PA3 (áp dụng phương án đó cho toàn app rồi in báo cáo chỉ của phương án đó, không kèm bảng so sánh) · nút "In bản so sánh 3 PA" giữ cách in cũ · nút 🖨 PDF dưới mỗi cột bảng so sánh · trang Tính toán có nút "Xuất PDF phương án đã chọn". Tên file gợi ý theo phương án + khách hàng.

v1.14 — 28/10/2026
• Phương án Chỉ Solar (C&I): không còn tự chuyển sang Solar + BESS khi nhập phụ tải + Giờ hành chính với cách tính giá "TB Solar+BESS" / "Tổng vốn" (tab Nhập liệu và thẻ PA1 trang Tính toán).
• Hệ số Solar / tải ban ngày (mặc định 1,3): PA1 Chỉ Solar không vượt hệ số × tải max 8h–16h, trong giới hạn này chọn lợi nhuận 15 năm cao nhất; 0 = không giới hạn (cách cũ). VD tải 250 kW → 325 kWp (trước 520 kWp).
• Trần "Solar bị cắt tối đa" đo trên ngày làm việc (trước: tính Thứ 7 nghỉ nhưng bỏ Chủ nhật → nghỉ T7+CN ra Solar quá nhỏ).

v1.13 — 30/09/2026
• Sửa tên cấp điện áp biểu giá EVN (QĐ 1279/QĐ-BCT): Sản xuất dưới 6 kV (SX1) · 6–22 kV (SX2) · 22–110 kV (SX3) · thêm ≥ 110 kV (SX4); Kinh doanh dưới 6 kV / 6–22 kV / ≥ 22 kV. Giá & mã không đổi → dự án đã lưu cho kết quả như cũ; trước đây tên SX1 ghi "110kV+" và SX3 ghi "<22kV" là NGƯỢC cấp.
• Nhập bảng giá CSV nhận cả tên biểu giá cũ; chọn loại hình có biểu giá chưa có (Trường học) không còn âm thầm dùng biểu giá Kinh doanh.
v1.12 — 30/09/2026
• Tab Tổng quan làm lại thành Báo cáo tổng quan dự án (phương án đang áp dụng): thông tin dự án · 8 chỉ số (kWp, kWh, vốn trước/sau VAT, tiết kiệm & % hoá đơn, hoàn vốn giản đơn / dòng tiền / chiết khấu, NPV·IRR, CO₂, Solar tự dùng) · hoá đơn 12 tháng trước/sau theo khung giờ · tiết kiệm Solar/BESS theo tháng · cân bằng năng lượng · dòng tiền có mốc hoàn vốn · so sánh 3 phương án (bấm Áp dụng) · độ nhạy ±10% · tóm tắt & giả định · In/PDF.
• Bỏ biểu đồ "So sánh phương án kỹ thuật" cũ (sai khi đã áp phương án, tính thêm 3 lần mỗi lần cập nhật).
v1.11 — 30/09/2026
• PA1 Chỉ Solar chọn quy mô theo lợi nhuận 15 năm (trong trần cắt Solar) — không còn bị thu nhỏ để kịp mốc hoàn vốn 3,5 năm.
• Lịch làm việc (trang Tính toán bước 2 & tab Nhập liệu): Làm cả tuần / Nghỉ Chủ nhật / Nghỉ Thứ 7 + CN, số ngày lễ Tết/năm và tải ngày nghỉ (%). Số ngày T2–T7 / CN tự tính (tích “Tự nhập số ngày” ở tab Nhập liệu để gõ tay, vd 308 / 47); ngày nghỉ chỉ còn tải nền → Solar dư bị cắt, pin ít việc; tiền điện / sản lượng / 3 khung giờ khách nhập vẫn khớp đúng.
• Sửa số ngày của loại hình (Khách sạn, Resort, Bệnh viện, Kho lạnh… trước đây khai 400–417 ngày/năm → doanh thu dư 10–14%).
• Tab Mô phỏng vận hành & biểu đồ 24h trang Tính toán vẽ ngày làm việc trung bình năm (12 tháng × 5 kiểu ngày) → số pin xả / Solar dư khớp đúng doanh thu (trước lệch, vd 677 so với 505 kWh).
v1.10 — 30/09/2026
• Mô phỏng 12 tháng: mỗi tháng dùng sản lượng nắng riêng của khu vực (Global Solar Atlas) và số ngày làm việc / Chủ nhật của tháng → bảng sản lượng & doanh thu theo tháng (Solar và BESS) thay đổi theo mùa, không còn chia đều. Doanh thu năm = tổng 12 tháng (miền Bắc: phần BESS giảm ~7–9% vì mùa đông Solar dư ít).
• Bảng BESS theo tháng tách rõ: Solar phát · Pin xả · Tiết kiệm từ BESS · Tổng tiết kiệm Solar + BESS.
v1.9 — 30/09/2026
• PA3 không sạc lưới giờ thấp điểm: pin chỉ nạp bằng Solar, phủ tối đa 5 giờ cao điểm trong trần cắt Solar; PA2 & PA3 đều không sạc lưới.
• Giá Solar theo BOQ Hải Nam GĐ2: bộ giá hộ gia đình chỉ dùng < 50 kWp; tủ PV-MDB / HSE / SCADA / thẩm định tăng dần từ 50 → 100 kWp; hạng mục trọn gói đủ 100% từ 1.000 kWp → đường giá mượt (~7,3–7,7 tr/kWp từ 50 kWp trở lên), hết bậc nhảy 6,3 → 7,9 tr/kWp ở mốc 100 kWp.
• Gói Solar hoà lưới ưu tiên biến tần PV (không dùng nhiều máy Hybrid 12 kW) → hết vọt giá ở 110–120 kWp.
v1.8 — 30/09/2026
• Đường tải được hiệu chỉnh khớp đúng số khách nhập: tiền điện/tháng, sản lượng/tháng, kWh từng khung giờ (trước lệch −3,5%…+19% tuỳ mô hình dùng điện).
• Cấp module pin chọn theo điện giờ cao điểm thật của đường tải (tải giờ hành chính không còn bị gán tủ 261 kWh quá lớn).
• PA2 = Solar dư nạp BESS: pin chỉ nạp bằng Solar dư (không sạc lưới), bắt buộc xả tối thiểu 2 giờ cao điểm; số tủ luôn ít hơn PA3 và cấp module chọn theo nhu cầu 2h → không còn trùng PA3.
• ⭐ Đề xuất (tiêu chí Thu hồi vốn nhanh) = so PA2 với PA3: phương án hoàn vốn nhanh hơn; chênh ≤ 0,1 năm thì chọn phương án vốn thấp hơn. PA1 để tham chiếu.
v1.7 — 30/09/2026
• PA3 (5h) tôn trọng trần cắt Solar: không còn phình Solar tới cắt 22–25% khi tắt sạc lưới; chưa đủ 5h thì thẻ cảnh báo & gợi ý bật sạc bù lưới.
• Solar dư không nạp nổi (giới hạn mái / không sạc lưới) → PA3 tự giảm số tủ về mức nạp được; thẻ nào pin không hiệu quả được đánh dấu ⚠ và loại khỏi ⭐.
• PA3 trùng PA2 được ghi rõ "= PA2". Phần diễn giải nêu đúng tiêu chí của từng phương án.
• Trang Tính toán chặn ô trống / 0 / số âm. Khung 3 pha: ⭐ chuyển sang phương án vừa tiết kiệm hơn vừa hoàn vốn nhanh hơn PA2. Khung HGĐ/SME cảnh báo khi hệ > 100 kWp.
v1.6 — 30/09/2026
• Tiêu chí đề xuất "Thu hồi vốn nhanh" (mặc định): ⭐ = phương án tiết kiệm nhiều nhất trong các phương án hoàn vốn ≤ mục tiêu (mặc định 3,5 năm); vẫn chọn được "Lợi nhuận 15 năm".
• PA2 = Solar + BESS thu hồi vốn nhanh: app tự chọn số tủ pin và công suất Solar theo lượng Solar dư, không buộc xả đủ giờ cao điểm (không vượt số tủ của PA3). Khi chọn giá TB từng loại, công suất được tối ưu theo đúng đơn giá nhập.
v1.5 — 30/09/2026
• Trang mới Tính toán & Đề xuất (mở mặc định): nhập tải / tiền điện / sản lượng / 3 khung giờ → chọn tỉnh, mô hình dùng điện, giá điện, cách tính giá (thực tế · tổng vốn · giá TB từng loại), hình thức đầu tư → app tự đề xuất 3 phương án, gắn ⭐ phương án tối ưu (NPV cao nhất) → mô phỏng vận hành 24h, hoá đơn trước/sau, dòng tiền → nút Tạo báo giá sơ bộ.
• Sửa: giá TB / tổng vốn không còn ép phương án Chỉ Solar thành Solar+BESS; pin sạc được tới công suất PCS của tủ (trước bị giới hạn bằng công suất tải); biểu đồ mô phỏng không còn cộng dồn đường lên cột.
v1.4 — 29/09/2026
• Mô phỏng vận hành 30 phút (C&I): Solar cấp tải trước → dư nạp BESS → còn dư bị cắt; BESS xả giờ CĐ 17h30–22h30; tuỳ chọn sạc bù lưới giờ thấp điểm. Tiết kiệm = hoá đơn trước − sau, tính trung bình 5 kiểu ngày nắng/mây (hiệu chỉnh theo số liệu vận hành thật LT Power Station).
• Tự tính công suất Solar & dung lượng BESS khi nhập phụ tải (quét hàng trăm tổ hợp theo NPV / hoàn vốn); BESS phủ tối thiểu 3h cao điểm; Solar bị cắt ≤ 10%; giới hạn theo diện tích mái.
• Tab Công suất lắp đặt Dự kiến: 3 phương án PA1 Chỉ Solar · PA2 Solar + BESS 3h · PA3 Solar + BESS 5h — chọn & áp dụng cho toàn app (vốn, doanh thu, hoàn vốn, báo giá).
• Bảng sản lượng Solar theo khu vực (63 khu vực, gồm tỉnh cũ đã sáp nhập) lấy từ Global Solar Atlas 2.0 (CC BY 4.0), quy về mái nhà xưởng; biểu đồ theo tháng đúng mùa từng vùng. Số admin đã tự sửa được giữ nguyên.
• Khung Tính toán HGĐ 1 pha / 3 pha: cập nhật cùng bảng sản lượng GSA; bỏ hệ số hiệu suất 80% (PVOUT GSA đã trừ tổn hao — trước đây tính tổn hao 2 lần).
v1.1 — 29/09/2026
• Phí lắp đặt BESS ở chế độ Giá gói / Tổng vốn tính theo đúng BOQ của hãng (phần cố định theo dự án + phần theo số bộ), không còn nhân tuyến tính theo kWh (trước: hệ 1.566 kWh bị cộng 2,32 tỷ). Thêm ô "Đơn giá gói BESS đã gồm lắp đặt". Cảnh báo khi Giá gói lệch Giá thực tế BOQ > 5%.
• Chuyển sang Giá thực tế không còn ghi đè đơn giá gói; thêm nút "Dùng đơn giá thực tế cho giá gói".
• Tách suy hao tấm pin Solar (mặc định 0,5%/năm) và BESS (3%/năm, hoặc theo hãng); tab Công suất và tab Hiệu quả tài chính dùng chung suy hao & đời dự án. Thêm tuổi thọ BESS + chi phí thay pin (tuỳ chọn) và cảnh báo khi đời dự án dài hơn tuổi thọ BESS. Ghi chú "Lưu ý & rủi ro" sinh theo tham số đang dùng.
• Gợi ý hệ số Solar sinh từ bảng tỉnh (PSH) và ghi rõ ô này chỉ là dự phòng.
• Báo giá sơ bộ (in/PDF + Excel mới) và Excel tab Công suất ghi rõ chế độ định giá, hình thức đầu tư, suy hao, WACC, đời dự án.
• Supabase: chỉ Admin ghi bảng giá / sửa / xóa dự án (kèm file SQL chính sách RLS); báo lỗi rõ khi bị từ chối. Hồ sơ dự án có người lập (bắt buộc), khách hàng, tỉnh, trạng thái, ngày gửi/duyệt, dự án gốc; tìm kiếm danh sách. Lịch sử phiên bản bảng giá (xem / khôi phục). Log sử dụng tối thiểu. Lưu báo giá HGĐ/SME lên đám mây.
v1.0 — bản phát hành đầu.

Hướng dẫn thiết lập Supabase

1. Tạo tài khoản & project miễn phí tại supabase.com.
2. Vào Project Settings → API: copy Project URL và anon public key, dán vào ô phía trên.
3. Vào SQL Editor chạy lần lượt (bản đầy đủ, có chú thích: 2 file đi kèm bản v1.1 — chạy supabase_policies_v1_1.sql trước, rồi supabase_schema_v1_1.sql):
-- Bảng dự án + cột hồ sơ v1.1
create table if not exists nvh_projects (id uuid default gen_random_uuid() primary key, name text not null, data jsonb, updated_at timestamptz default now());
alter table nvh_projects add column if not exists created_at timestamptz default now(),
  add column if not exists prepared_by text, add column if not exists customer text, add column if not exists province text,
  add column if not exists status text default 'nhap' check (status in ('nhap','da_gui','da_duyet','da_ky','huy')),
  add column if not exists sent_at timestamptz, add column if not exists approved_at timestamptz,
  add column if not exists price_mode text, add column if not exists project_type text default 'ci',
  add column if not exists source_project_id uuid;
-- Bảng cấu hình giá + lịch sử + log
create table if not exists nvh_config (key text primary key, data jsonb, updated_at timestamptz default now());
create table if not exists nvh_config_history (id bigint generated always as identity primary key, changed_at timestamptz not null default now(), changed_by_email text, data jsonb not null, note text);
create table if not exists nvh_usage_log (id bigint generated always as identity primary key, at timestamptz not null default now(), user_label text, action text not null, project_name text);
-- Hàm kiểm tra Admin (theo profiles.role của auth.uid())
create or replace function public.nvh_is_admin() returns boolean language sql stable security definer set search_path = public
  as $$ select exists(select 1 from public.profiles p where p.id = auth.uid() and p.role = 'admin') $$;
-- RLS: nvh_config ai cũng ĐỌC, chỉ Admin GHI · nvh_projects ai cũng ĐỌC + THÊM, chỉ Admin SỬA/XÓA
alter table nvh_config enable row level security;   drop policy if exists "cfg_all" on nvh_config;
create policy cfg_read on nvh_config for select using (true);
create policy cfg_admin_ins on nvh_config for insert with check (public.nvh_is_admin());
create policy cfg_admin_upd on nvh_config for update using (public.nvh_is_admin()) with check (public.nvh_is_admin());
create policy cfg_admin_del on nvh_config for delete using (public.nvh_is_admin());
alter table nvh_projects enable row level security; drop policy if exists "nvh_all" on nvh_projects;
create policy prj_read on nvh_projects for select using (true);
create policy prj_insert on nvh_projects for insert with check (true);
create policy prj_admin_upd on nvh_projects for update using (public.nvh_is_admin()) with check (public.nvh_is_admin());
create policy prj_admin_del on nvh_projects for delete using (public.nvh_is_admin());
-- profiles: chỉ đọc bản ghi của chính mình, không tự đổi role (không có policy insert/update/delete)
alter table public.profiles enable row level security;
create policy prof_self_read on public.profiles for select using (id = auth.uid());
-- (lịch sử: chỉ Admin đọc/ghi · log: ai cũng thêm, chỉ Admin đọc — xem file SQL đầy đủ)
4. Bấm Kết nối / Kiểm tra → báo xanh là OK, rồi Lưu/Tải dự án.
Bảo mật: trang chỉ dùng anon key (công khai) — quyền thật do RLS ở trên quyết định: người dùng thường chỉ đọc giá, lưu & mở dự án; ghi bảng giá, sửa/xóa dự án, xem lịch sử & log chỉ Admin (đăng nhập Supabase Auth, profiles.role = 'admin'). Khóa giao diện (setAdminLocked) chỉ là lớp UX. KHÔNG BAO GIỜ dán service_role key vào trang này.