๐Ÿ”’

Tidak Punya Akses

Butuh bantuan? Hubungi IT: [email protected]

Bantuan

Memuat...

Pusat Bantuan

Panduan menggunakan Esteh Group Portal.

Butuh Bantuan?

Jika ada kendala, silakan hubungi IT melalui:

Lupa Password?

Klik "Lupa password?" di halaman login, masukkan email Anda, lalu cek inbox untuk link reset (berlaku 24 jam).

Apa itu Esteh Internal Projects Portal?

Portal internal Esteh Group untuk berbagi project digital antar karyawan. Anda bisa upload dashboard, laporan interaktif, microsite, presentasi, atau materi visual apapun yang berbentuk web statis (HTML+CSS+JS) ke portal ini, lalu share ke rekan kerja per individu, per grup, atau per departemen.

Login pakai email & password akun Esteh Group Anda (tidak perlu Microsoft 365). Akun dibuat lewat undangan dari IT, dan email internal wajib pakai domain Esteh Group (estehindonesia.com, eskopiindonesia.com, padellife.id, estehkarunia.com, sambalsamuda.com). File project Anda aman โ€” hanya dilihat orang yang Anda beri akses.

Ada juga portal terpisah services.estehindonesia.com untuk mitra/vendor/tim outlet external โ€” mereka hanya bisa mengakses sistem (mis. tracking) yang di-share khusus ke mereka, dan tidak bisa masuk ke portal internal ini.

5 Role di Portal Ini

User

Karyawan biasa (internal). Bisa melihat project yang di-share atau visibility public/departemen. Tidak bisa membuat project sendiri.

Creator

Bisa membuat & mengelola project sendiri, upload file, share ke rekan kerja. Designer, marketing, finance analyst, dll.

Management

Seperti Creator (bisa buat & kelola project sendiri), plus bisa melihat & membuka semua project di sistem. Cocok untuk level manajemen yang perlu memantau. Tidak punya akses halaman admin.

Admin

Admin IT. Full akses โ€” kelola user, grup, departemen, pengumuman, audit log, template email, sistem.

External

Pihak luar (Tim Outlet / Mitra / Vendor). Hanya akses services.estehindonesia.com, dan hanya sistem yang di-share khusus ke mereka. Tidak bisa masuk portal internal.

Role Anda di-set oleh IT Department. Hubungi IT kalau perlu upgrade role.

Mengakses Project yang Di-share ke Anda

  1. Login portal dengan email & password akun Esteh Group Anda.
  2. Halaman Beranda menampilkan ringkasan project terbaru yang bisa Anda akses.
  3. Menu Semua Project untuk lihat semua project visibility public/departemen yang bisa Anda akses.
  4. Menu Di-share ke Saya untuk lihat project yang spesifik di-share oleh creator ke email Anda.
  5. Klik card project mana saja โ†’ browser membuka isi project di tab baru.

Tidak ada project muncul?

Kemungkinan belum ada creator yang share project ke email Anda, atau Anda belum dimasukkan ke departemen yang sesuai. Hubungi creator yang Anda cari, atau hubungi IT Department untuk konfirmasi role & departemen akun Anda.

Saya Mau Buat Project Sendiri

Role default karyawan baru adalah user (hanya view). Untuk bisa upload project, Anda perlu role creator. Hubungi IT Department dengan menyebutkan email Anda + alasan perlu role creator (contoh: "Saya marketing, perlu upload dashboard kampanye").

TERCEPAT

Terbitkan dari 1 File ZIP

Cara paling cepat menerbitkan project tanpa mengetik pengaturan dan tanpa akses server. Buka menu Creator Portal โ†’ Terbitkan dari ZIP, copy prompt yang tersedia ke Claude Anda, biarkan Claude membangun project + menulis manifest portal.json, lalu bungkus jadi 1 file ZIP dan upload. Portal otomatis: memeriksa keamanan file, memasang font & logo & warna hijau Esteh, membuat project, dan menampilkan ringkasan untuk Anda konfirmasi. Anda cukup klik Terbitkan.

  • Branding otomatis โ€” Anda tidak perlu menyertakan file font. Portal yang memasangnya saat publish.
  • Banyak project sekaligus โ€” kalau beberapa project saling terhubung (mis. dashboard admin + halaman tracking publik), masukkan semuanya dalam 1 ZIP. Claude Anda menjelaskan relasinya di portal.json, dan portal membuat Data Bridge + menghubungkan semua project OTOMATIS โ€” tanpa Anda setel manual di menu admin.
  • Data pendukung dari OneDrive โ€” kalau dashboard membaca data live (Excel/CSV), Claude Anda menuliskan OneDrive siapa + folder mana di manifest (drive_owner + drive_folder). Penting kalau Anda men-deploy atas nama orang lain (data ada di OneDrive PIC, bukan Anda). Beberapa project bisa menunjuk folder sama untuk saling membaca data.
  • Penarik data terjadwal โ€” kalau project perlu menarik data eksternal otomatis pada jadwal (mis. analisa lokasi/sales dari API vendor), Claude Anda mendeklarasikan scheduled_jobs di manifest (URL, jadwal, output ke snapshot/Bridge). Portal yang menjalankannya di server (project statis tidak bisa cron sendiri). Di layar konfirmasi ada tombol Tes Koneksi untuk memastikan sumber data berhasil terbaca โ€” kalau gagal, pesan errornya langsung tampil. IT dapat memantau/menonaktifkan semua job di menu IT Admin โ†’ Penarik Data.
  • Konfirmasi dulu โ€” sebelum Anda upload, minta Claude menjelaskan ringkas: berapa project, relasinya, dan data dari OneDrive siapa. Ini mencegah hasil tidak sesuai harapan saat live.
Buka Terbitkan dari ZIP

Memperbarui / Memperbaiki Project yang Sudah Ada

Wizard "Terbitkan dari ZIP" dipakai untuk membuat project baru. Untuk mengubah file project yang sudah live (mis. memperbaiki tampilan atau mengganti data statis), buka Project Saya โ†’ Kelola pada project tersebut, lalu di tab File upload file penggantinya. Untuk mengubah siapa yang bisa mengakses, gunakan tab Share & Akses.

Belum Familiar dengan Web Development?

Tidak masalah. Anda tidak perlu coding sendiri โ€” Claude yang melakukan semua. Tugas Anda hanya: (1) siapkan data/bahan, (2) jelaskan apa yang ingin ditampilkan, (3) upload ZIP hasilnya lewat Buat Baru โ†’ Terbitkan dari ZIP. Prompt siap-pakai sudah tersedia di halaman itu.

Prompt Template untuk Claude

Pilih mode sesuai cara Anda pakai Claude. Otomatis direkomendasikan kalau Claude Anda bisa baca file (Cowork desktop atau Claude.ai Pro/Team).

Mode Otomatis โ€” Claude kerjakan semua

Pakai mode ini kalau Anda pakai Cowork (desktop) atau Claude.ai Pro/Team (yang bisa baca file dari folder/attachment). Anda tidak perlu edit apapun di prompt โ€” Claude yang kerjakan semua.

  1. Siapkan file project Anda โ€” drop folder project ke chat Claude (Cowork: mount folder; Claude.ai Pro: drag-drop file-file project ke chat).
  2. Copy prompt di bawah, paste ke chat Claude (di bawah file-file yang sudah Anda drop).
  3. Jawab 3 pertanyaan dari Claude: department, nama Anda, dan konfirmasi nama project + ID folder yang Claude detect.
  4. Tunggu Claude generate folder ID, project.json, normalize data record, dan compliance check otomatis. Selesai.

Catatan: Mode Otomatis butuh Claude yang bisa baca file. Kalau Anda pakai Claude.ai versi gratis (free), pakai tab Manual sebelah.

Prompt Otomatis

Copy semua, paste ke chat Claude. Tidak perlu edit apapun.

