Browse Source

docs: session handover note + feedback feature docs + CHANGELOG v1.4.0

master
Budi Setiawan 2 weeks ago
parent
commit
06ad958d82
  1. 234
      SESSION-HANDOVER.md

234
SESSION-HANDOVER.md

@ -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`
Loading…
Cancel
Save