# Triwala Office — AI Development Guide

## Project Context

**Triwala Office** adalah aplikasi manajemen perkantoran enterprise berbasis web yang dibangun dengan **Laravel 13 + Inertia.js + React + TypeScript**. Mencakup modul: Manajemen Karyawan & Magang, Absensi (GPS Geofencing + QR Code), Payroll/Gaji, Cuti/Izin/Lembur, Keuangan, Kegiatan/Agenda, Buku Tamu, Jurnal Harian & Penilaian Magang, Projek, Survey & Konsultasi.

**Root Path**: `c:\laragon6\www\triwala-office\`

## Tech Stack

| Layer | Teknologi |
|-------|-----------|
| Backend | Laravel 13, PHP ≥ 8.3 |
| Frontend | Inertia.js + React + TypeScript (Vite) |
| Styling | Tailwind CSS + Lucide Icons |
| RBAC | Spatie Laravel Permission v8 |
| Export | DomPDF (PDF) + Maatwebsite Excel |
| Database | MySQL / MariaDB |

## Mandatory Architecture

```
Controller → Service → Repository → Model
```

> **WAJIB**: Business logic di Service. Query Eloquent di Repository. Controller hanya validasi & return Inertia.

## Skill Files

Aktifkan skill **`triwala-enterprise`** untuk panduan lengkap. File tersedia di `.skills/triwala-enterprise/`:

| File | Kapan Dibaca |
|------|-------------|
| `architecture.md` | Menambah fitur baru, memahami alur data, menyentuh backend/frontend |
| `rbac.md` | Bekerja dengan permission, middleware route, atau role baru |
| `attendance.md` | Menyentuh modul absensi (QR scan, geofence, rekap) |
| `coding-rules.md` | **SELALU** dibaca sebelum menulis kode baru |

## Quick Commands

```bash
# Dev server (semua sekaligus via composer)
composer dev

# Atau manual:
npm run dev          # Frontend (Vite)
php artisan serve    # Backend

# Database
php artisan migrate:fresh --seed

# Testing
php artisan test
```

## Critical Rules

1. **Arsitektur**: Controller → Service → Repository → Model. Tidak boleh dilanggar.
2. **RBAC**: Semua route baru wajib pakai `permission:module.action` middleware.
3. **Gaji Formula** (JANGAN diubah sembarangan):
   - `Total Pendapatan = gaji_pokok + bonus + lembur + tunjangan + kehadiran_presentasi + survey_pelatihan + konsultasi + tambahan[penerimaan]`
   - `Zakat = Total Pendapatan × 2.5%`
   - `Total Gaji = Total Pendapatan − tambahan[potongan] − Zakat`
4. **Permission baru**: Tambahkan ke `PermissionSeeder` + `RolePermissionSeeder`.
5. **UI Tema**: Emerald Green — konsisten dengan komponen yang sudah ada.
6. **Audit Trail**: Aksi penting harus tercatat ke audit log.
7. **Data Isolation**: Jangan expose data lintas divisi/role tanpa izin.