Saya Creator di PT Esteh Indonesia Makmur (Esteh Group). Saya akan upload project saya ke Esteh Internal Projects Portal (https://portal.estehindonesia.com).

============================================================
TUGAS ANDA (CLAUDE)
============================================================
Bantu saya menyiapkan project saya untuk di-upload ke portal. Saya akan kasih file project saya (HTML, CSS, JS, data, gambar, dll). Anda yang strukturkan ulang sesuai format portal SECARA OTOMATIS.

ATURAN UTAMA โ€” JANGAN DILANGGAR:
1. JANGAN ubah isi, logic, atau desain file project saya. Anda hanya format ulang STRUKTUR FOLDER + tambah file METADATA.
2. JANGAN buat file di luar folder project ini. Folder lain di komputer saya read-only.
3. SEBELUM mulai eksekusi, TANYA SAYA 3 hal: department, nama saya, dan konfirmasi nama project + ID folder yang Anda detect.

============================================================
KONTEKS PORTAL โ€” WAJIB DIBACA SEBELUM ANDA NOLAK ATAU FLAG "TIDAK BISA"
============================================================

Portal Esteh punya 2 LAPISAN TERPISAH. Jangan dicampur:

LAPISAN 1 โ€” PROJECT HTML (yang saya kasih ke Anda)
   Pure static: HTML5 + CSS3 + Vanilla JS. Di-serve oleh web server portal.
   TIDAK punya runtime backend sendiri. Tidak ada Node/PHP/Python
   di dalam folder project.

LAPISAN 2 โ€” BACKEND TERPUSAT (portal-app, sudah LIVE, dikelola IT)
   Project saya MEMANGGIL service di lapisan ini dari frontend
   pakai HTTP API + SDK. Anda TIDAK perlu (dan TIDAK boleh) bangun
   backend baru di dalam folder project saya.

SERVICE TERPUSAT YANG SUDAH TERSEDIA โ€” LANGSUNG PAKAI:
- Bridge SDK: window.CoworkBridge('slug-bridge')
   Simpan & baca record (ticket, task, customer, approval, leads, dll).
   Method: bridge.list(filter), bridge.get(id), bridge.create(data),
   bridge.update(id, data), bridge.delete(id).
   COCOK untuk: service desk ticketing, CRM, approval system,
   task tracker, expense management, dll.
- M365 Email OUTBOUND (Microsoft Graph API, sudah live)
   Kirim email notifikasi dari portal (mis. "ticket baru dibuat",
   "status berubah jadi resolved"). Wire-nya di-config oleh IT Admin
   per project per event Bridge. Project saya cukup trigger event
   via bridge.create / bridge.update โ€” IT yang setup template +
   recipient + escalation rules.
- M365 Email INBOUND (worker baca mailbox -> auto-create record)
   Tersedia ON-DEMAND. Kalau project saya butuh fitur "email yang
   masuk ke alamat tertentu otomatis jadi ticket", LAPORKAN ke saya.
   Saya yang minta IT bangun inbound worker untuk Bridge saya.
   JANGAN coba listener webhook / Graph subscription di project HTML
   โ€” itu memang tidak bisa di static, tapi BACKEND TERPUSAT yang
   handle, bukan tugas Anda di project.

ATURAN INTERPRETASI YANG WAJIB ANDA PEGANG:
- KALAU project saya butuh kapabilitas server-side (parse email masuk,
  scheduled job/cron, webhook listener pihak ketiga, integrasi API
  yang butuh secret, file upload publik tanpa login, dll), JANGAN
  bilang "tidak bisa karena static". Yang benar: project HTML cuma
  jadi UI + panggil Bridge SDK. Logic server-side adalah pekerjaan
  BACKEND TERPUSAT, dan IT yang bangun on-demand.
- LAPORKAN ke saya kapabilitas server-side apa yang dibutuhkan,
  TAPI tetap LANJUT generate project HTML-nya pakai Bridge SDK.
  Project bisa live duluan dengan input manual, lalu IT wire
  inbound/outbound nanti tanpa ubah project.
- Service desk ticketing CUKUP dibuat sebagai UI static + Bridge SDK.
  Auto-create dari email masuk = task IT untuk wire inbound worker
  ke Bridge yang sama. Project tidak perlu tahu detail itu.

============================================================
LANGKAH YANG ANDA KERJAKAN
============================================================

LANGKAH 1 โ€” DETEKSI NAMA PROJECT
- Baca <title> dari HTML utama, <h1> pertama, atau README kalau ada.
- Tentukan nama project (frasa pendek 3-7 kata).
- Generate ID folder dengan aturan:
   โ€ข HURUF KECIL SEMUA
   โ€ข PEMISAH KATA pakai strip "-" (BUKAN spasi atau underscore)
   โ€ข Hanya huruf, angka, dan strip
   โ€ข Contoh: "Dashboard Penjualan Q1 2026" -> "dashboard-penjualan-q1-2026"

LANGKAH 2 โ€” BUNGKUS DALAM FOLDER ID
- Buat folder dengan nama ID (lihat aturan ID di LANGKAH 1).
- Pindahkan SEMUA file project ke dalam folder itu.
- Pastikan path relatif di HTML (src, href) masih valid setelah pindah.
- File entry HARUS bernama index.html. Kalau file utama bukan index.html, rename + update referensi internal.

LANGKAH 2b โ€” DETEKSI MULTI-VIEW (UNTUK TICKETING/HELPDESK/CRM/APPROVAL)

Project tipe ini biasanya butuh BEBERAPA VIEW dengan audience berbeda:
- Service desk ticketing : view ADMIN (IT staff, full CRUD ticket) + view PUBLIC (user biasa, cuma input + tracking by ID/email)
- CRM pipeline           : view SALES (edit lead, log aktivitas) + view MANAGER (dashboard agregat read-only)
- Approval system        : view REQUESTER (input + tracking sendiri) + view APPROVER (queue review + approve/reject)
- Project management     : view TIM (update progress) + view STAKEHOLDER (read-only milestone status)

KALAU project sumber saya tampak butuh multi-view (ada mention kata "admin", "public", "tracking", "form user", "dashboard manager", "approver", dll), TANYA SAYA dulu:
1. "Apakah project ini butuh beberapa view dengan audience berbeda?"
2. Kalau YA: "Sebutkan setiap view + audience + permission read/write yang dibutuhkan"

KALAU multi-view dikonfirmasi, jangan generate 1 folder. Generate FOLDER ID TERPISAH per view:

  helpdesk-it-admin/        โ† admin view (IT staff)
  helpdesk-it-tracking/     โ† public view (user lacak ticket)

Aturan per folder:
- Suffix ID yang JELAS peran-nya: -admin, -tracking, -sales, -manager, -requester, -approver, dst
- project.json di setiap folder dengan visibility + bridge_role yang sesuai:
   โ€ข Write role (admin/sales/approver/tim):
     "visibility": "shared", "bridge_role": "write"
   โ€ข Read role (public/manager/requester/stakeholder):
     "visibility": "public" (kalau memang publik) atau "shared", "bridge_role": "read"
- Field "bridge_role" di project.json adalah HINT untuk IT Admin Portal saat attach ke Bridge nanti
  (IT Admin yang manual set role saat attach, tapi nilai ini bantu konsistensi + dokumentasi)
- SDK CoworkBridge dipanggil dengan ID bridge YANG SAMA di SEMUA folder, contoh:
   const bridge = window.CoworkBridge('ticket-system-it');
- Setiap view render UI yang sesuai role-nya:
   โ€ข Write role: table list record + form Create/Edit/Delete + filter status
   โ€ข Read role:  form input record baru (kalau allowed) + tracking by ID atau filter by owner=email_user_sendiri (read-only display)
- Style + brand color SAMA di semua view (tetap pakai #0E8141 + Esteh Sans) โ€” konsistensi UX

CONTOH STRUKTUR OUTPUT multi-view service desk IT:

  helpdesk-it-admin/
  โ”œโ”€โ”€ index.html        (dashboard IT staff: list semua ticket, edit, reply)
  โ”œโ”€โ”€ style.css
  โ”œโ”€โ”€ app.js            (panggil bridge.list, bridge.update, bridge.create)
  โ””โ”€โ”€ project.json      (visibility: "shared", bridge_role: "write")

  helpdesk-it-tracking/
  โ”œโ”€โ”€ index.html        (form input user + lacak ticket sendiri)
  โ”œโ”€โ”€ style.css
  โ”œโ”€โ”€ app.js            (panggil bridge.create untuk input, bridge.list dengan filter owner)
  โ””โ”€โ”€ project.json      (visibility: "public", bridge_role: "read")

KEDUA folder ini akan di-upload sebagai 2 project terpisah ke portal. IT Admin yang attach keduanya ke Bridge yang sama dengan role berbeda.

LANGKAH 2c โ€” TENTUKAN AUDIENS & VISIBILITY (WAJIB TANYA SAYA)
Ini menentukan project ini muncul di mana (portal internal saja, atau juga di services untuk pihak luar) dan siapa yang boleh akses. TANYA SAYA: "Project ini untuk siapa?" lalu petakan ke salah satu nilai visibility portal Esteh:

- "private"     -> hanya saya (pembuat) + Admin IT. Cocok untuk draft / dashboard pribadi.
- "department"  -> semua orang di department saya. Cocok untuk laporan internal divisi.
- "shared"      -> hanya orang / grup / department tertentu yang dipilih. BISA termasuk mitra
                   external yang sudah diundang (akun "service"). Cocok untuk berbagi terbatas.
- "public"      -> Public (Internal Only): SEMUA karyawan internal Esteh Group (portal.estehindonesia.com).
                   TIDAK untuk pihak luar.
- "public_ext"  -> Public (Internal & External): semua internal + mitra/vendor/tim outlet (pihak LUAR).

ATURAN PORTAL vs SERVICES (PENTING โ€” ada 2 setelan TERPISAH: VISIBILITY + AKSES VIA):
- VISIBILITY (daftar di atas) = SIAPA yang boleh melihat.
- AKSES VIA = DI DOMAIN MANA project muncul: "Portal saja" / "Services saja" / "Portal & Services".
  Setelan ini dipilih di portal saat Buat/Kelola Project (BUKAN di file metadata).
- Project muncul di services.estehindonesia.com HANYA JIKA: Akses via = Services (atau Keduanya)
  DAN visibility = public / public_ext. Jadi "public_ext" SAJA TIDAK cukup โ€” Akses via harus Services juga.
- Audiens internal saja -> Akses via "Portal saja" + visibility internal (private/department/shared/public).
- Audiens termasuk pihak LUAR / project tracking untuk pengaju -> Akses via "Services saja" (atau Keduanya)
  + visibility "public" (atau "public_ext" lalu IT menambah email mitra). Pihak luar TIDAK pernah bisa masuk
  portal.estehindonesia.com; mereka hanya lihat project yang di-share di services.estehindonesia.com.
- Kalau saya ragu: default visibility "private" + Akses via "Portal saja". Catat rekomendasi Anda โ€” IT bisa ubah.

LANGKAH 3 โ€” GENERATE project.json (FILE BARU)
Buat file project.json di root folder ID dengan struktur:
{
  "name": "<nama-project-readable-yang-Anda-detect>",
  "description": "<satu-kalimat-deskripsi-dari-konten-project>",
  "department": "<ID-department-dari-jawaban-saya>",
  "owner": "<dari-jawaban-saya>",
  "visibility": "<private | department | shared | public | public_ext โ€” sesuai LANGKAH 2c>",
  "surface_rekomendasi": "<portal | services | both โ€” rekomendasi 'Akses via'; nilai ini SAYA set di portal saat Buat Project, bukan dari file>",
  "audience_note": "<1 kalimat: untuk siapa project ini, mis. 'internal divisi marketing' atau 'mitra outlet + internal / tracking pengaju'>",
  "entry": "index.html"
}

UNTUK MULTI-VIEW PROJECT (kalau LANGKAH 2b berlaku), struktur project.json di setiap folder:
{
  "name": "<nama-view-yang-readable>",       (contoh "Helpdesk IT โ€” Admin Dashboard")
  "description": "<peran-view-ini>",         (contoh "Dashboard untuk IT staff handle ticket")
  "department": "<dari-jawaban-saya>",
  "owner": "<dari-jawaban-saya>",
  "visibility": "shared",                    (atau "public" โ€” sesuai aturan LANGKAH 2b per role)
  "entry": "index.html",
  "bridge_role": "write"                     (atau "read" โ€” hint untuk IT Admin saat attach Bridge)
}

LANGKAH 3b โ€” SUMBER DATA (PILIH: STATIS atau LIVE)
Tanya saya kalau ragu. Ada 2 cara project memperoleh data:

A. DATA STATIS (embed) โ€” untuk snapshot yang TIDAK berubah (laporan periode tertentu, materi tetap).
   Embed data dari CSV/Excel ke file .js / .json di dalam folder project. Tidak butuh koneksi apa pun.

B. DATA LIVE dari OneDrive (sudah AKTIF) โ€” untuk dashboard/laporan yang DATANYA SERING DIUPDATE.
   Project TIDAK meng-embed data. Sebaliknya:
   - File data (Excel/CSV) ditaruh di folder OneDrive project (folder OneDrive bernama = ID project).
   - Dashboard mengambil data via fetch ke endpoint portal:
       fetch('/api/projects/<ID-department>/<ID-project>/data?file=<nama-file>', { credentials: 'include' })
     (kalau di folder OneDrive cuma ada 1 file data, '?file=' boleh dikosongkan โ€” otomatis terdeteksi)
   - Respons JSON: { ok, columns: [...], rows: [ {...}, ... ], row_count, fetched_at }.
   - Untuk tombol "Refresh Data", tambahkan '&refresh=1' pada URL (paksa ambil ulang dari OneDrive).
   - Render chart/tabel dari "rows". Data ikut versi terbaru di OneDrive otomatis.
   LAPORKAN ke saya kalau project pakai cara B + sebutkan nama file data yang diharapkan,
   supaya saya menaruh file-nya di folder OneDrive yang benar.

(Untuk APLIKASI KELOLA RECORD seperti ticketing/CRM/approval, gunakan Bridge SDK di KONTEKS PORTAL โ€”
 itu jalur berbeda untuk MENYIMPAN/MENGUBAH record, bukan sekadar menampilkan data tabel.)

LANGKAH 4 โ€” NORMALIZE DATA RECORD (KALAU ADA)
DEFINISI LIST RECORD: array of object yang merepresentasikan entitas (task, ticket, customer, approval, milestone, leads, expense, dll). Bisa berupa array di file .json, array hardcoded di .js, atau data dari CSV/Excel attached.

Kalau project SAYA PUNYA list record -> normalkan ke schema portal Esteh berikut. Kalau TIDAK punya (landing page, brosur, slideshow tanpa data dinamis) -> SKIP langkah ini.

a) FIELD NAME WAJIB per record:
   id, name, department, status, owner, created_at, updated_at
   Kalau nama field lama beda (taskId, judul, pic_email, tgl_dibuat, dll), RENAME ke nama wajib di atas.
   Field tambahan project-specific BOLEH (outlet_code, campaign_id, dll), tapi 7 field wajib HARUS ada.

b) ID PATTERN per tipe record:
   โ€ข Task     : TASK-{DEPT3}-{NNN}     -> TASK-MKT-001
   โ€ข Ticket   : TKT-{YYMMDD}-{NNN}     -> TKT-260524-001
   โ€ข Approval : APR-{YYMMDD}-{NNN}     -> APR-260524-001
   โ€ข Milestone: MS-{PROJECT_CODE}-{NN} -> MS-CAMP01-01
   โ€ข Customer : CUS-{NNNN}             -> CUS-0001
   DEPT3 = singkatan 3 huruf department (mis. IT, MKT, FIN, HR, OPS, RND, QA) โ€” bebas, yang penting konsisten.
   Tipe lain: buat pattern sejenis {PREFIX3-5}-{NNN} atau {PREFIX}-{YYMMDD}-{NNN}.

