|
|
|
|
@ -0,0 +1,234 @@
@@ -0,0 +1,234 @@
|
|
|
|
|
# Session Handover — Super Apps GIS Portal |
|
|
|
|
|
|
|
|
|
> **Dibuat:** 2026-07-01 |
|
|
|
|
> **Untuk:** AI Agent / Developer yang melanjutkan pekerjaan |
|
|
|
|
> **Status terakhir:** Feedback feature selesai, Zammad siap di-deploy |
|
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
## BACA INI DULU SEBELUM APAPUN |
|
|
|
|
|
|
|
|
|
1. Baca `Workspace-Context.md` → rules dan policy workspace |
|
|
|
|
2. Baca `ARCHITECTURE.md` → 7 diagram Mermaid arsitektur lengkap |
|
|
|
|
3. Baca `backlog.md` → roadmap semua fase + detail teknis tiap microservice |
|
|
|
|
4. Baca `server-audit/host.md` → daftar server, SSH command, catatan ops |
|
|
|
|
5. Baca `server-audit/deploy-log.md` → log semua deploy yang sudah dilakukan |
|
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
## Ringkasan Proyek |
|
|
|
|
|
|
|
|
|
**Super Apps GIS Portal** adalah employee portal internal berbasis PWA untuk organisasi GIS. |
|
|
|
|
|
|
|
|
|
| Komponen | URL | Stack | Status | |
|
|
|
|
|----------|-----|-------|--------| |
|
|
|
|
| Frontend PWA | `my.gisportal.id` | Next.js 16 + React 19 | ✅ Live | |
|
|
|
|
| Backend API | `console.gisportal.id` | Laravel 11 | ✅ Live | |
|
|
|
|
| Asset/Agent Service | `agent.gisportal.id` | FastAPI | ✅ Live | |
|
|
|
|
| Storage | `file.gisportal.id` | QNAP OSS S3 | ✅ Live | |
|
|
|
|
| Auth | `10.100.1.40` | Active Directory LDAP | ✅ Live | |
|
|
|
|
| Ticketing | `ticket.gisportal.id` | Zammad | ⏳ Belum deploy | |
|
|
|
|
| Mail | `mail.gisportal.id` | Mailcow | ⏳ Belum deploy | |
|
|
|
|
|
|
|
|
|
**Semua Docker di server `10.100.1.24`.** |
|
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
## Apa yang Sudah Selesai (sesi ini: 1 Jul 2026) |
|
|
|
|
|
|
|
|
|
### 1. Feature Feedback (Bug Report & Saran) |
|
|
|
|
- **FE:** `FeedbackButton` + `FeedbackDialog` floating di semua halaman |
|
|
|
|
- **Backend:** `POST/GET/PATCH /api/v1/feedback` di geonet-console |
|
|
|
|
- **DB:** tabel `feedback` sudah ter-migrate di production |
|
|
|
|
- **Docs:** `mysupperapps_FE_PWA/docs/features/feedback.md` |
|
|
|
|
- **Catatan deploy:** container geonet-console tidak mount source dari host → wajib `docker cp` untuk update file tanpa rebuild |
|
|
|
|
|
|
|
|
|
### 2. Disk Cleanup Server 10.100.1.24 |
|
|
|
|
- Disk sebelumnya: **98% penuh** (1.3 GB free) |
|
|
|
|
- Root cause: Docker build cache 45.29 GB |
|
|
|
|
- Tindakan: `docker builder prune -af` |
|
|
|
|
- Hasil: **50% (26 GB free)** — cukup untuk deploy Zammad |
|
|
|
|
|
|
|
|
|
### 3. SSH Key Setup |
|
|
|
|
- `10.100.1.51` (ArcGIS Base Dev) → passwordless via `id_ed25519_geonet_proxmox` |
|
|
|
|
- `10.100.1.52` (ArcGIS DS Object) → passwordless via `id_ed25519_geonet_proxmox` |
|
|
|
|
- `10.100.1.101` & `10.100.1.102` (Proxmox) → passwordless |
|
|
|
|
|
|
|
|
|
### 4. USB Passthrough Proxmox |
|
|
|
|
- VM 103 di `10.100.1.102` → PCI controller `00:1a.0` (USB 2.0 bus 1) di-passthrough |
|
|
|
|
|
|
|
|
|
### 5. GeoNetAgent v0.1.12 |
|
|
|
|
- Tambah scheduled task shutdown (`GeoNetAgent-Report-Shutdown`) |
|
|
|
|
- Deploy ke `agent.gisportal.id/install/` |
|
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
## Yang Harus Dikerjakan Selanjutnya |
|
|
|
|
|
|
|
|
|
### PRIORITAS UTAMA: Deploy Zammad |
|
|
|
|
|
|
|
|
|
**Kenapa Zammad dulu?** |
|
|
|
|
- Disk sudah cukup (26 GB free, Zammad butuh ~15 GB) |
|
|
|
|
- RAM cukup (9.4 GB available) |
|
|
|
|
- Feedback feature sudah live tapi belum ada yang handle tiket |
|
|
|
|
- Permission `ticketing.*` sudah ada di sistem, tinggal diaktifkan |
|
|
|
|
- Halaman `/ticket` di sidebar sudah ada, tinggal disambungkan |
|
|
|
|
|
|
|
|
|
**Langkah deploy Zammad:** |
|
|
|
|
1. Hapus dangling images untuk tambah ruang: `docker image prune -f` (+7.9 GB) |
|
|
|
|
2. Buat Docker stack di `/opt/stacks/zammad` |
|
|
|
|
3. Setup domain `ticket.gisportal.id` di Nginx `10.100.1.24` |
|
|
|
|
4. Konfigurasi Zammad: LDAP ke `10.100.1.40`, group mapping, SLA |
|
|
|
|
5. Integrasi ke geonet-console: feedback → auto-create tiket Zammad |
|
|
|
|
6. Buat halaman `/ticket` di FE |
|
|
|
|
|
|
|
|
|
**Detail teknis Zammad** → `backlog.md` section "Fase 3 — Ticketing" |
|
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
## Akses Server (SSH) |
|
|
|
|
|
|
|
|
|
```bash |
|
|
|
|
# App server (semua app Docker) |
|
|
|
|
ssh -m hmac-sha1 root@10.100.1.24 -p 22 |
|
|
|
|
|
|
|
|
|
# Database |
|
|
|
|
ssh -m hmac-sha1 root@10.100.1.25 -p 22 |
|
|
|
|
|
|
|
|
|
# Active Directory / LDAP |
|
|
|
|
ssh -m hmac-sha1 Administrator@10.100.1.40 -p 22 |
|
|
|
|
|
|
|
|
|
# Dev Proxmox |
|
|
|
|
ssh root@10.100.1.101 |
|
|
|
|
|
|
|
|
|
# Opr Proxmox |
|
|
|
|
ssh root@10.100.1.102 |
|
|
|
|
|
|
|
|
|
# ArcGIS Base (Dev) |
|
|
|
|
ssh dev51-base # atau: ssh Administrator@10.100.1.51 -p 22 |
|
|
|
|
|
|
|
|
|
# ArcGIS DS Object |
|
|
|
|
ssh dev13-object # atau: ssh Administrator@10.100.1.52 -p 22 |
|
|
|
|
|
|
|
|
|
# NAS QNAP |
|
|
|
|
ssh -i "$env:USERPROFILE\.ssh\id_ed25519" -o IdentitiesOnly=yes admin@10.100.1.10 -p 22 |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
## Deploy ke Server (cara yang benar) |
|
|
|
|
|
|
|
|
|
Container geonet-console dan my-portal **tidak mount source dari host**. Ada 2 cara update: |
|
|
|
|
|
|
|
|
|
### Cara A — docker cp (cepat, tidak permanen) |
|
|
|
|
```bash |
|
|
|
|
# Copy file ke container |
|
|
|
|
scp -o "MACs hmac-sha1" -P 22 <file-lokal> root@10.100.1.24:/opt/stacks/<service>/path/ |
|
|
|
|
ssh -m hmac-sha1 root@10.100.1.24 -p 22 "docker cp /opt/stacks/<service>/path/<file> <container>:/var/www/html/path/<file>" |
|
|
|
|
ssh -m hmac-sha1 root@10.100.1.24 -p 22 "docker exec <container> php artisan route:clear" |
|
|
|
|
``` |
|
|
|
|
> ⚠️ Perubahan hilang jika container di-recreate/rebuild |
|
|
|
|
|
|
|
|
|
### Cara B — rebuild image (permanen) |
|
|
|
|
```bash |
|
|
|
|
scp -o "MACs hmac-sha1" -P 22 <file> root@10.100.1.24:/opt/stacks/<service>/path/ |
|
|
|
|
ssh -m hmac-sha1 root@10.100.1.24 -p 22 "cd /opt/stacks/<service> && docker compose up -d --build" |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
## Struktur Repo Penting |
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
app on git/ |
|
|
|
|
├── ARCHITECTURE.md ← 7 diagram Mermaid (BACA INI) |
|
|
|
|
├── backlog.md ← Roadmap + detail teknis semua fase |
|
|
|
|
├── Workspace-Context.md ← Rules & policy untuk AI agent |
|
|
|
|
├── SESSION-HANDOVER.md ← File ini |
|
|
|
|
│ |
|
|
|
|
├── server-audit/ |
|
|
|
|
│ ├── host.md ← Daftar server + SSH commands |
|
|
|
|
│ └── deploy-log.md ← Log semua deploy |
|
|
|
|
│ |
|
|
|
|
├── mysupperapps_FE_PWA/ ← Frontend Next.js (repo terpisah, .gitignored di root) |
|
|
|
|
│ ├── context-index.md ← Entry point AI untuk FE |
|
|
|
|
│ ├── CHANGELOG.md ← Changelog FE (terbaru: v1.4.0 feedback) |
|
|
|
|
│ └── docs/ ← Dokumentasi lengkap FE |
|
|
|
|
│ ├── features/feedback.md ← Docs feature feedback |
|
|
|
|
│ └── ... |
|
|
|
|
│ |
|
|
|
|
└── server-connection/ |
|
|
|
|
└── geonet-console/ ← Source code Laravel backend |
|
|
|
|
├── context-index.md ← Entry point AI untuk backend |
|
|
|
|
├── routes/api.php ← Semua API routes |
|
|
|
|
├── app/Models/Feedback.php |
|
|
|
|
├── app/Http/Controllers/Api/V1/FeedbackController.php |
|
|
|
|
└── database/migrations/2026_07_01_000001_create_feedback_table.php |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
## Permission System (Ringkas) |
|
|
|
|
|
|
|
|
|
Permission dari LDAP group mapping di tabel `group_permissions`: |
|
|
|
|
|
|
|
|
|
| Group | Contoh Permission | |
|
|
|
|
|-------|------------------| |
|
|
|
|
| Domain Admins | Semua 17 permission | |
|
|
|
|
| IT-Admin | 13 permission | |
|
|
|
|
| IT-Staff | 11 permission | |
|
|
|
|
| Management | 9 permission | |
|
|
|
|
| Staff/HR | 6 permission | |
|
|
|
|
|
|
|
|
|
**Cara pakai di FE:** |
|
|
|
|
```tsx |
|
|
|
|
import { usePermission } from '@/lib/permissions' |
|
|
|
|
const canManage = usePermission('ticketing.manage') |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
Permission tersedia: `profile.view`, `profile.edit`, `dashboard.view`, `cmdb.*`, `monitoring.view`, `ticketing.*`, `mail.view`, `asset_mgmt.*`, `geonet_agent.view`, `admin.*` |
|
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
## Catatan Teknis Penting |
|
|
|
|
|
|
|
|
|
### geonet-console |
|
|
|
|
- Container name: `geonet-console` |
|
|
|
|
- Path di server: `/opt/stacks/geonet-console/` |
|
|
|
|
- Path di container: `/var/www/html/` |
|
|
|
|
- **Build cache sudah dibersihkan** — rebuild pertama akan lebih lambat |
|
|
|
|
- Migration terbaru: `2026_07_01_000001_create_feedback_table` (sudah run) |
|
|
|
|
|
|
|
|
|
### my-portal (Frontend) |
|
|
|
|
- Container name: `my-portal` |
|
|
|
|
- Path di server: `/opt/stacks/my-portal/` |
|
|
|
|
- Port: `8092 → 3000` |
|
|
|
|
- Build: Next.js standalone output di dalam Docker |
|
|
|
|
|
|
|
|
|
### QNAP OSS Storage |
|
|
|
|
- Endpoint internal: `http://10.100.1.10:8010` |
|
|
|
|
- Bucket: `super-apps` |
|
|
|
|
- Public URL: `https://file.gisportal.id/super-apps/` |
|
|
|
|
- Driver Laravel: `s3` dengan `use_path_style_endpoint=true` |
|
|
|
|
|
|
|
|
|
### Nginx Reverse Proxy |
|
|
|
|
- Config path: `/etc/nginx/conf.d/` |
|
|
|
|
- Reload: `nginx -s reload` |
|
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
## Roadmap Ringkas |
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
✅ Auth + Profile + Asset Mgmt + Admin Permission |
|
|
|
|
✅ GeoNet Agent v0.1.12 |
|
|
|
|
✅ Feedback System (bug/saran) |
|
|
|
|
⏳ Zammad (ticketing) ← NEXT |
|
|
|
|
⏳ Content/Feed ← Bisa paralel |
|
|
|
|
⏳ Mailcow (email server) |
|
|
|
|
⏳ Push Notification |
|
|
|
|
⏳ Mail UI |
|
|
|
|
⏳ KPI Dashboard |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
Detail lengkap → `backlog.md` |