From 015b1473ef4d78e919b0a50e3538746ed3583588 Mon Sep 17 00:00:00 2001 From: rbsetiawan Date: Mon, 29 Jun 2026 10:37:15 +0700 Subject: [PATCH] docs: tambah Gitea Integration ke backlog (OAuth2, Issues, Repo Explorer) --- backlog.md | 100 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 93 insertions(+), 7 deletions(-) diff --git a/backlog.md b/backlog.md index 765fe91..2427a8e 100644 --- a/backlog.md +++ b/backlog.md @@ -82,24 +82,39 @@ --- -## 🔴 Fase 5 — Mail UI & Monitoring *(Butuh Mailcow API)* +## 🔴 Fase 5 — Gitea Integration *(Tidak ada dependency — bisa mulai kapanpun)* +> Gitea v1.16.5 sudah running di git.gisportal.id (10.100.1.41:3000) dengan REST API aktif. + +| # | Tugas | Estimasi | +|---|---|---| +| **16** | **Setup OAuth2 Gitea** — daftarkan super apps sebagai OAuth client di Gitea | 0.5 hari | +| **17** | **`src/lib/gitea-client.ts`** — API client (issues, repos, user) dengan token/OAuth | 1 hari | +| **18** | **FE: Gitea Issues** — list issues per repo, form buat issue, detail+komentar | 2-3 hari | +| **19** | **FE: Repo Explorer** — list repo milik user, branch, commit history, releases | 2-3 hari | +| **20** | **Profile: Gitea Token** — simpan personal access token di profile (fallback jika tidak pakai OAuth) | 0.5 hari | + +--- + +## 🔴 Fase 6 — Mail UI & Monitoring *(Butuh Mailcow API)* | # | Tugas | Estimasi | |---|---|---| -| **16** | **Mail UI** — Inbox, Sent, Draft, Contacts, Calendar, Tasks, Rules | 5-7 hari | -| **17** | **Monitoring alert detail** dialog (standar UI ADR) | 1 hari | +| **21** | **Mail UI** — Inbox, Sent, Draft, Contacts, Calendar, Tasks, Rules | 5-7 hari | +| **22** | **Monitoring alert detail** dialog (standar UI ADR) | 1 hari | --- -## 🔴 Fase 6 — Infrastruktur *(Bisa paralel kapanpun)* +## 🔴 Fase 7 — Infrastruktur *(Bisa paralel kapanpun)* | # | Tugas | Estimasi | |---|---|---| -| **18** | **Mikrotik** — PPP login via LDAP | 1 hari | -| **19** | **Windows Server AD** — LDAP SSO + SAML | 2-3 hari | +| **23** | **Mikrotik** — PPP login via LDAP | 1 hari | +| **24** | **Windows Server AD** — LDAP SSO + SAML | 2-3 hari | --- > **Urutan pengerjaan**: -> **① Content/Home Feed** → **② Mailcow** → **③ Zammad+Ticketing** → **④ Push Notif** → **⑤ Mail UI** → **⑥ Infra** +> **① Content/Home Feed** → **② Mailcow** → **③ Zammad+Ticketing** → **④ Push Notif** → **⑤ Gitea** → **⑥ Mail UI** → **⑦ Infra** +> +> *(Gitea Fase 5 bisa dikerjakan paralel dengan Fase 2-4 karena tidak ada dependency)* --- # ADR — Standar Dialog Preview / Edit (UI Pattern) @@ -249,6 +264,77 @@ Push Service API (FastAPI, port 17000) - 📢 **Broadcast IT**: pengumuman, maintenance, downtime - *(Future)* 📊 Monitoring: alert Zabbix +--- +# Gitea Integration (`git.gisportal.id`) + +## Status +- Gitea v1.16.5 sudah running di `10.100.1.41:3000` → domain `git.gisportal.id` +- REST API aktif (`/api/v1/`) — tidak perlu install apapun, langsung integrasi +- Swagger UI tersedia di `git.gisportal.id/api/swagger` + +## Auth Strategy +**Pilihan: OAuth2** (rekomendasi) +- Daftarkan super apps sebagai OAuth Application di Gitea (Settings → Applications → OAuth2) +- Callback URL: `https://my.gisportal.id/auth/gitea/callback` +- Flow: user klik "Hubungkan Gitea" → redirect OAuth → dapat access token → simpan di session/DB +- **Fallback**: user input Personal Access Token manual di halaman Profile + +## API Endpoint yang Digunakan +``` +Auth: +GET /user — info user yang login +GET /users/{username} — profil user + +Issues: +GET /repos/{owner}/{repo}/issues — list issues (filter: state, label, assignee) +POST /repos/{owner}/{repo}/issues — buat issue baru +GET /repos/{owner}/{repo}/issues/{index} — detail issue +PATCH /repos/{owner}/{repo}/issues/{index} — update (close, assign, label) +GET /repos/{owner}/{repo}/issues/{index}/comments — komentar +POST /repos/{owner}/{repo}/issues/{index}/comments — tambah komentar +GET /repos/{owner}/{repo}/labels — label/kategori tersedia + +Repositories: +GET /user/repos — semua repo milik user +GET /repos/{owner}/{repo} — detail repo (stars, forks, size, last push) +GET /repos/{owner}/{repo}/branches — daftar branch +GET /repos/{owner}/{repo}/commits — commit history +GET /repos/{owner}/{repo}/releases — releases / tags +GET /repos/search?q=&topic= — search repo +``` + +## FE Tasks + +### Setup & Auth +- [ ] Daftarkan OAuth2 App di Gitea admin panel +- [ ] `src/lib/gitea-client.ts` — wrapper API dengan Bearer token +- [ ] Route `GET /api/gitea/callback` — handle OAuth callback, simpan token +- [ ] Profile page: tombol "Hubungkan Akun Gitea" + status connected +- [ ] Tambah `gitea_token` ke user session/store + +### Halaman Issues (`/gitea/issues`) +- [ ] List issues dari semua repo yang diikuti user (filter: open/closed, label, repo) +- [ ] Form buat issue — pilih repo, judul, body (Markdown), label, assignee +- [ ] Detail issue — info lengkap + thread komentar + tombol close/reopen +- [ ] Badge count issue open di sidebar/navbar + +### Halaman Repo Explorer (`/gitea/repos`) +- [ ] Grid/list repo milik user + starred repos +- [ ] Detail repo — README, branch list, commit history, releases +- [ ] Link ke Gitea web untuk operasi lebih lanjut (clone, PR, dll) + +## Permission (tambah ke group_permissions) +| Permission | Fungsi | +|---|---| +| `gitea.view` | Lihat issue & repo (semua user yang punya akun Gitea) | +| `gitea.create_issue` | Buat issue baru | +| `gitea.manage` | Admin Gitea (close issue, assign, label) | + +## Catatan +- Issue dari super apps dan Gitea web **sinkron sempurna** — data disimpan di Gitea, super apps hanya read/write via API +- Tidak perlu database tambahan di super apps untuk Gitea — semua state di Gitea +- Bisa jadi alternatif/pelengkap Zammad untuk bug tracking development (Zammad = IT helpdesk, Gitea = dev issues) + --- # Content / Posting Microservice (`geonet-content`)