c) STATUS ENUM per tipe (lowercase snake_case):
   โ€ข task     : pending / in_progress / done / cancelled / blocked
   โ€ข ticket   : open / assigned / in_progress / resolved / closed
   โ€ข approval : draft / submitted / review / approved / rejected
   โ€ข milestone: not_started / in_progress / done / delayed
   โ€ข customer : active / inactive / prospect
   Kalau status lama beda ("selesai", "complete", "1", true) -> CONVERT ke enum di atas.

d) TIMESTAMP FORMAT โ€” ISO 8601 dengan timezone:
   "2026-05-24T14:30:00+07:00" (Asia/Jakarta) atau "2026-05-24T07:30:00Z" (UTC).
   Kalau lama "24/05/2026" atau Unix epoch -> CONVERT ke ISO 8601.

e) NAMING CONVENTION:
   Field name : snake_case lowercase (created_at, NOT createdAt)
   Enum value : snake_case lowercase (in_progress, NOT inProgress)
   ID prefix  : UPPERCASE (TASK-, TKT-, APR-)

LANGKAH 5 โ€” TECH STACK COMPLIANCE CHECK
Pastikan project saya compliance dengan aturan portal:
- FOLDER PROJECT pure static (HTML5 + CSS3 + Vanilla JS). Library via CDN public OK.
- TIDAK ada server backend di dalam FOLDER PROJECT (no Node/PHP/Python source code, no build step).
  (Ingat: backend terpusat portal-app sudah ada untuk service Bridge & Email. Lihat
   "KONTEKS PORTAL" di atas. Project cuma panggil service-nya dari frontend.)
- TIDAK ada external API call yang butuh API key rahasia di kode frontend.
  (Kalau perlu, panggil lewat Bridge SDK / minta IT bangun proxy di backend terpusat.)
- Semua path asset RELATIF (./images/logo.png), bukan absolut (/images/ atau C:/...).
- <html lang="id">, <meta charset="UTF-8">, <meta name="viewport">, <title> jelas.
- Semua <img> punya alt. Heading hierarchy benar (h1 -> h2 -> h3).
- Layout responsive (desktop 1920px + mobile 375px).
- Warna brand: hijau #0E8141 sebagai primary, putih + abu netral.

BRANDING ESTEH (WAJIB di tiap project):
- Di <head> tambahkan: <link rel="stylesheet" href="/brand/tokens.css"> (memuat font resmi "Esteh Sans" + token warna Esteh). Lalu set font halaman: font-family: 'Esteh Sans', system-ui, sans-serif;
- Tampilkan logo Esteh Group KECIL di kiri atas (jangan besar, seperti logo di portal): <img src="/brand/logo.png" alt="Esteh Group" style="height:32px;width:auto">
- PENGECUALIAN aturan path relatif: aset brand portal (/brand/tokens.css, /brand/logo.png, /fonts/...) memang pakai path absolut /brand/ dan /fonts/ โ€” itu dilayani portal di KEDUA domain (portal & services), bukan file project. Aset MILIK project tetap relatif (./...).

Kalau ada yang tidak compliance, PERBAIKI tanpa ubah logic/desain inti. LAPORKAN apa yang Anda ubah.
Kalau project butuh kapabilitas server-side, JANGAN tolak โ€” pakai Bridge SDK + laporkan
ke saya kapabilitas backend apa yang perlu IT wire (lihat KONTEKS PORTAL di atas).

LANGKAH 6 โ€” OUTPUT
Format output:

KALAU ANDA DI COWORK / Claude Code (file access):
- Tulis langsung file ke disk di dalam folder ID.
- Setelah selesai, kasih saya laporan singkat:
   โ€ข Nama folder ID yang dibuat (atau LIST folder kalau multi-view)
   โ€ข Tree lengkap file & folder di dalamnya (per folder kalau multi-view)
   โ€ข Daftar perubahan (rename field, normalize data, dll)
   โ€ข Konfirmasi: tidak ada file di luar folder ID yang Anda modify
   โ€ข Kalau multi-view: rekomendasi ID bridge yang sebaiknya dibuat IT Admin untuk attach kedua project ini

KALAU ANDA DI CLAUDE.AI WEB (no file access):
- Output dalam blok kode format:
   === FILE: <id>/index.html ===
   ... isi ...
   === FILE: <id>/project.json ===
   ... isi ...
