# CATATAN RILIS 3.0 — 2 Oktober 2026

Status tiap butir dari sheet "PERBAIKAN UNTUK PROFESIONAL 1 OKT 2026 MALAM" (semua disetujui Antok).
DB = sudah aktif di Supabase. WEB = ada di file rilis ini (aktif setelah diunggah ke GitHub). MESIN = ada di MesinDrive.gs (aktif setelah ditempel & deploy).

| No | Butir | Status | Di mana |
|----|-------|--------|---------|
| 1 | Icon, favicon, background | SELESAI | WEB: favicon.png, apple-touch-icon.png, logo.svg (kepala maskot), bg-latar.svg sebagai watermark 6% & latar login; semua file lokal, ≤40 KB |
| 2 | Tema animasi hemat | SELESAI | WEB: app3.css — fade halaman 180 ms, hover tombol, kedip ikon alert; prefers-reduced-motion dihormati; tanpa library |
| 3 | Akses Drive hanya ANTOK | SELESAI | WEB: tombol/link Drive dikunci kunci TBL:drive.buka (bawaan hanya ANTOK); download lewat Mesin Drive dengan pemeriksaan folder |
| 4 | Tampilan sama + pesan tolak | SELESAI | WEB: semua menu/tombol tampil; yang tidak berhak 🔒 dan pesan "USER NAME ANDA TIDAK PUNYA KEWENANGAN INI"; pojok kanan atas nama rekanan · peran |
| 5 | Matriks hak akses, link folder, cek sinkron | SELESAI | DB: hak_akses, pengaturan_sistem · WEB: Admin → Hak Akses, Link Folder · MESIN: cek_sinkron |
| 6 | Kartu/analisa per jenis user | SELESAI | WEB: kunci KARTU:* di matriks hak akses; kartu tak dicentang tidak dirender & datanya tidak diambil |
| 7 | Upload latar belakang + nama | SELESAI | WEB: antrian unggah di latar + indikator pojok; link terisi otomatis · MESIN: upload |
| 8 | Rename huruf/angka/spasi | SELESAI | WEB: namaInaproc() · MESIN: namaInaproc_() dipakai upload/generate/zip; Admin → Uji Penamaan |
| 9 | Halaman Draft Penawaran | SELESAI | WEB: hal-draft.js · MESIN: tarik_data, generate, generate_zip |
| 10 | Standar nama REKANAN KONTEKS TANGGAL (1 spasi) | SELESAI | WEB+MESIN: namaFile() / namaInaproc_(); pratinjau nama di dialog |
| 11 | Tombol Buka Folder & Download | SELESAI | WEB: Draft, Template → Antrian Generate, Resume, Company Profile · MESIN: unduh |
| 12 | Excavator realistik, lengan bergerak, diam | SELESAI | WEB: SVG inline di app3.js (EXCAVATOR_SVG) + animasi CSS boom/stick/bucket |
| 13 | Hapus "Web Layanan Konstruksi" | SELESAI | WEB: diganti "TRANSPARAN, KOMPAK & SETARA" |
| 14 | SIGN UP | SELESAI | WEB |
| 15 | Form pendaftaran singkat + terima/tolak | SELESAI | DB: kolom kota, peran_diminta, nama_perusahaan; setujui_pendaftaran (ADMIN/REKANAN), tolak_pendaftaran · WEB: form & Admin → Pendaftaran + Kirim WA |
| 16 | Tombol Kirim WA di semua nomor HP | SELESAI | WEB: tipe field 'wa' + tombolWA() di tabel rekanan, pendaftaran, profil, pemberi tugas |
| 17 | Pemberitahuan + ikon ⚠ merah | SELESAI | DB: tabel notifikasi + trigger status paket & perubahan data + realtime · WEB: panel, Kirim Pesan (ANTOK) |
| 18 | Pintas KEUANGAN di Beranda | SELESAI | WEB: hal-beranda.js (paket belum selesai administrasi) |
| 19 | Pintas LAPORAN HARIAN di Beranda | SELESAI | WEB |
| 20 | Laporan harian: foto kamera, pilih paket, progres kemarin, status target | SELESAI | DB: v_laporan_harian, trigger laporan→paket · WEB: laporanDialog(); status tampil di Beranda & Proyek untuk semua user |
| 21 | Grafik % kelengkapan data | SELESAI | DB: kelengkapan_aturan, kelengkapan_rekanan(), kelengkapan_semua() · WEB: grafik SVG di Beranda, Data Profil, Analisa |
| 22 | Penamaan file | SELESAI | = No 8 |
| 23 | Resume % + Periksa Data Kosong | SELESAI | WEB: hal-profil.js (isi langsung untuk Profil Dasar, lompat tab untuk grup lain) |
| 24 | Grafik semua rekanan + Kirim WA kekurangan | SELESAI | WEB: Analisa → Kelengkapan Data (pesan WA otomatis berisi daftar kekurangan) |
| 25 | Generate COMPANY PROFILE PDF | SELESAI | MESIN: company_profile (6 model sampul, lampiran PDF/gambar digabung pdf-lib, berjalan di latar; hasil di HASIL ANALISA) · WEB: Data Profil → Company Profile |
| 26 | Tambah masal penawaran .xlsx | SELESAI | WEB: template .xlsx dibuat & dibaca di browser (tanpa file sampah) · DB: tambah_paket_masal() |
| 27 | Status Hasil | SELESAI | WEB: statusHasilDialog() + Jadikan Kontrak |
| 28 | Status Kalah | SELESAI | WEB: dalam dialog Status Hasil (+ pemenang ke tabel kompetitor) |
| 29 | Label PPK / Pokja / PP / Konsumen | SELESAI | WEB: label form · MESIN: tombol PPK_POKJA_PP_KONSUMEN + alias PEJABAT_PENGADAAN |
| 30 | Detail Draft Penawaran | SELESAI | = No 9 (Tarik Data → Perbarui → centang template → Tambah Template → Generate ZIP; rename sebelum zip) |
| 31 | Kolom proyek berjalan + keuangan otomatis | SELESAI | DB: kolom tanggal selesai fisik/administrasi; v_rekap_paket menghitung tempo, terima bersih, pengeluaran fisik/adm, laba ditahan, laba bersih, %, bagi hasil · WEB: tab Progres & Keuangan |
| 32 | Generate → Resume Paket + grafik | SELESAI | WEB: kurva S & kas per bulan (SVG → PNG) · MESIN: resume_paket (PDF) |
| 33 | Addendum | SELESAI | DB: tabel + trigger nilai/masa kontrak · WEB: Proyek → Addendum |
| 34 | CCO | SELESAI | DB: tabel · WEB: validasi tidak mengubah nilai kontrak |
| 35 | Kontrak Tambahan | SELESAI | DB: tabel + akumulasi otomatis · WEB |
| 36 | Analisa per volume, kecepatan, tempo, laba | SELESAI | DB: v_analisa_paket · WEB: Analisa → Per Paket (+ grafik per bidang) |
| 37 | Kelengkapan administrasi + verifikasi | SELESAI | DB: aturan_administrasi, adm_kurang(), kolom verifikasi · WEB: Analisa → Administrasi, Proyek → Verifikasi Adm, kartu Beranda |
| A | Arsitektur tetap, dokumen konsep diperbarui | SELESAI | Sheet KONSEP DAN PETUNJUK → INSTRUKSI UMUM diperbarui |
| B | Kecepatan | SELESAI SEBAGIAN | DB: index & policy · WEB: kode dipecah per halaman (lazy), grafik tanpa library. supabase-js tetap dari CDN (vendoring diblokir dari sini); cache tetap 5 menit agar pembaruan tidak tersangkut cache |
| C | Keamanan | SELESAI | DB: search_path, policy; RPC sensitif tetap memeriksa peran ANTOK di dalam fungsi |
| D | Sinkron data / cadangan Sheet | SELESAI | MESIN: ekspor_sheet → "CADANGAN ANTOK GROUP" di folder PERBAIKAN (satu arah). Pemindahan sheet lama ke arsip dilakukan terpisah |
| E | UX: pilih rekanan di Beranda, cari/urut tabel, indikator simpan, menu ⋮ di HP, draft offline | SELESAI SEBAGIAN | Semua kecuali draft offline (localStorage) — ditunda agar tidak ada dua sumber data |
| F | Urutan kerja | SELESAI | Semua tahap dikerjakan sekaligus |

Catatan teknis:
- Nama file hasil upload diberi jam (HHMMSS) di belakang tanggal agar tidak saling timpa; tetap hanya huruf/angka/spasi.
- Kode web baru memakai nama file `app3.js` / `app3.css`; file lama `app.js`/`app.css` tetap di repo untuk kembali cepat (unggah `LAMA/index.html`).
- Peran REKANAN tidak bisa mengunggah template (kebijakan database); ANTOK/ADMIN bisa.
