From 7d73b3cd0556afdb09a0f06325c93731c5e166c6 Mon Sep 17 00:00:00 2001 From: andri Date: Mon, 1 Dec 2025 11:02:22 +0000 Subject: [PATCH] Add akses_rt.md --- akses_rt.md | 182 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 akses_rt.md diff --git a/akses_rt.md b/akses_rt.md new file mode 100644 index 0000000..f076106 --- /dev/null +++ b/akses_rt.md @@ -0,0 +1,182 @@ +```python?code_reference&code_event_index=2 +import pandas as pd + +# Read the CSV file +try: + df = pd.read_csv("akun rt teraskota_281125.xlsx - csv_rt.csv") +except: + # Fallback for different delimiters commonly used in regions + df = pd.read_csv("akun rt teraskota_281125.xlsx - csv_rt.csv", sep=';') + +# Display the first few rows and info to understand the structure +print("First 5 rows:") +print(df.head().to_markdown(index=False, numalign="left", stralign="left")) + +print("\nInfo:") +print(df.info()) + +``` + +```text?code_stdout&code_event_index=2 +First 5 rows: +| username | nama_lengkap | kecamatan | kelurahan | rw | rt | +|:------------------|:--------------------|:-----------------|:-------------------|:-----|:-----| +| irwan11 | Irwan | MAGELANG SELATAN | JURANGOMBO SELATAN | 1 | 1 | +| amrihpriyono | AMRIH PRIYONO | MAGELANG SELATAN | JURANGOMBO SELATAN | 1 | 2 | +| hudidanuwuryanto | HUDI DANU WURYANTO | MAGELANG SELATAN | JURANGOMBO SELATAN | 1 | 3 | +| tuirwanto | TUIRWANTO | MAGELANG SELATAN | JURANGOMBO SELATAN | 1 | 4 | +| emanindrasulaeman | EMAN INDRA SULAEMAN | MAGELANG SELATAN | JURANGOMBO SELATAN | 1 | 5 | + +Info: + +RangeIndex: 1029 entries, 0 to 1028 +Data columns (total 6 columns): + # Column Non-Null Count Dtype +--- ------ -------------- ----- + 0 username 1029 non-null object + 1 nama_lengkap 1029 non-null object + 2 kecamatan 1029 non-null object + 3 kelurahan 1029 non-null object + 4 rw 1029 non-null int64 + 5 rt 1029 non-null int64 +dtypes: int64(2), object(4) +memory usage: 48.4+ KB +None + +``` + +Berdasarkan analisis file `akun rt teraskota_281125.xlsx - csv_rt.csv`, file ini berisi data master akun untuk **1.029 Ketua RT** di Kota Magelang. + +Data ini krusial karena menjadi "kunci masuk" bagi user RT untuk mengakses fitur Renja RT di aplikasi ORARIBET. Berikut adalah rancangan spesifikasi API yang siap Anda berikan ke Copilot/Developer. + +----- + +### **Spesifikasi API Service: Modul Autentikasi & Akun RT** + +**Base URL:** `/api/v2/auth` + +#### **1. Analisis Struktur Data (Database)** + +Sebelum membuat API, data dari CSV harus dimasukkan (seeding) ke database dengan struktur berikut: + + * `username` (PK/Unique): *String* (Contoh: "irwan11") + * `password`: *Hash* (Note: Karena di CSV tidak ada password, set **default password** saat migrasi, misal: `Magelang2025!` atau sama dengan username). + * `nama_lengkap`: *String* + * `wilayah`: + * `kecamatan`: *String* + * `kelurahan`: *String* + * `rw`: *Integer* + * `rt`: *Integer* + +----- + +#### **2. Endpoint Login RT** + +Digunakan oleh Ketua RT untuk masuk ke aplikasi. Endpoint ini akan mencocokkan username dari CSV dan mengembalikan Token akses serta scope wilayahnya. + + * **Endpoint:** `POST /login-rt` + * **Description:** Otentikasi user RT dan pengambilan token sesi. + * **Request Body:** + ```json + { + "username": "irwan11", + "password": "password_rahasia" + } + ``` + * **Response Body (Success 200):** + ```json + { + "success": true, + "message": "Login berhasil", + "data": { + "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", // JWT Token + "user": { + "username": "irwan11", + "nama_lengkap": "Irwan", + "role": "KETUA_RT", + "scope_wilayah": { + "kecamatan": "MAGELANG SELATAN", + "kelurahan": "JURANGOMBO SELATAN", + "rw": "001", // Diformat string 3 digit + "rt": "001" // Diformat string 3 digit + } + } + } + } + ``` + +----- + +#### **3. Endpoint Cek Profil (Me)** + +Digunakan aplikasi untuk memastikan siapa yang sedang login dan membatasi data Renja hanya untuk RT yang bersangkutan. + + * **Endpoint:** `GET /me` + * **Header:** `Authorization: Bearer ` + * **Response Body:** + ```json + { + "success": true, + "data": { + "akun": { + "username": "amrihpriyono", + "nama_lengkap": "AMRIH PRIYONO", + "status_aktif": true + }, + "lokasi_tugas": { + "kecamatan": "MAGELANG SELATAN", + "kelurahan": "JURANGOMBO SELATAN", + "rw": 1, + "rt": 2, + "kode_area": "33.71.01.1004.01.02" // Optional: Kode Kemendagri generated + }, + "hak_akses": [ + "input_renja", + "lihat_profil_rt", + "cetak_berita_acara" + ] + } + } + ``` + +----- + +#### **4. Endpoint List Master RT (Khusus Admin/Kelurahan)** + +Digunakan oleh Admin Kota atau Lurah untuk melihat daftar Ketua RT di wilayahnya (berdasarkan data CSV tadi). + + * **Endpoint:** `GET /master/rt-list` + * **Query Params:** + * `kelurahan` (Optional, filter by nama kelurahan) + * `rw` (Optional, filter by RW) + * **Response Body:** + ```json + { + "success": true, + "total_data": 5, // Pagination info + "data": [ + { + "username": "hudidanuwuryanto", + "nama": "HUDI DANU WURYANTO", + "wilayah": "RT 003 / RW 001, JURANGOMBO SELATAN" + }, + { + "username": "tuirwanto", + "nama": "TUIRWANTO", + "wilayah": "RT 004 / RW 001, JURANGOMBO SELATAN" + } + // ... dst sesuai data CSV + ] + } + ``` + +----- + +### **Instruksi Khusus untuk Copilot/Developer** + +1. **Data Seeding:** Instruksikan untuk membuat script `seeder` database yang membaca file `csv_rt.csv`. +2. **Default Password:** Karena file CSV tidak memiliki kolom password, buat logika di backend: + * *Skenario A:* Set default password = `username`. + * *Skenario B:* Set default password global, misal `MagelangMaju!`. + * User **WAJIB** dipaksa ganti password saat login pertama (*Force Change Password*). +3. **Format Wilayah:** Perhatikan kolom `rw` dan `rt` di CSV bertipe Integer (contoh: `1`), namun di sistem API Teraskota sebelumnya sering menggunakan String 3 digit (contoh: `"001"`). Lakukan *padding* (penambahan nol di depan) di backend agar sinkron dengan API lain. \ No newline at end of file