- Untuk multi-view: blok-blok file dengan ID berbeda satu per satu:
   === FILE: helpdesk-it-admin/index.html ===
   ...
   === FILE: helpdesk-it-tracking/index.html ===
   ...
- Saya akan copy-paste sendiri ke file di komputer.
- Sertakan juga laporan singkat seperti di atas.

============================================================
KALAU AMBIGU, TANYA SAYA โ€” JANGAN ASUMSI
============================================================

Skenario yang HARUS Anda tanya:
- Ada beberapa file .html, tidak jelas mana index utama.
- Ada beberapa array data, tidak jelas mana yang list record perlu di-normalize.
- Nama project tidak jelas dari <title>/h1 (terlalu generic seperti "Document" atau "Untitled").
- Format data lama yang Anda ragu cara convert-nya.

============================================================
MULAI SEKARANG
============================================================

Langkah pertama Anda:
1. KONFIRMASI Anda sudah baca semua file project saya โ€” sebutkan jumlah file + nama-nama file utamanya.
2. TANYA hal-hal berikut di awal:
   a. ID department saya (lihat daftarnya di portal -> menu "Buat Baru"; contoh: it, marketing, finance, hr, esteh-indonesia, dst). Tulis ID-nya yang huruf kecil pakai strip.
   b. Nama saya (huruf kecil tanpa spasi, contoh: lisa, andi, sarah)
   c. Konfirmasi nama project + ID folder yang Anda detect (saya bisa koreksi)
   d. AUDIENS project ini untuk siapa? (lihat LANGKAH 2c โ€” internal saja / department / orang tertentu / semua internal / termasuk pihak luar). Ini menentukan visibility + apakah project tampil di services.estehindonesia.com.
   e. SUMBER DATA: statis (embed) atau live dari OneDrive? (lihat LANGKAH 3b)
   f. (KALAU project tampak multi-view โ€” ticketing/CRM/approval/dst, lihat LANGKAH 2b)
      "Apakah project ini butuh beberapa view dengan audience berbeda? Kalau ya, sebutkan setiap view + audience + permission read/write." โ€” TANYA HANYA kalau saya tampak butuh multi-view, untuk project single-view skip pertanyaan ini.
3. TUNGGU jawaban saya.
4. BARU mulai eksekusi LANGKAH 1-6 setelah saya konfirmasi.

JANGAN langsung output file sebelum saya konfirmasi.

Tips โ€” Supaya Mode Otomatis Lancar

  • Pastikan Claude sudah baca file Anda sebelum paste prompt. Di Cowork: tunggu indikator working folder hijau muncul. Di Claude.ai Pro: drop file-file dulu, tunggu thumbnail file muncul, baru paste prompt.
  • Jawab pertanyaan Claude dengan jelas. Misal department: tulis marketing saja (bukan "Marketing Dept" atau "Tim Marketing"). Owner: tulis nama tanpa spasi (lisa, andi, sarah).
  • Kalau Claude salah detect nama project, koreksi langsung saat dia tanya konfirmasi. Contoh: "Bukan, project ini namanya 'Kampanye Lebaran 2026', ID-nya kampanye-lebaran-2026."
  • Mode Otomatis aman untuk project existing. Claude diperintahkan JANGAN ubah logic/desain โ€” hanya format ulang struktur folder + tambah file metadata.

Mode Manual โ€” Anda edit prompt sendiri

Pakai mode ini kalau Claude Anda tidak bisa baca file (Claude.ai versi gratis, atau chat tanpa attachment support). Anda perlu copy prompt, lalu edit bagian dalam kurung siku [...] sebelum paste ke chat Claude.

Prompt Manual Template

Copy template di bawah, paste ke chat Claude, edit bagian dalam kurung [...] sesuai kebutuhan Anda.

Saya Creator di PT Esteh Indonesia Makmur (Esteh Group). Saya butuh project web statis yang akan di-upload ke Esteh Internal Projects Portal (https://portal.estehindonesia.com).

============================================================
TUGAS
============================================================
[ Jelaskan apa yang Anda ingin Claude buat. Contoh:
  - "Buat dashboard analitik penjualan harian dari data CSV terlampir, dengan grafik bar + line + filter per outlet."
  - "Buat microsite kampanye Lebaran 2026 dengan landing page + galeri foto + form pendaftaran customer (data form di-save ke localStorage saja)."
  - "Buat report keuangan Q1 2026 interaktif dari Excel terlampir, lengkap dengan ringkasan + tabel + grafik." ]

============================================================
KONTEKS PORTAL โ€” WAJIB DIBACA SEBELUM NOLAK ATAU FLAG "TIDAK BISA"
============================================================

Portal Esteh punya 2 LAPISAN TERPISAH. Jangan dicampur:

LAPISAN 1 — PROJECT HTML (yang saya minta Anda buat)
   Pure static: HTML5 + CSS3 + Vanilla JS. Di-serve oleh web server portal.
   TIDAK punya runtime backend sendiri. Tidak ada Node/PHP/Python
   di dalam folder project.

LAPISAN 2 — BACKEND TERPUSAT (portal-app, sudah LIVE, dikelola IT)
   Project saya MEMANGGIL service di lapisan ini dari frontend
   pakai HTTP API + SDK. Anda TIDAK perlu (dan TIDAK boleh) bangun
   backend baru di dalam folder project saya.

SERVICE TERPUSAT YANG SUDAH TERSEDIA — LANGSUNG PAKAI:
• Bridge SDK: window.CoworkBridge('slug-bridge')
   Simpan & baca record (ticket, task, customer, approval,
   leads, dll). Method: bridge.list(filter), bridge.get(id),
   bridge.create(data), bridge.update(id, data), bridge.delete(id).
   COCOK untuk: service desk ticketing, CRM, approval system,
   task tracker, expense management, dll. Lihat tab "Data Bridge"
   di Help Center portal untuk SDK lengkap.
• M365 Email OUTBOUND (Microsoft Graph API, sudah live)
   Kirim email notifikasi dari portal (mis. "ticket baru dibuat",
   "status berubah jadi resolved"). Wire-nya di-config oleh IT
   Admin per project per event Bridge. Project saya cukup trigger
   event via bridge.create / bridge.update — IT yang setup
   template + recipient + escalation rules.
• M365 Email INBOUND (worker baca mailbox -> auto-create record)
   Tersedia ON-DEMAND. Kalau project saya butuh fitur "email yang
   masuk ke alamat tertentu otomatis jadi ticket", LAPORKAN ke saya.
   Saya yang minta IT bangun inbound worker untuk Bridge saya.
   JANGAN coba listener webhook / Graph subscription di project HTML
   — itu memang tidak bisa di static, tapi BACKEND TERPUSAT
   yang handle, bukan tugas Anda di project.

ATURAN INTERPRETASI YANG WAJIB ANDA PEGANG:
• KALAU project saya butuh kapabilitas server-side (parse email
   masuk, scheduled job/cron, webhook listener pihak ketiga,
   integrasi API yang butuh secret, file upload publik tanpa login,
   dll), JANGAN bilang "tidak bisa karena static". Yang benar:
   project HTML cuma jadi UI + panggil Bridge SDK. Logic server-side
   adalah pekerjaan BACKEND TERPUSAT, dan IT yang bangun on-demand.
• LAPORKAN ke saya kapabilitas server-side apa yang dibutuhkan,
   TAPI tetap LANJUT generate project HTML-nya pakai Bridge SDK.
   Project bisa live duluan dengan input manual, lalu IT wire
   inbound/outbound nanti tanpa ubah project.
• Service desk ticketing CUKUP dibuat sebagai UI static +
   Bridge SDK. Auto-create dari email masuk = task IT untuk wire
   inbound worker ke Bridge yang sama. Project tidak perlu tahu
   detail itu.

============================================================
PERSYARATAN WAJIB โ€” JANGAN dilanggar
============================================================

1. STRUKTUR FILE:
   - WAJIB: Bungkus SEMUA file & folder project di dalam SATU folder.
     Nama folder ini = nama project Anda, dengan ATURAN PENULISAN berikut:
       • HURUF KECIL SEMUA (jangan ada huruf besar)
       • PEMISAH KATA pakai tanda strip "-" (jangan pakai spasi)
       • JANGAN pakai karakter aneh (titik, koma, tanda seru, tanda tanya,
         garis miring, kurung, dll). Hanya huruf, angka, dan strip.
     CONTOH BENAR :
       kampanye-lebaran-2026
       dashboard-penjualan-harian
       report-keuangan-q1-2026
       microsite-produk-baru
       laporan-stok-outlet
     CONTOH SALAH :
       "Kampanye Lebaran 2026"   → ada huruf besar & spasi
       "dashboard_penjualan"     → pakai underscore, harusnya strip "-"
       "laporan/q1"              → pakai garis miring
       "report keuangan!"        → ada spasi & tanda seru
   - File utama HARUS bernama index.html, taruh di root folder induk.
   - File lain: nama lowercase + dash. CONTOH: style.css, app.js, data-q1.json
   - Sub-folder boleh: images/, data/, lib/, fonts/, css/, js/
   - JANGAN BUAT atau MODIFY file di luar folder induk ini.
     Anggap folder lain di komputer saya read-only.

2. PATH RELATIF:
   - Semua referensi asset pakai path relatif dari index.html.
   - BENAR: <img src="./images/logo.png">
   - SALAH: <img src="/images/logo.png"> (slash di depan)
   - SALAH: <img src="C:/Users/.../logo.png"> (path absolut komputer)

3. TEKNOLOGI:
   - Stack FOLDER PROJECT: HTML5 + CSS3 + Vanilla JS.
   - Boleh library via CDN public (Tailwind, Chart.js, D3.js, Plotly, Alpine.js, dll
     dari cdn.jsdelivr.net, unpkg.com, cdnjs.cloudflare.com).
   - DILARANG di dalam folder project: Node.js server source, PHP, Python backend,
     build step. Folder project harus pure static โ€” buka langsung di browser tanpa server.
   - DILARANG: External API call yang butuh API key rahasia di kode frontend.
   - INGAT: Larangan di atas hanya untuk ISI FOLDER PROJECT. Backend terpusat
     portal-app sudah ada untuk service Bridge & Email (lihat KONTEKS PORTAL
     di atas). Project saya panggil service-nya lewat SDK / HTTP — bukan
     implementasi backend baru di project.
   - GRAFIK (penting biar tidak gagal tampil): kalau pakai Chart.js/Plotly/ApexCharts,
     bungkus <canvas> dalam container ber-TINGGI TETAP (mis. <div style="position:relative;height:320px">)
     + set maintainAspectRatio:false; gambar grafik SETELAH elemen terlihat (mis. setelah data fetch /
     tab aktif). Untuk grafik sederhana (bar/line/donut) lebih aman pakai SVG/CSS murni tanpa library.
     Muat library chart dari cdnjs.cloudflare.com atau cdn.jsdelivr.net (keduanya diizinkan).

4. DATA — pilih salah satu:
   A. STATIS (embed): embed data dari CSV/Excel/JSON yang saya attach ke file .js / .json
      di project. Jangan minta user upload file lagi saat buka project. Cocok untuk data tetap (snapshot).
   B. LIVE dari OneDrive (untuk data yang SERING diupdate): JANGAN embed. Project ambil data
      dengan fetch ke endpoint portal:
        /api/projects/<ID-department>/<ID-project>/data?file=<nama-file>
      (kalau di folder OneDrive project cuma ada 1 file data, '?file=' boleh dikosongkan).
      Respons JSON berisi: daftar kolom, baris data, dan waktu ambil. Tambahkan '&refresh=1'
      untuk tombol Refresh (paksa ambil ulang). File data ditaruh di folder OneDrive project
      (nama folder OneDrive = ID project). LAPORKAN ke saya nama file data yang diharapkan.

5. STRUKTUR DATA RECORD (WAJIB kalau project menyimpan LIST RECORD):
   Aturan ini WAJIB diikuti supaya project kompatibel dengan Data Bridge portal
   Esteh. "List record" = data berupa array of object yang merepresentasikan
   entitas seperti task, ticket, customer, approval, milestone, leads, expense,
   dll. Project tanpa list record (landing page, brosur, kampanye visual,
   slideshow) DIKECUALIKAN dari rule ini.

   5.1 FIELD NAME WAJIB (jangan pakai nama lain):
       • id          — string unique per record
       • name        — judul/nama record (string)
       • department  — ID department (lihat di portal menu "Buat Baru"; mis. it, marketing, finance, hr, esteh-indonesia, dst)
       • status      — enum sesuai tipe record (lihat 5.3)
       • owner       — email PIC, format: [email protected]
       • created_at  — ISO 8601 timestamp
       • updated_at  — ISO 8601 timestamp
       Field opsional umum: progress (number 0-100), tags (array string),
       priority (low/medium/high/urgent), due_date (ISO 8601).
       Field custom tambahan BOLEH (mis. outlet_code, campaign_id), tapi
       JANGAN replace nama field wajib di atas dengan sinonim
       ("taskId" / "judul" / "nm" / "pic_email" / "tgl_dibuat" → DILARANG).

   5.2 ID PATTERN WAJIB (auto-generate dengan max existing ID + 1):
       • Task     : TASK-{DEPT3}-{NNN}     contoh: TASK-MKT-001
       • Ticket   : TKT-{YYMMDD}-{NNN}     contoh: TKT-260524-001
       • Approval : APR-{YYMMDD}-{NNN}     contoh: APR-260524-001
       • Milestone: MS-{PROJECT_CODE}-{NN} contoh: MS-CAMP01-01
       • Customer : CUS-{NNNN}                      contoh: CUS-0001
       DEPT3 = singkatan 3 huruf department (mis. IT, MKT, FIN, HR, OPS) โ€” bebas, yang penting konsisten.
       NNN / NNNN = zero-padded counter (001, 002, ...).

   5.3 STATUS ENUM WAJIB (jangan pakai sinonim "selesai"/"done"/"1"/"complete"):
       • task     : pending → in_progress → done
                        (boleh juga: cancelled, blocked)
       • ticket   : open → assigned → in_progress → resolved → closed
       • approval : draft → submitted → review → approved
                        (boleh juga: rejected)
       • milestone: not_started → in_progress → done
                        (boleh juga: delayed)
       Untuk tipe record di luar daftar ini, pakai status enum yang konsisten
       (lowercase, snake_case, value seragam di seluruh dataset).

   5.4 FORMAT TIMESTAMP:
       created_at & updated_at WAJIB ISO 8601 dengan timezone, contoh:
       "2026-05-24T14:30:00+07:00" (Asia/Jakarta) atau
       "2026-05-24T07:30:00Z" (UTC). Jangan pakai format "24/05/2026" atau
       Unix epoch number.

   5.5 NAMING CONVENTION:
       • Field name : snake_case lowercase (created_at, due_date)
       • Enum value : snake_case lowercase (in_progress, not_started)
       • ID prefix  : UPPERCASE (TASK-, TKT-, APR-)

   Schema lengkap, contoh data, & SDK Bridge ada di tab "Data Bridge" Help
   Center portal.

6. RESPONSIVE:
   - Layout WAJIB responsive โ€” works di desktop (1920px) dan mobile (375px).

7. BRANDING ESTEH (WAJIB):
   - Warna utama hijau #0E8141, background putih + abu netral. Modern minimal.
   - Di <head> tambahkan: <link rel="stylesheet" href="/brand/tokens.css">
     (memuat font resmi "Esteh Sans" + token warna). Set font halaman:
     font-family: 'Esteh Sans', system-ui, sans-serif;
   - Logo Esteh Group KECIL di kiri atas (jangan besar):
     <img src="/brand/logo.png" alt="Esteh Group" style="height:32px;width:auto">
   - PENGECUALIAN aturan path relatif (poin 2): aset brand /brand/tokens.css, /brand/logo.png,
     /fonts/... boleh path absolut karena dilayani portal di kedua domain. Aset milik project tetap relatif.

8. METADATA HTML:
   - <title> jelas, <meta charset="UTF-8">, <meta name="viewport">,
     lang="id" di tag <html>.

9. AKSESIBILITAS:
   - Semua <img> punya alt. Tombol/link teks jelas. Heading hierarchy benar.

10. AUDIENS, VISIBILITY & AKSES VIA (WAJIB tentukan โ€” 2 setelan TERPISAH):
    (a) VISIBILITY = SIAPA yang boleh lihat (TANYA saya kalau ragu):
      • private    — hanya saya + Admin IT
      • department — semua orang di department saya
      • shared     — orang/grup/department tertentu (boleh termasuk mitra external yang diundang)
      • public     — SEMUA karyawan internal Esteh Group
      • public_ext — internal + PIHAK LUAR (mitra/vendor/tim outlet)
    (b) AKSES VIA = DI DOMAIN MANA project muncul (SAYA pilih di portal saat Buat/Kelola Project, bukan dari file):
      • Portal saja       — hanya portal.estehindonesia.com (internal)
      • Services saja     — hanya services.estehindonesia.com (mitra/pengaju) — mis. project tracking
      • Portal & Services  — keduanya
    ATURAN: project muncul di services HANYA JIKA Akses via = Services/Keduanya DAN visibility public/public_ext.
    - Audiens internal saja -> Akses via "Portal saja" + visibility internal.
    - Audiens pihak luar / tracking pengaju -> Akses via "Services saja" (atau Keduanya) + visibility public/public_ext.
    Pihak luar tidak pernah bisa masuk portal internal; mereka hanya lihat project yang di-share di services.

    Buat juga file project.json di root folder (catatan rekomendasi untuk saya/IT โ€” nilai final di-set di portal):
      === FILE: <id>/project.json ===
      {
        "name": "<nama project>",
        "description": "<satu kalimat>",
        "department": "<ID-department>",
        "owner": "<nama-saya>",
        "visibility": "private | department | shared | public | public_ext",
        "surface_rekomendasi": "portal | services | both",
        "audience_note": "<untuk siapa project ini>",
        "entry": "index.html"
      }
    Kalau ragu, set visibility "private" + surface_rekomendasi "portal", lalu beri tahu saya rekomendasinya.

============================================================
OUTPUT YANG SAYA HARAPKAN
============================================================

Nama folder project saya: [GANTI_DENGAN_NAMA_FOLDER_PROJECT_ANDA]

CONTOH cara mengisi (pilih SATU sesuai project Anda, atau buat sendiri):
  - kampanye-lebaran-2026
  - dashboard-penjualan-harian
  - report-keuangan-q1-2026
  - microsite-produk-baru
  - laporan-stok-outlet

Buat folder dengan nama tersebut. SEMUA file masuk di dalamnya. JANGAN buat
file di luar folder ini.

Format output per file:

  === FILE: <id>/index.html ===
  ... isi ...

  === FILE: <id>/project.json ===
  ... isi (lihat seksi 10) ...

  === FILE: <id>/css/style.css ===
  ... isi ...

  === FILE: <id>/data/penjualan.json ===
  ... isi ...

Kalau Anda kerja di Cowork mode / Claude Code (dengan file access), tulis file
langsung ke disk di folder induk tersebut. Kalau di Claude.ai web, output dalam
blok kode di atas.

============================================================
SANITY CHECK DI AKHIR
============================================================

Setelah selesai, jelaskan dalam 5-7 poin:
1. Nama folder induk yang dibuat.
2. Tree lengkap file & folder di dalamnya.
3. File entry point (index.html).
4. Cara test lokal (double-click index.html).
5. Library CDN yang dipakai.
6. Confirmation: tidak ada file di luar folder induk yang Anda modify/buat.
7. Cara upload ke portal.

============================================================
DATA SUMBER
============================================================
[ Pilih salah satu โ€” sesuaikan dengan mode Claude Anda:

  - COWORK MODE (folder sudah di-mount):
    "Baca semua file yang ada di folder kerja saya sekarang sebagai data sumber.
     File-file ini berisi data project saya. Pahami isinya, lalu generate
     project sesuai tugas di atas. JANGAN modify atau hapus file existing โ€”
     hanya buat file baru (HTML/CSS/JS/JSON) atau update file yang memang
     Anda perlu update untuk project deliverable."

  - CLAUDE WEB / CLAUDE CODE:
    Attach file Anda dari OneDrive (drag ke chat). Kalau tidak punya data,
    tulis: "Tidak ada data sumber, generate dummy data realistis sesuai
    konteks tugas." ]

Penting โ€” Sebelum Kirim Prompt ke Claude

Setelah Anda Copy Prompt di atas, paste ke chat Claude lalu ganti 2 placeholder dalam kurung siku berikut dengan teks Anda sendiri:

  • [ Jelaskan apa yang Anda ingin Claude buat... ] di bagian TUGAS
    Tulis deskripsi project Anda. Misal: "Buat dashboard penjualan harian dari data CSV yang saya attach, dengan grafik bar + filter per outlet."
  • [GANTI_DENGAN_NAMA_FOLDER_PROJECT_ANDA] di bagian OUTPUT
    Tulis nama folder project Anda, dengan aturan: huruf kecil semua, pakai strip "-" sebagai pemisah kata (bukan spasi atau underscore). Misal: dashboard-penjualan-harian atau kampanye-lebaran-2026.

Kenapa harus pakai format ini? Nama folder akan jadi URL project Anda di portal (misal portal.estehindonesia.com/p/marketing/dashboard-penjualan-harian). Spasi & karakter aneh akan dirubah otomatis dan bisa bikin URL jelek atau error saat upload.

Titip Project ke IT/Creator (lewat Catatan Project)

Tidak punya akses Claude untuk membangun sendiri, atau ingin dibantu? Pakai cara ini. Anda cukup menyiapkan bahan (prototype + file data) dan 1 file catatan yang menjelaskan project Anda, taruh di folder department Anda di OneDrive, lalu tim IT atau rekan Creator yang akan men-generate project final-nya ke portal. Project tetap akan ter-flag milik department Anda (pihak yang membantu hanya jadi pengelola/pembuatnya). Template prompt di bawah membantu Anda membuat file catatan itu dengan cepat.

Alurnya

  1. Siapkan bahan project Anda: file prototype (kalau ada) + file data (Excel/CSV) + gambar pendukung.
  2. Buka Claude Anda, lampirkan bahan tadi, lalu copy-paste prompt di bawah. Claude akan membuatkan file CATATAN-PROJECT.md.
  3. Bungkus semua jadi 1 folder (nama project, huruf kecil pakai strip, mis. laporan-stok-outlet): isi = catatan + prototype + file pendukung.
  4. Jadikan folder itu satu file ZIP (klik kanan folder โ†’ "Compress" / "Kirim ke โ†’ Folder terkompresi (zip)").
  5. Kirim file ZIP itu ke rekan Creator yang membantu atau ke tim IT lewat media apa pun (WhatsApp / email) โ€” tidak perlu akses OneDrive department. Mereka akan men-generate project-nya ke portal (pilih department tujuan = department Anda saat membuat).

Prompt โ€” Buat File Catatan Project

Lampirkan bahan Anda ke Claude lebih dulu, baru paste prompt ini.

Saya karyawan PT Esteh Indonesia Makmur (Esteh Group). Saya punya bahan project (prototype + file data) yang ingin saya titipkan ke tim IT untuk di-generate menjadi project di Esteh Internal Projects Portal. Saya BELUM butuh project jadinya sekarang โ€” saya hanya perlu bantuan menyiapkan catatan + merapikan folder.

KONTEKS PORTAL (WAJIB โ€” supaya bahan yang saya siapkan cocok untuk portal):
Portal Esteh menyajikan project sebagai WEB STATIS (HTML + CSS + JS) yang berjalan di belakang login, dengan LAYANAN TERPUSAT yang sudah disediakan IT:
- Menyimpan/mengelola data record (form, penilaian, tiket, approval, dsb) โ†’ pakai "Data Bridge" portal (bukan database sendiri).
- Menampilkan data yang sering berubah (Excel/CSV) โ†’ dibaca LIVE dari OneDrive.
- Menarik data eksternal terjadwal (mis. dari API) โ†’ dijalankan server portal ("Penarik Data Terjadwal").
- Login, izin akses, logo & font Esteh โ†’ otomatis dari portal.
JANGAN merancang solusi berbasis Google Sheets / Google Apps Script / Excel Power Query / server atau hosting eksternal โ€” semua itu TIDAK dipakai di portal. Kalau prototype lama saya memakai hal-hal itu, JANGAN tiru mekanismenya; cukup tangkap TUJUAN + STRUKTUR DATA-nya di catatan, nanti tim IT/creator yang membangun ulang memakai Data Bridge + OneDrive. Kalau perlu prototype visual, buat HTML statis sederhana saja.

TUGAS ANDA:
Bantu saya membuat SATU file catatan bernama CATATAN-PROJECT.md yang menjelaskan project saya, supaya tim IT bisa paham dan men-generate-nya tanpa perlu banyak tanya lagi.

LANGKAH:
1. Baca semua file yang saya lampirkan (prototype, data Excel/CSV, gambar, dll).
2. Tanyakan ke saya hal yang belum jelas (nama project, tujuan, siapa penggunanya).
3. Setelah jelas, buatkan file CATATAN-PROJECT.md dengan isi persis seperti kerangka di bawah.

KERANGKA ISI CATATAN-PROJECT.md:
# Nama Project
[nama yang mudah dipahami]

## Department
[department saya, mis. Esteh Marketing & Promotion / Corporate Finance & Strategy / IT]

## Penjelasan Singkat
[1-2 paragraf: project ini apa, untuk apa, masalah yang ingin diselesaikan]

## Siapa yang Akan Mengakses (Audiens)
[pilih yang paling sesuai โ€” ini menentukan project tampil di portal internal saja, atau juga di services untuk pihak luar:
 - hanya saya (draft/pribadi)
 - tim department saya saja
 - orang / grup tertentu (sebutkan siapa)
 - SEMUA karyawan internal Esteh Group
 - TERMASUK PIHAK LUAR / untuk pengaju di services (mitra / vendor / tim outlet / form tracking) -> IT akan set "Akses via = Services" + visibility Public saat membuat project, supaya tampil di services.estehindonesia.com]

## Struktur Data
[jelaskan tiap file data: nama file, isinya apa, daftar kolom + tipe (teks/angka/tanggal), dan contoh 1-2 baris]

## Struktur Data Record (kalau project MENYIMPAN/MENGELOLA data โ€” form, penilaian, tiket, approval)
[kalau project bukan sekadar menampilkan, tapi merekam record, jelaskan skema record-nya supaya cocok untuk Data Bridge:
 - jenis record apa saja (mis. penilaian, kunjungan, sertifikasi) โ€” kalau lebih dari satu jenis, sebutkan tiap jenis
 - kolom tiap record + tipe (teks/angka/tanggal)
 - kolom mana yang jadi ID/kode unik tiap record
 - kolom "status" (kalau ada) beserta pilihan nilainya
 - kolom kunci penghubung (mis. No Kebun untuk outlet, Crew ID untuk crew) kalau perlu tersambung ke data/sistem lain]

## Cara Baca / Hubungan Antar File
[kalau ada beberapa file, jelaskan bagaimana saling terhubung โ€” mis. kolom mana yang jadi penghubung antar file]

## Integrasi dengan Sistem/Project Lain (kalau ada)
[apakah project ini perlu tersambung / berbagi data dengan project lain di portal (mis. crew lifecycle, store opening, dashboard lain)? Sebutkan project-nya + kolom penghubungnya. IT yang akan menyambungkan via Data Bridge.]

## Sumber Data & Update Berkala
[apakah data akan sering diperbarui?
 - YA, dari file Excel/CSV โ†’ sebutkan file-nya disimpan di OneDrive SIAPA (email pemilik) + nama folder, supaya dibaca live.
 - YA, ditarik otomatis dari API/sumber eksternal pada jadwal โ†’ sebutkan sumber & seberapa sering.
 - TIDAK โ†’ dipakai sebagai snapshot tetap saat ini.]

## Hasil yang Diharapkan
[bentuk akhir yang diinginkan: dashboard? app input? laporan interaktif? microsite? Sebutkan grafik/tabel/fitur + untuk siapa. Kalau butuh beberapa tampilan berbeda (mis. app input untuk petugas + dashboard untuk manajemen), sebutkan masing-masing โ€” nanti dibuat sebagai beberapa project yang saling terhubung.]

## File yang Saya Lampirkan
[daftar nama file prototype + file pendukung]

## Catatan Tambahan
[hal lain yang perlu IT tahu: ada angka rahasia? ada deadline? akun/pengguna khusus? Catatan: JANGAN sertakan file font/logo โ€” branding Esteh dipasang otomatis oleh portal.]

SETELAH FILE CATATAN SELESAI:
1. Bungkus SEMUA dalam SATU folder. Nama folder = nama project, dengan aturan: huruf kecil semua, pemisah kata pakai strip "-", tanpa spasi/karakter aneh. Contoh: laporan-stok-outlet, dashboard-penjualan-harian.
2. Isi folder: file CATATAN-PROJECT.md + file prototype + semua file pendukung (data, gambar).
3. Jadikan folder itu satu file ZIP (klik kanan folder โ†’ "Compress" / "Kirim ke โ†’ Folder terkompresi (zip)").
4. Kirim file ZIP itu ke creator yang membantu atau ke tim IT lewat media apa pun (WhatsApp / email). Tidak perlu akses OneDrive department.

PENTING: Anda TIDAK perlu membangun project jadinya. Cukup bantu saya menyiapkan catatan yang jelas + merapikan folder. Tim IT yang akan men-generate project final dari bahan ini โ€” termasuk otomatis menerapkan logo Esteh Group + font Esteh Sans, jadi Anda tidak perlu memikirkan tampilan brand-nya.

Kenapa pakai cara ini?

Dengan catatan yang jelas + bahan terkumpul rapi di satu folder, creator/tim IT yang membantu bisa langsung membangun project Anda tanpa bolak-balik tanya, lalu menerbitkannya ke portal lewat Buat Baru โ†’ Terbitkan dari ZIP (branding Esteh dipasang otomatis). Makin lengkap catatan Anda, makin cepat & akurat hasilnya.

Bagaimana cara tercepat menerbitkan project?

Pakai menu Creator Portal โ†’ Terbitkan dari ZIP. Copy prompt yang tersedia ke Claude Anda, biarkan Claude membangun project + menulis manifest portal.json, bungkus jadi 1 ZIP, lalu upload. Portal otomatis memasang font/logo/warna Esteh, memeriksa keamanan, dan menampilkan ringkasan untuk Anda konfirmasi 1-klik. Tidak perlu mengetik pengaturan atau akses server.

Project saya terdiri dari beberapa halaman yang saling terhubung. Bisa sekaligus?

Bisa. Masukkan semua project dalam 1 ZIP dan biarkan Claude Anda mengisi bagian bridge di portal.json beserta bridge_role tiap project (write untuk yang mengelola data, read untuk yang hanya menampilkan). Saat Anda klik Terbitkan, portal membuat Data Bridge dan menghubungkan semua project otomatis โ€” Anda tidak perlu mengatur apa pun di menu admin.

Saya diminta men-deploy project milik orang lain, datanya di OneDrive dia. Bagaimana?

Pastikan Claude Anda menuliskan di manifest OneDrive siapa sumber datanya: drive_owner (email pemilik OneDrive) + drive_folder (folder datanya). Dengan begitu dashboard membaca data dari OneDrive PIC yang benar, bukan OneDrive Anda. Nilai ini juga bisa Anda periksa/ubah di layar konfirmasi sebelum menerbitkan.

Project saya perlu menarik data dari API/sumber luar secara otomatis terjadwal. Bisa?

Bisa. Project statis tidak menjalankan penjadwal sendiri; sebagai gantinya deklarasikan scheduled_jobs di manifest (URL sumber, jadwal berapa jam, dan hasil disimpan ke snapshot file atau Data Bridge). Portal menjalankannya di server secara berkala. Sumber harus URL publik (alamat jaringan internal ditolak demi keamanan) dan kredensial disimpan terenkripsi. Saat menerbitkan, klik Tes Koneksi untuk memastikan koneksi berhasil โ€” bila gagal, pesan error tampil langsung. IT dapat memantau/menjalankan/menonaktifkan semua job di IT Admin โ†’ Penarik Data.

Datanya sering berubah โ€” bisa dashboard tampil data terbaru otomatis?

Bisa. Taruh file data (Excel/CSV) di folder OneDrive project Anda, lalu dashboard mengambilnya lewat koneksi data portal: /api/projects/<dept>/<id>/data?file=<nama-file> (kalau cuma 1 file data, ?file= boleh dikosongkan). Begitu Excel di OneDrive diperbarui, dashboard ikut terbaru saat di-refresh. Verifikasi koneksi di Kelola Project โ†’ Edit Project โ†’ Cek Koneksi Data.

Saya bisa pakai Google Sheets sebagai database?

Tidak perlu (dan tidak disarankan โ€” API key bisa bocor di frontend). Untuk data yang sering berubah, pakai data live dari OneDrive (lihat FAQ di atas). Untuk data tetap (snapshot), cukup embed sebagai file .json di project.

Project saya perlu menyimpan/mengelola record (tiket, form, approval) โ€” bukan cuma menampilkan data?

Itu pakai Data Bridge โ€” kotak data bersama supaya dua tampilan (mis. form requester di services + dashboard admin di portal) bisa baca/tulis record yang sama dan sinkron. Fitur ini sudah aktif. Cara termudah: terbitkan semua project terkait dalam 1 ZIP (lihat FAQ "beberapa halaman yang saling terhubung" di atas) โ€” portal membuat & menghubungkan Bridge otomatis. Alternatif: IT dapat membuat/menghubungkan Bridge manual lewat menu Data Bridge di IT Admin.

Project saya juga untuk pihak luar (mitra/vendor/outlet). Bagaimana?

Ada 2 setelan di Buat/Kelola Project: (1) Visibility = siapa yang boleh lihat, dan (2) Akses via = di domain mana project muncul (Portal saja / Services saja / Portal & Services). Supaya tampil di services.estehindonesia.com, set Akses via = "Services saja" (atau "Portal & Services") DAN visibility Public (Internal Only / Internal & External). Untuk membatasi ke mitra tertentu, pakai visibility Public (Internal & External) lalu IT menambahkan email mitra di tab Share. Catatan: visibility Public saja TIDAK lagi otomatis muncul di services โ€” Akses via harus diset ke Services. Pihak luar tidak pernah bisa masuk portal internal.

Boleh pakai gambar dari Unsplash / Pexels?

Boleh untuk demo. Untuk production, download gambarnya dan taruh di folder images/ project Anda. Jangan hot-link URL eksternal โ€” tidak handal jika web sumbernya down.

File saya terlalu besar (lebih dari 100MB)?

Limit per file 100MB. Untuk video/file besar, simpan di OneDrive dan tempel link saja di project. Atau optimalkan: kompres video (Handbrake), kompres gambar (TinyPNG), pakai SVG untuk ikon.

Saat pakai Claude (Cowork), Claude mengubah file di luar folder project saya. Kenapa?

Itu terjadi kalau Anda meng-mount folder yang terlalu luas ke Claude. Best practice: 1 project = 1 folder khusus, dan mount hanya folder itu. Kalau Claude tetap menyentuh file lain, tegaskan di prompt: "Hanya buat/ubah file di dalam folder project ini; anggap folder lain read-only." Kalau perlu, mulai chat baru.

Bagaimana cara update project yang sudah ke-upload?

Buka Kelola Project โ†’ tab File โ†’ upload ulang file yang berubah. File dengan nama sama akan ter-replace otomatis. URL project tetap sama. (Untuk data live OneDrive, cukup perbarui file Excel/CSV-nya di OneDrive โ€” tidak perlu re-upload project.)

Saya lupa password portal. Cara reset?

Klik "Lupa password?" di halaman login โ†’ masukkan email Anda โ†’ cek inbox untuk link reset (link berlaku 24 jam). Kalau email tidak masuk, cek folder Spam atau hubungi IT.

Hubungi IT Department

Untuk pertanyaan, request fitur, masalah teknis, atau request upgrade role:

Format Laporan Masalah yang Baik

Bantu IT bantu Anda lebih cepat. Sertakan info berikut saat melapor:

  1. Email akun Anda di portal.
  2. URL halaman saat masalah terjadi (contoh: /creator/manage?slug=...).
  3. Apa yang Anda coba lakukan (langkah-langkah).
  4. Hasil yang muncul vs hasil yang diharapkan.
  5. Screenshot kalau memungkinkan.
โœ“

Fitur Data Bridge โ€” Tersedia

Data Bridge membuat satu sistem bisa punya beberapa tampilan yang saling sinkron โ€” misalnya form pembuatan tiket di services.estehindonesia.com (untuk pihak luar) dan dashboard pengelolaan di portal.estehindonesia.com (untuk staf), berbagi data tiket yang sama. Pengaturan bridge dilakukan IT di menu Data Bridge (admin): buat bridge, attach project, lalu project memanggil SDK window.CoworkBridge('id-bridge'). Schema standards di bawah memastikan data antar project konsisten.

Apa itu Data Bridge?

Data Bridge adalah cara menghubungkan 2 project atau lebih agar bisa berbagi data secara otomatis. Anggap seperti kulkas bersama di kantor โ€” setiap project bisa menaruh data, dan project lain yang butuh bisa mengambil. Tanpa kirim file email, tanpa copy-paste manual, tanpa database baru.

Contoh nyata di Esteh:

  • Tim purchasing update progress negosiasi lokasi outlet โ†’ otomatis muncul di project timeline opening outlet milik marketing.
  • Tim HR update status recruitment manager outlet โ†’ otomatis muncul di dashboard CEO.
  • Tim sekretaris input tiket โ†’ otomatis terlihat oleh IT untuk dikerjakan, dan oleh user untuk tracking status.

Kapan Butuh Bridge?

Gunakan Bridge jika:

  • Data perlu dilihat lebih dari 1 project
  • Data harus selalu sinkron antar tim
  • Ada workflow lintas department
  • Project A menulis, project B membaca

Tidak perlu Bridge jika:

  • Project standalone, tidak butuh data project lain
  • Data hanya untuk internal project itu
  • Project hanya menampilkan informasi statis
  • Data sangat sensitif (gunakan project private)

Schema Standards โ€” Nama Field Wajib

Gunakan nama field standar ini agar bridge antar project konsisten. Jangan pakai variasi seperti title, nama, atau nm untuk field yang sama.

Field Tipe Wajib? Contoh
idstringWajibTASK-PUR-001
namestringWajib"Negosiasi Lokasi Jakarta"
departmentenumWajibpurchasing
owneremailWajib"[email protected]"
statusenumWajibin_progress
progressnumber 0โ€“100Opsional65
priorityenumOpsionalhigh
created_atISO 8601Auto"2026-05-24T03:12:00Z"
updated_atISO 8601Auto"2026-05-24T08:45:00Z"
due_dateISO dateOpsional"2026-06-30"
tagsarrayOpsional["jakarta", "lokasi"]

Schema Standards โ€” ID Pattern

Pola ID record yang disepakati seluruh perusahaan. Format: {TYPE}-{SCOPE}-{NUMBER}

Jenis Pattern Contoh
TaskTASK-{DEPT3}-{NNN}TASK-PUR-001
TiketTKT-{YYMMDD}-{NNN}TKT-260524-001
MilestoneMS-{PROJECT}-{NN}MS-OPENJKT-01
DokumenDOC-{DEPT3}-{YYMM}-{NNN}DOC-FIN-2605-001
AssetAST-{CATEGORY}-{NNN}AST-IT-001
VendorVND-{NNN}VND-0042
ApprovalAPR-{YYMMDD}-{NNN}APR-260524-005

Kode department (3-letter): PUR (purchasing), HR (HR), IT (IT), MKT (marketing), FIN (finance), SEK (sekretaris), OPS (operations).

Schema Standards โ€” Status Enum

Daftar nilai status standar berdasarkan jenis record. Jangan menambah status baru tanpa konfirmasi IT Admin.

Jenis Status Allowed
Taskpending โ†’ in_progress โ†’ done (boleh cancelled, blocked)
Ticketopen โ†’ assigned โ†’ in_progress โ†’ resolved โ†’ closed
Approvaldraft โ†’ submitted โ†’ review โ†’ approved (boleh rejected)
Milestonenot_started โ†’ in_progress โ†’ done (boleh delayed)

Priority enum: low, medium, high, urgent.

Cara menghubungkan project ke Data Bridge

Cara termudah kini otomatis lewat wizard Terbitkan dari ZIP.

Rekomendasi โ€” otomatis lewat Terbitkan dari ZIP

Kalau beberapa project perlu berbagi data (mis. dashboard admin + halaman tracking publik), cukup masukkan semuanya dalam 1 ZIP. Di manifest portal.json, Claude Anda mengisi bagian bridge (nama + tipe record) dan bridge_role tiap project (write = mengelola data, read = menampilkan). Saat Anda klik Terbitkan, portal membuat Data Bridge dan menghubungkan semua project OTOMATIS โ€” tanpa menyalin prompt tambahan atau menyetel apa pun di menu admin. Panduan lengkap ada di menu Buat Baru โ†’ Terbitkan dari ZIP.

Untuk IT/advanced yang membangun manual di luar wizard, referensi instruksi SDK Bridge:

============================================================
TAMBAHAN INSTRUKSI: KONEKSI KE DATA BRIDGE (OPSIONAL)
============================================================

KAPAN PAKAI BAGIAN INI:
Project Anda butuh BERBAGI DATA dengan project lain di portal
(misal: dashboard CEO menarik data dari project HR & Finance).
Kalau project Anda berdiri sendiri (tidak share data ke project
lain), ABAIKAN bagian ini โ€” jangan paste ke chat Claude.

CATATAN: Schema field, ID pattern, & status enum WAJIB tetap
ikuti aturan di Section 5 STRUKTUR DATA RECORD pada prompt utama
di atas. Bagian ini HANYA tambahan cara konek ke Bridge.

------------------------------------------------------------
DETAIL BRIDGE (isi sesuai info dari IT Admin Anda):

NAMA BRIDGE        : [contoh: outlet-jakarta-pipeline]
ROLE PROJECT INI   : [pilih satu: Read-Only / Read & Write]
TIPE RECORD UTAMA  : [contoh: task, ticket, approval, milestone]

------------------------------------------------------------
1. CARA CONNECT KE BRIDGE (tulis di file JavaScript project):

   // Inisialisasi koneksi (ganti NAMA_BRIDGE sesuai isi di atas)
   const bridge = window.CoworkBridge('NAMA_BRIDGE');

   // Ambil SEMUA data dari bridge
   const semuaData = await bridge.list();

   // Ambil data dengan filter (contoh: hanya marketing)
   const filtered = await bridge.list({
     filter: { department: 'marketing' }
   });

   // Ambil 1 data berdasarkan ID
   const satuRecord = await bridge.get('TASK-MKT-001');

   // Tambah data baru (HANYA kalau role Read & Write)
   await bridge.create({
     id: 'TASK-MKT-002',
     name: 'Buat konten Instagram Hari Kemerdekaan',
     department: 'marketing',
     status: 'pending',
     owner: '[email protected]'
   });

   // Update data (HANYA kalau role Read & Write)
   await bridge.update('TASK-MKT-001', { status: 'done' });

   // Auto-refresh tiap 30 detik (data berubah โ†’ UI re-render)
   bridge.onChange((records) => {
     renderTable(records);
   });

------------------------------------------------------------
2. UI YANG WAJIB ADA:

   - LOADING state : tampilkan skeleton/spinner saat fetch pertama
                     (jangan tampilkan halaman kosong)
   - EMPTY state   : kalau bridge belum punya data, tampilkan pesan
                     ramah seperti "Belum ada data. Tambah record
                     pertama Anda untuk memulai."
   - ERROR state   : kalau bridge tidak available, tampilkan banner
                     kuning "Bridge tidak terhubung. Coba refresh."
                     Jangan crash atau halaman blank.
   - SYNC indikator: tampilkan teks kecil di pojok layar seperti
                     "Sync terakhir: 12 detik lalu"

------------------------------------------------------------
3. SECURITY (penting, jangan dilewat):

   - Kalau ROLE = Read-Only:
     JANGAN tampilkan tombol "Tambah", "Edit", atau "Hapus".
     Sembunyikan atau disable tombol-tombol tersebut.
   - JANGAN tampilkan field yang nama-nya diawali "internal_"
     atau "private_". Field tersebut khusus untuk sistem.
   - Field standar (id, name, department, status, owner,
     progress) AMAN ditampilkan ke semua user.

------------------------------------------------------------
4. AUTO-FILL (jangan hard-code, ambil dari sistem):

   - owner       : window.CoworkUser.email
                   (email user yang sedang login)
   - department  : window.CoworkProject.department
                   (department project ini)
   - created_at  : sistem isi otomatis saat create
   - updated_at  : sistem isi otomatis saat update

------------------------------------------------------------
CATATAN:
- Bridge BUKAN realtime โ€” data refresh tiap 30 detik (polling).
  Untuk chat atau notifikasi instan, JANGAN pakai Bridge.
- Sebelum project di-upload, pastikan Bridge sudah dibuat oleh
  IT Admin di menu Data Bridge portal. Tanya admin IT kalau
  Anda tidak yakin nama bridge apa yang dipakai.

Catatan: Lewat wizard ZIP, bridge dibuat otomatis. Di luar itu, IT dapat membuat/menghubungkan bridge manual di menu Data Bridge (Admin Portal).

FAQ Data Bridge

Saya creator, bisakah saya buat bridge sendiri tanpa minta IT?

Bisa, untuk bridge yang melibatkan project di department Anda sendiri. Bridge lintas department butuh approval IT Admin (otomatis ada notifikasi).

Bagaimana kalau saya butuh field yang tidak ada di Schema Standards?

Boleh tambah field custom dengan prefix custom_. Contoh: custom_vendor_score. Field custom tidak otomatis kompatibel dengan project lain โ€” gunakan hanya untuk satu bridge.

Apakah Data Bridge real-time?

Polling tiap 30 detik (bisa konfigurasi 5โ€“300 detik). Untuk real-time penuh (chat), gunakan tool lain.

Project saya error "Bridge not found" โ€” kenapa?

Tiga kemungkinan: nama bridge salah ketik di SDK, project belum dihubungkan ke bridge di portal, atau bridge sudah di-archive admin.

Bagaimana backup data bridge?

Semua data bridge tersimpan di /projects/_data/. IT Admin punya tombol Download Backup di Admin Portal yang generate file .tar.gz.