# Changelog - Update Rekomendasaun Aihan (Ronde 2)

## 1. Copyright Footer
- Aumenta tulisan "Copyright© Presidente Autoridade do Municipio Covalima (PAM) 2026" iha parte klaran/okos liu husi kada pájina admin (`admin/includes/footer.php`).

## 2. Buton Buka (Search)
- Aumenta buton/formuláriu buka iha:
  - Lista Ai-han Tradisional (`aihan_list.php`) - buka tuir naran ai-han, kategoria, ka ingredientes.
  - Lista Kategoria (`kategoria_list.php`) - buka tuir naran/deskrisaun kategoria.
  - Lista Ingredientes (`ingredientes_list.php`) - buka tuir naran/deskrisaun ingredientes.

## 3. "Aumenta Dadus Foun" - la uza modal tan
- Tuir pedidu, buton "Aumenta Dadus Foun" iha Kategoria no Ingredientes agora LIGA DIRETU ba pájina formuláriu foun (`kategoria_form.php` / `ingredientes_form.php`), la uza pop-up modal tan.
- Formuláriu ida ne'e mós uza hodi Edita.

## 4. Buton CRUD - estilu formal
- Hotu-hotu buton (Aumenta, Edita, Hapus, Rai, Kansela, Buka) desenha fila hodi hanesan estilu ne'ebe formal/profisional (border klaru, kór neutru, la uza pill/gradient sobra), diak liu ba apresentasaun tugas final.

## 5. Titulu Sidebar + Foto Kantor
- Titulu sidebar troka husi "Ai-han Covalima" ba **"Sistema Rekomendasaun Aihan Tradisional Iha Munisípiu Covalima"**.
- Foto Kantor Munisípiu Covalima tama iha okos titulu ne'e (`assets/img/kantor_covalima.jpg`).

## 6. Kartu Total (Dashboard)
- Kór kartu "Total Ingredientes" troka husi purpura klaru ba purpura di'ak liu (#6c4a91) atu tekstu branku bele lee klaru.
- Aumenta liña divizór (`<hr>`) iha okos fila kartu total sira.
- Tekstu "Haree lista" hasai tiha, agora kartu klaru de'it ho ikon + numeru.
- Kartu sira kontinua funsiona hanesan link - click direto ba lista relevante (Total Ai-han -> Lista Ai-han, Total Kategoria -> Lista Kategoria, Total Ingredientes -> Lista Ingredientes, Total Rating -> Lista Rating).

## Ficheiru foun ne'ebe aumenta
- `backend-web/admin/kategoria_form.php`
- `backend-web/admin/ingredientes_form.php`
- `backend-web/assets/img/kantor_covalima.jpg`

## Nota
Favor testa iha servidor PHP/MySQL rasik (XAMPP/Laragon/hosting), tanba ambiente edita ne'e la iha PHP CLI atu halo run diretu.

## Ronde 3 - Tradusaun kompletu ba Tetum + Ajusta Splash
- Hotu-hotu kata-liafuan Bahasa Indonesia ne'ebe seidauk troka (iha backend PHP no Android Kotlin/XML) troka ona ba Tetum formál, inklui:
  - Kollona/campo database: `nama`→`naran`, `nilai_bintang`→`valor_bintang`, `tanggal_rating`→`data_rating`, `tanggal`→`data`.
  - API JSON keys no Android SerializedName sira update hanesan (`naran`, `valor_bintang`, `skor_preferensia`).
  - View ID sira iha Android (`et_nama`→`et_naran`, `tv_nama`→`tv_naran`, `tv_header_nama`→`tv_header_naran`) no Kotlin variável sira relasiona.
  - Buton "Hapus" → "Hamos"; `<html lang="id">` → `<html lang="tet">`.
  - Komentáriu kódigu (SQL, PHP, Kotlin) ne'ebe seidauk Tetum, troka hotu (hitungSimilarity→kalkulaSimilaridade, totalFitur→totalKarakteristika, cocok→hanesan, no seluk tan).
  - `strings.xml`: "Akun"→"Konta", "Tentang Aplikasaun"→"Kona-ba Aplikasaun".
- Foto ne'ebe hatama iha leten progress bar (splash screen) hasai fila tuir pedidu; splash agora fila ba dezeñu orijinál (titulu + progress bar de'it, la iha imajen).

## Ronde 4 - Implementa Algoritmu Cosine Similarity Berbobot + Form Rekomendasaun Foun

Tuir orientasaun dosente orientadora (bazeia ba proposta, Kapítulu 3.6-3.12, pájina 24-34),
sistema agora implementa metodolojia **Content-Based Filtering** ne'ebé eksatu, no
adiciona "form" foun iha Android atu hatudu klaru numeru *similarity* ba utilizadór.

### Database
- Tabela `aihan`: aumenta kolona `origem` (suku/postu) no 10 kolona fitur binariu
  (`fitur_ikan`, `fitur_nan`, `fitur_modo`, `fitur_dosi`, `fitur_manas`, `fitur_midar`,
  `fitur_moruk`, `fitur_sin`, `fitur_mamar`, `fitur_tos`) tuir Tabela 3.4 iha proposta.
  9 ai-han seidauk iha ona dadus fitur binariu ne'ebé tuir mai eksatu ho proposta.
- Tabela foun `fitur_bobot`: rai bobot ba kada fitur (Tabela 3.6 - IKAN 0.34, NAN 0.14,
  MODO 0.14, DOSI 0.09, MANAS 0.09, MIDAR 0.09, MORUK 0.04, SIN 0.04, MAMAR 0.02, TOS 0.01).

### Backend Web
- `api/rekomendasi.php`: SUBSTITUI kompletu husi métodu simplis (kompara kategoria/sabor/
  textura hanesan ka lae) ba **Cosine Similarity ho vetór berbobot** eksatu tuir fórmula
  iha proposta (Kapítulu 3.9-3.10): $$Similarity = \\frac{U \\cdot I}{||U|| \\times ||I||}$$
- `admin/aihan_form.php`: aumenta checkbox ba 10 fitur binariu + kampu "Orijen", atu admin
  bele jere dadus ne'ebé sai baze ba kálkulu similarity kuandu aumenta ai-han foun.
- Pájina foun `admin/bobot_fitur.php`: hatudu tabela bobot fitur (Tabela 3.6) ho fórmula,
  ba nesesidade demonstrasaun/defesa.

### Android (Front-end)
- **Form/pájina foun**: `RekomendasaunHasilActivity` — hatudu rezultadu rekomendasaun
  KOMPLETU ba ai-han ne'ebé user hili, ho formátu hanesan Tabela 3.9-3.11 iha proposta:
  Rank, naran ai-han, **numeru Similarity** (sr: 0.90, 0.78, 1.00), no Status
  ("Hanesan Tebes" / "Hanesan Aas" / "Hanesan" / "La Hanesan").
- Iha pájina Detalha Ai-han, aumenta buton "**Haree Rezultadu Rekomendasaun Kompletu**"
  ne'ebé lori user ba pájina foun ne'e.
- Wainhira user hili/haree ai-han ida (sr: Kaldu — Naan, Midar, Mamar), sistema kalkula
  similarity ho ai-han sira seluk hotu no hatudu iha rank tuir similarity aas liu, hanesan
  ne'ebé dosente orientadora hakarak.

### Importante
- Favor **reimporta fila** `database/aihan_covalima.sql` (substitui database tuan)
  atu kolona no tabela foun sira eziste.
- `api/rekomendasi.php` foun ne'e depende ba kolona `fitur_*` iha tabela `aihan` —
  se aumenta ai-han foun liu husi admin, marka checkbox fitur sira ne'ebé loos.

## Ronde 5 - Form "Profil Utilizadór" (Hili Preferénsia Explísitu)

Aumenta modu segundu ba rekomendasaun, ne'ebé sigi eksatu ezemplu Imaculada/Dina/Ana
iha Tabela 3.7 (proposta, pájina 26): utilizadór hili nia preferénsia rasik
(la'os de'it husi ai-han ne'ebé nia haree), hafoin sistema kalkula Cosine Similarity.

### Backend
- Endpoint foun `api/rekomendasi_preferensia.php` (POST): simu preferénsia
  utilizadór (ikan/nan/modo/dosi/manas/midar/moruk/sin/mamar/tos), forma vetór
  berbobot "Profil Utilizadór" tuir Kapítulu 3.9.2, no kalkula Similarity ba
  ai-han sira hotu.

### Android
- **Form foun** `PreferensiaActivity`: utilizadór marka checkbox ba Ingredientes
  Prinsipál (Ikan/Nan/Modo/Dosi), Sabor (Manas/Midar/Moruk/Sin) no Textura
  (Mamar/Tos) — hanesan estrutura Tabela 3.7.
- Buton "Hili Preferénsia Ita Nian" aumenta iha tab "Lista Rekomendasaun".
- `RekomendasaunHasilActivity` agora suporta RUA modu: (1) bazeia ba ai-han
  ne'ebé user hili/haree, (2) bazeia ba preferénsia explísitu husi formuláriu foun.

### Nota importante kona-ba números
Algoritmu ne'e implementa **eksatu** fórmula no metodolojia iha proposta
(vetór binariu berbobot + Cosine Similarity, Kapítulu 3.6-3.10). Maibé númeru
*similarity* sira ne'ebé sistema fó sei diferente uituan husi valores iha
Tabela 3.9-3.11 (pájina 30-32), tanba iha inkonsistênsia entre seksaun 3.10
(exemplu kálkulu ho vetór AT1 ne'ebé la kompletu, "1,000") no Tabela 3.4
(vetór AT1 loloos, ne'ebé inklui fitur Modo). Sistema ne'e uza vetór KOMPLETU
tuir Tabela 3.4 (loos matematikamente), tan ne'e rezultadu sei koerente no
mós defensável, maibé la 100% hanesan ho números ezemplu manual iha proposta.
Se dosente orientadora insiste atu números eksatu hanesan, sei presiza reveja
fórmula/vetór iha proposta rasik uluk.

## Ronde 6 - Menu Users, Login, Kór no Tabela Formal

### Menu Users (foun)
- Aumenta menu **"Lista Users"** iha sidebar admin — hatudu hotu-hotu user ne'ebé
  rejistradu husi aplikasaun Android (`users_list.php`), ho buka/edita/hamos.
- `users_form.php`: admin bele edita naran/email, no reset password (fila mamuk
  se la muda). Password uluk nunka hatudu ho klaru (rai de'it nu'udar hash).

### Login
- Kampu Username no Password agora **MAMUK/VAZIU uluk** kuandu loke pájina login
  (uza `autocomplete="off"` + JS atu hasoru autofill browser).
- Aumenta buton **"Kansela"** iha formuláriu login (hamos kampu sira).
- Login (fundu, buton "Tama") agora uza **kór azul**.

### Kór jerál
- **Dashboard**: topbar no kartu total sira agora uza **kór chocolate/kafé**.
- **Copyright footer**: fundu **preto**, tekstu **mutin**.
- Buton Edita (sinzentu-hitam), Hamos (mean) no Login (azul) agora iha **kór
  automátiku** husi primeru mira — la presiza hover uluk atu haree kór.
- Kotak buka (search) troka sai **ki'ik/pas-pasan** iha lista hotu-hotu.

### Tabela formal
- Hotu-hotu tabela (Lista Ai-han, Lista Kategoria, Lista Ingredientes, Lista
  Rating, Bobot Fitur Algoritmu, Lista Users) troka ba dezeñu **formal**: kotuk
  kolona kompletu (border), header ho kór **chocolate** + tekstu mutin +
  **pertengan (center)**, linja alternadu ho kór klaru atu fásil lee.

## Ronde 7 - Korrije Bootstrap La Loke (CSS/JS Lokál) + Notifikasaun Toast

### Kestaun boot: Bootstrap la loke
Buton sira mosu "jelek" (la iha kotuk/kór) no kór azul/chocolate la muda tanba
**Bootstrap CSS/JS husi CDN la loke** iha computer/servidor ita nian (label
internet la iha ka bloke). Hau troka HOTU-HOTU referénsia CDN ba ficheiru
**lokál** (la depende internet tan):
- `assets/vendor/bootstrap/css/bootstrap.min.css`
- `assets/vendor/bootstrap/js/bootstrap.bundle.min.js`
- `assets/vendor/bootstrap-icons/bootstrap-icons.min.css` (+ fontes)

Aumenta mós `?v=<data ficheiru>` iha `style.css` para browser SEMPRE karga
versaun foun (la uza cache tuan). **IMPORTANTE**: se ita seidauk haree kór foun
hafoin substitui folder, favor halo **Ctrl+F5** (hard refresh) dala ida uluk.

### Notifikasaun (Toast)
Aumenta sistema notifikasaun (toast verde iha kanto leten-loos) ba:
- **Login susesu** → "Login susesu!" (hafoin tama ho susesu, iha Dashboard)
- **Username/Password sala** → alerta "Username no Password lalos." iha
  pájina login rasik
- **Aumenta dadus** (buton "Aumenta..." → "Rai Dadus") → "Aumenta dadus rai ho
  susesu!"
- **Hadia dadus** (buton "Hadia" → "Rai Dadus") → "Hadia dadus rai ho susesu!"
- **Hamos dadus** (buton "Hamos") → "Dadus hamos ho susesu!"

Aplika ba HOTU-HOTU menu: Lista Ai-han, Lista Kategoria, Lista Ingredientes,
Lista Users.

### Naran buton konsistente
Buton Edita troka naran ba **"Hadia"** iha lista hotu-hotu (Ai-han, Kategoria,
Ingredientes, Users), tuir naran ne'ebé ita uza.

## Ronde 8 - Korrije Buton Login Naruk Loos (Bug Koliza CSS Class)

### Kestaun
Buton "Tama" no "Kansela" iha pájina login mosu **naruk loos to'o okos pájina**
(la'os buton normal). Kauza: klase CSS `.flex-grow-1` uza dala-rua ho
signifikadu diferente — klase ida-ne'e mak klase padraun Bootstrap (`flex-grow:1`),
maibé ita mós uza naran hanesan ba layout jerál (`min-height:100vh`) iha
admin panel. Klase rua ne'e "kolidi" (crash) tanba naran hanesan.

### Rezolvidu
- Layout jerál troka naran husi `.flex-grow-1` ba `.admin-shell` (la kolidi tan).
- Buton login troka husi `.flex-grow-1` ba `.flex-fill` (klase Bootstrap seluk,
  efeitu hanesan: buton kompleta espasu hanesan).

## Ronde 9 - Ajusta Kór, Font, Kotak Buka, no Lista Users

- **Lista Users**: buton "Hadia" no "Hamos" hasai husi lista (agora lista de'it -
  view only, la iha edita/hamos). Ficheiru `users_form.php` hasai tiha.
- **Kór**: kór chocolate/orange ne'ebé uza ba header tabela, topbar dashboard, no
  buton buka (search) troka ba kór **slate azul-escuru** (`#35566e`) - la'os
  orange/chocolate tan.
- **Kartu Total (Dashboard)**: kór fila ba **kór orijinál/variadu** (Total
  Ai-han = laranja, Total Kategoria = verde, Total Ingredientes = roxu, Total
  Rating = azul), la'os chocolate hotu-hotu tan.
- **Topbar Dashboard**: fila ba estilu default (fundu mutin) hanesan pájina seluk.
- **Font/letra**: font-size base aumenta husi ~13-14px ba ~15-16px iha
  hotu-hotu parte (tabela, buton, formuláriu, sidebar), atu lee di'ak liu.
- **Kotak Buka (Search)**: aumenta fila husi 230px ba 340px, ho padding no
  font-size boot liu.
- **Judul pájina** (Lista Ingredientes, Lista Kategoria, dsb) iha topbar agora
  iha kór (slate azul-escuru) no font boot liu, la'os preto simples.

## Ronde 10 - Topbar Kotak Kór (la'os de'it tekstu)

- Bagian "kotak leten" (topbar) ne'ebé hatudu judul pájina (sr: "Lista Ai-han
  Tradisional") no "Ola, Administradór Sistema" agora iha **fundu kór** (slate
  azul-escuru, hanesan header tabela), tekstu mutin - la'os de'it tekstu ne'ebé
  iha kór iha fundu mutin hanesan uluk.

## Ronde 11 - Korrije Layout La Full (Bug Kritiku) + Ajusta Sidebar

### Kestaun boot: layout la full largura
Página sira hotu-hotu (Dashboard, Lista Ai-han, dsb) sidauk uza largura kompletu
husi ecrã - iha area mamuk boot iha direita. Kauza: hafoin korrije bug buton
login (troka `.flex-grow-1` ba `.admin-shell`), hau la esceci hatama
`flex: 1 1 auto` ba `.admin-shell` - klase ne'e mak responsável atu kompleta
espasu kompletu iha layout flexbox. Ohin ona hatama fila.

### Sidebar
- Foto Kantor Munisípiu Covalima troka husi *center* ba **left-align**, sejajar
  ho judul "Sistema Rekomendasaun..." iha leten.
- Judul "Sistema Rekomendasaun Ai-han Tradisional..." boot uituan liu (0.95rem → 1.12rem).
- Menu sidebar (Dashboard, Lista Ai-han, dsb) boot uituan liu (1rem → 1.05rem).

## Ronde 12 - Foto Kantor: Fila Center, Boot Uituan

- Foto Kantor Munisípiu Covalima fila ba **center** (uluk troka ba left-align,
  agora fila hanesan pedidu), no boot husi 92x68px ba **130x95px** atu haree
  klaru liu iha okos judul "Sistema Rekomendasaun...".

## Ronde 13 - Tekstu Tabela Boot Uituan Liu Tan

- Tekstu iha laran tabela (naran, deskrisaun, dsb) no header tabela boot husi
  ~15-16px ba ~17px, atu lee di'ak liu iha lista hotu-hotu (Ai-han, Kategoria,
  Ingredientes, Rating, Bobot Fitur, Users).
- Buton "Hadia"/"Hamos" iha laran tabela mós boot uituan liu.

## Ronde 14 - Tekstu Deskrisaun iha Tabela Boot Liu Tan

- Hotu-hotu tekstu iha laran tabela (sr: "Aifarina, baze karbohidratu ba aihan
  tradisionál.") boot husi 1.05rem ba **1.12rem**, ho *line-height* 1.5 atu
  lee di'ak liu, aplika ba lista hotu-hotu.

## Ronde 15 - Notifikasaun Iha Klaran Ecrã, Boot Liu, La Lakan Rapidu

- Toast notifikasaun (Login susesu, Aumenta/Hadia/Hamos dadus susesu) troka
  posisaun husi kanto leten-loos ba **klaran ecrã** (center kompletu,
  horizontal + vertikal).
- Tekstu toast boot liu (1.2rem) no negrito, ho ikon boot liu.
- Durasaun toast aumenta husi 3.2 segundu ba **6 segundu**, atu la lakon rápidu.
- Alerta "Username no Password lalos" iha pájina login mós boot uituan liu.

## Ronde 16 - Ajusta Durasaun Notifikasaun no Estilu Kartaun Klaru

- Durasaun toast troka husi 6 segundu (troppu naruk) ba **3.5 segundu**
  (ekilíbriu - la lakon rápidu, la mós hein naruk demais).
- Dezeñu toast troka ba **kartaun mutin** ho ikon boot kór verde iha leten no
  tekstu iha okos (hanesan ezemplu imajen ne'ebé ita fó), la'os kaixa kór
  kompletu tan.
- Toast kontinua mosu iha **klaran ecrã** (center horizontal + vertikal).

## Ronde 17 - Notifikasaun: Kaixa Verde Solidu (tuir imajen ezemplu)

- Dezeñu toast fila ba **kaixa verde solidu** (`#2fb35c`) ho ikon check mutin
  no tekstu mutin negrito iha laran - hanesan eksatu imajen ezemplu
  "Halaman Hapus Data Produk" ne'ebé ita fó.
- Durasaun kontinua 3.5 segundu (ekilíbriu - la lakon rápidu, la mós naruk demais).
- Pozisaun kontinua iha klaran ecrã.

## Ronde 18 - Pozisaun Notifikasaun Top-Center + Copyright Boot

- Toast agora mosu iha **top-center** (leten, klaran horizontal), la'os
  klaran ecrã kompletu - hanesan pozisaun iha imajen ezemplu.
- Tekstu copyright iha footer boot husi 0.85rem ba **1.05rem** (uluk hau
  la halo edita ida-ne'e, deskulpa).

## Ronde 19 - Atualiza Backend + Database ho Bobot Fitur Korrijidu

Tuir korreksaun Tabela 3.6 (método Skor÷TotalSkor, soma korrijidu ba 1,000),
backend web no database atualiza atu **100% konsistente** ho Excel/Word ne'ebé
ona entrega.

### Database (`database/aihan_covalima.sql`)
- Tabela `fitur_bobot`: kolona `bobot` troka husi `DECIMAL(4,2)` ba **`DECIMAL(5,3)`**
  (atu suporta 3 decimál — 2 decimál la sufisiente ba valór hanesan 0.286/0.143).
- Aumenta kolona foun `skor_importansia` (rai skor orijinál 6,3,3,2,2,2,1,1,0.6,0.4
  ne'ebé sai baze kalkulasaun, ba transparénsia).
- Valór bobot atualiza: IKAN=0.286, NAN=0.143, MODO=0.143, DOSI=0.095, MANAS=0.095,
  MIDAR=0.095, MORUK=0.048, SIN=0.048, MAMAR=0.028, TOS=0.019 (**soma=1.000**,
  uluk soma=0.94).

### Backend (`admin/bobot_fitur.php`)
- Pájina "Bobot Fitur Algoritmu" agora hatudu kolona **Skor Importánsia** no
  **Kalkulasaun** (sr: "6 ÷ 21"), la'os de'it bobot final — transparente tuir
  método Skor÷TotalSkor.
- Presizaun ekran troka husi 2 ba **3 decimál**.

### Backend (`admin/aihan_form.php`)
- Label checkbox fitur (sr: "IKAN (0.34)") atualiza ba valór foun (sr: "IKAN (0.286)").

### API (`api/rekomendasi.php`, `api/rekomendasi_preferensia.php`)
- **LA MUDA kódigu** — hotu-hotu bobot lee DINAMIKAMENTE husi tabela `fitur_bobot`
  liu husi `SELECT kolona, bobot FROM fitur_bobot`, tan ne'e automátikamente uza
  valór foun hafoin reimporta database.

### Android App
- **LA presiza muda buat ida** — app la iha bobot hardcoded; hotu-hotu kalkulasaun
  halo iha backend, app de'it hatudu rezultadu husi API.

### IMPORTANTE
Favor **reimporta database** (`database/aihan_covalima.sql`) kompletu ba servidor
ita nian, tanba estrutura tabela `fitur_bobot` muda (kolona `skor_importansia` foun,
`bobot` DECIMAL(5,3)). Depois reimporta, verifika iha phpMyAdmin:
`SELECT SUM(bobot) FROM fitur_bobot;` — tenke fila **1.000**.

## Ronde 20 - Tampilan "Hotu-hotu" sai Grid 2-Kolona (hanesan referénsia)

Tuir pedidu, tampilan menu "Hotu-hotu" (lista ai-han iha Baranda/Home) troka
husi lista 1-kolona (kartaun boot naruk) ba **grid 2-kolona**, hanesan
referénsia imajen (Swaramas Music Shop). **La muda kata-liafuan/tekstu ida-ida**
— de'it dezeñu vizuál (tamanhu, layout, kór) troka.

### Ficheiru muda
- `ui/home/HomeFragment.kt`: `LinearLayoutManager` → `GridLayoutManager(context, 2)`
  ba `rv_rekomendasaun`.
- `res/layout/item_aihan_grid.xml`: redezeñu kartaun sai ki'ik/kompaktu ba
  2-kolona (imajen 120dp, font boot ki'ik liu, padding ki'ik liu), maibé
  TextView sira (`tv_naran_aihan`, `tv_kategoria`, `tv_rating`) kontinua
  MESMU ID no MESMU konténudu tekstu — la muda.
- Rating (★) agora iha "badge" fundu klaru (`bg_badge_rating.xml` - foun) atu
  hatudu hanesan pill/label, hanesan estilu iha referénsia.

## Ronde 21 - Klik Ingredientes/Kategoria → Hatudu Ai-han Relevante

### Nota onestu kona-ba foto (importante!)
Hau **la bele** hatama foto husi pájina 8-9 husi Word ho konfiansa 100%, tanba
hau la iha asesu vizuál fiável ba imajen sira iha sesaun ida-ne'e (limitasaun
téknika). Favor **upload direta** foto ingredientes ida-ida (crop husi Word)
liu husi admin panel (`ingredientes_form.php`, kampu "Foto Ingredientes" foun) —
sistema ona kompletu ho estrutura database/API/app atu simu no hatudu foto.

### Funsionalidade foun: Klik → Hatudu Ai-han
- **Lista Ingredientes** (Android): kada item agora KLIKÁVEL. Click "Akar" →
  loke pájina foun ho lista ai-han hotu-hotu ne'ebé uza ingredientes "Akar".
  Ikon "+" (add jenériku) troka ba área FOTO reál (ImageView, foti husi
  database — seidauk iha foto, tan ne'e Glide hatudu placeholder to'o ita
  upload).
- **Lista Kategoria** (Android): kada item agora KLIKÁVEL. Click "Da'an" →
  loke pájina foun ho lista ai-han hotu-hotu ho kategoria "Da'an" (Kaldu Naan,
  Koto Tisi).

### Ficheiru foun
- `ui/aihan/AihanFiltruActivity.kt` + `activity_aihan_filtru.xml` — pájina
  foun ne'ebé hatudu grid ai-han (2-kolona) filtradu tuir kategoria ka
  ingredientes, click item → DetailAihanActivity.

### Backend
- `api/aihan.php`: aumenta suporta `?id_kategoria=X` no `?id_ingredientes=X`
  (filtru), la muda komportamentu default (la iha parâmetru = hotu-hotu).
- Tabela `ingredientes`: aumenta kolona `foto`.
- `admin/ingredientes_form.php` + `ingredientes_list.php`: aumenta
  upload/hatudu foto ingredientes (hanesan `aihan_form.php`).
- `api/ingredientes.php`: retorna kampu `foto`.

### IMPORTANTE
Favor reimporta database (kolona `foto` foun iha `ingredientes`).

## Ronde 22 - Foto Ingredientes (9 naran ficheiru ne'ebé ita fó) + Korrije Koliza

### Mapeamentu foto (tuir naran ficheiru ne'ebé ita fó)
| Ingredientes | Ficheiru Foto |
|---|---|
| Naan | `manutimor.jpg` |
| Ikan | `ikan.jpg` |
| Koto | `kotofuik.jpg` |
| Lakeru | `lakerutasak.jpg` |
| Aifarina | `aifarina.jpg` |
| Susu | `keongmas.jpg` |
| Boek | `bubun.jpg` |
| Akar | `akar.jpg` |
| **Hudi Tasak** (foun) | `huditasak.jpg` |

Aumenta "**Hudi Tasak**" nu'udar ingredientes 9 (uluk 8 de'it), tanba ita fó
9 ficheiru foto. Nota: Kadaka (dish) uza rasik "Aifarina + hudi tasak" tuir
deskrisaun, maibé database estrutura de'it fó 1 ingredientes prinsipál ba kada
ai-han (id_ingredientes FK), tan ne'e Kadaka kontinua liga ba "Aifarina".
Konsekuénsia: click "Hudi Tasak" iha app sei hatudu "seidauk iha ai-han" (mamuk),
tanba seidauk iha dish ne'ebé liga diretamente ba ida-ne'e. Hatete se ita
hakarak hau troka Kadaka nia ingredientes prinsipál ba "Hudi Tasak" hodi
rezolve ida-ne'e.

### ⚠️ Korrezaun koliza naran ficheiru (importante!)
Ita nia foto ingredientes "**akar.jpg**" no "**bubun.jpg**" KOLIDI ho naran
ficheiru foto ai-han (dish) tradisionál ne'ebé ona iha iha database (Akar no
Bubun mós uza "akar.jpg"/"bubun.jpg" ba sira nia foto ai-han/dish já pronto).
Hau korrije liu husi troka naran foto DISH ba **`aihan_akar.jpg`** no
**`aihan_bubun.jpg`** (la'os foto RAW ingredientes ne'ebé ita fó). Favor:
- Foto raw ingredientes (mentah): rai iha `assets/uploads/akar.jpg`,
  `assets/uploads/bubun.jpg`, dsb (naran eksatu tuir ita hatete).
- Foto dish/ai-han finalizadu (se iha): rai ho naran **`aihan_akar.jpg`**,
  **`aihan_bubun.jpg`** hodi la kolidi.

### Fatin atu rai foto (importante!)
Copia hotu-hotu 9 ficheiru foto ita nian (akar.jpg, ikan.jpg, manutimor.jpg,
huditasak.jpg, bubun.jpg, aifarina.jpg, lakerutasak.jpg, keongmas.jpg,
kotofuik.jpg) ba folder:
```
backend-web/assets/uploads/
```
Depois reimporta database, app sei hatudu foto automátikamente (la presiza
upload liu husi admin panel, tanba naran ficheiru ona hanesan husi database).

## Ronde 23 - Revizaun: Foto Resep (naran ficheiru foun)

Tuir revizaun ita nian, fluxo "Lista Ingredientes" kontinua HANESAN (buton +
troka ba foto raw ingredientes, click naran → AihanFiltruActivity → click
dish → DetailAihanActivity hatudu foto + deskrisaun). De'it naran ficheiru
foto DISH atualiza tuir naran ne'ebé ita fó:

| Ai-han (Dish) | Foto Resep |
|---|---|
| Kaldu Naan | `resep_kaldu.jpg` |
| Tukir | `resep_tukir.jpg` |
| Koto Tisi | `resep_kototisi.jpg` |
| Dosi Lakeru | `resep_dosilakeru.jpg` |
| Kadaka | `resep_kadaka.jpg` |
| Susu Keong Mas | `resep_keongmas.jpg` |
| Saboko | `resep_saboko.jpg` |
| Bubun | `resep_bubun.jpg` |
| Akar | `resep_akar.jpg` |

Naran foto ne'e la kolidi ho foto raw ingredientes (akar.jpg, bubun.jpg, dsb)
tanba prefiku "resep_" diferente.

### Fluxo kompletu (konfirma)
1. **Lista Ingredientes** → foto RAW (sr: `akar.jpg`) iha fatin buton "+".
2. Click naran ingredientes (sr: "Akar") → lista ai-han ne'ebé uza ingredientes
   ne'e (grid, click ba "Akar" dish).
3. Click ai-han "Akar" → **Detalhe**: hatudu foto RESEP (`resep_akar.jpg`) +
   **deskrisaun kompletu**.

### Fatin atu rai foto (atualizadu)
Copia hotu-hotu **18 ficheiru** (9 raw ingredientes + 9 resep) ba
`backend-web/assets/uploads/`:
- Raw: `akar.jpg`, `ikan.jpg`, `manutimor.jpg`, `huditasak.jpg`, `bubun.jpg`,
  `aifarina.jpg`, `lakerutasak.jpg`, `keongmas.jpg`, `kotofuik.jpg`
- Resep: `resep_kaldu.jpg`, `resep_saboko.jpg`, `resep_tukir.jpg`,
  `resep_kototisi.jpg`, `resep_bubun.jpg`, `resep_kadaka.jpg`,
  `resep_keongmas.jpg`, `resep_akar.jpg`, `resep_dosilakeru.jpg`

## Ronde 24 - Korrije: Hudi Tasak sai NAKONU ho Aifarina (la'os ingredientes rasik)

Tuir konfirmasaun ita nian, "Hudi Tasak" LA sai ingredientes rasik — nia
hamutuk ho "Aifarina" (uza hamutuk iha Kadaka). Korrezaun:
- Hasai tiha linha "Hudi Tasak" (fila ba **8 ingredientes** de'it, la'os 9).
- Deskrisaun "Aifarina" atualiza atu inklui referénsia ba "hudi tasak":
  *"Aifarina no hudi tasak, baze karbohidratu ba aihan tradisionál (sr: Kadaka)."*
- Foto "Aifarina" kontinua uza `aifarina.jpg`.
- Ficheiru `huditasak.jpg` la uza tan iha lista ingredientes (bele hasai husi
  folder uploads, ka rai de'it nu'udar reserva).

Total Ingredientes iha Dashboard sei fila ba **8** (automátiku, la presiza
troka kódigu, tanba kontador SQL dinâmiku).

## Ronde 25 - Revizaun: Foto Ai-han sai naran simples (la iha "resep_" tan)

Tuir revizaun ita nian, foto ba **Lista Ai-han** (makanan ne'ebé jadi/matang)
troka husi naran "resep_X.jpg" ba naran SIMPLES:

| Ai-han | Foto (foun) |
|---|---|
| Kaldu Naan | `kaldu.jpg` |
| Tukir | `tukir.jpg` |
| Koto Tisi | `kototisi.jpg` |
| Dosi Lakeru | `dosilakeru.jpg` |
| Kadaka | `kadaka.jpg` |
| Susu Keong Mas | `keongmas.jpg` |
| Saboko | `saboko.jpg` |
| Bubun | `bubun.jpg` |
| Akar | `akar.jpg` |

### ⚠️ PENTING: 3 naran foto sama ho ingredientes (kolizaun intensional)
Tuir naran ne'ebé ita fó, 3 naran foto AGORA HANESAN entre Ai-han (matang) no
Ingredientes (mentah):
- `akar.jpg` — Ingredientes "Akar" = Ai-han "Akar"
- `bubun.jpg` — Ingredientes "Boek" = Ai-han "Bubun"
- `keongmas.jpg` — Ingredientes "Susu" = Ai-han "Susu Keong Mas"

Signifika: **ficheiru foto HANESAN sei mosu iha rua-rua** — Lista Ingredientes
"Akar" no Lista Ai-han "Akar" sei hatudu foto HANESAN (ficheiru "akar.jpg"),
la iha diferensa. Se ita hakarak foto DIFERENTE ba mentah vs matang ba 3 item
ne'e, favor fó naran ficheiru diferente ba ida, hau atualiza fila.

## Ronde 26 - Fila ba naran "resep_" (kondiz ho ficheiru ne'ebé ita fó iha screenshot)

Tuir screenshot folder `assets/uploads` ita nian, fila ba naran **resep_X.jpg**
ba hotu-hotu 9 foto Ai-han (la'os naran simples), tanba ne'e mak ficheiru
ne'ebé loloos existe iha folder ita nian:

resep_kaldu.jpg, resep_tukir.jpg, resep_kototisi.jpg, resep_dosilakeru.jpg,
resep_kadaka.jpg, resep_keongmas.jpg, resep_saboko.jpg, resep_bubun.jpg,
resep_akar.jpg — hotu-hotu la kolidi ho foto ingredientes mentah
(akar.jpg, bubun.jpg, keongmas.jpg, dsb).

### Testu REAL ne'ebé halo (la'os de'it lee kódigu)
Hau halo run **api/aihan.php loloos** (PHP CLI, ho database MariaDB real):
- `?id_kategoria=1` (Da'an) → fila JSON: Kaldu Naan + Koto Tisi ✅
- `?id_ingredientes=8` (Akar) → fila JSON: Akar (foto resep_akar.jpg) ✅

Konfirma: fluxo "click Lista Kategoria → hatudu ai-han sekategoria" no
"click Lista Ingredientes → hatudu resep ai-han" **funsiona 100%** husi
backend to'o dadus, konsistente ho ficheiru foto ne'ebé ita ona prepara.

## Ronde 27 - KORRIJE BUG BOOT: Click Kategoria/Ingredientes La Funsiona

### Kauza loloos (achadu ikus liu)
`android:clickable="true"` iha LinearLayout LARAN (ba ripple efeito) halo
Android "intercepta" touch event ANTES de bele bá klaran ba OnClickListener
ne'ebé rai iha `holder.itemView` (CardView LETEN). Konsekuénsia: click LA
mosu erru, MAIBÉ LA HALO BUAT IDA — parese "la funsiona".

### Korrezaun
- Aumenta ID `card_content` ba LinearLayout klikável iha
  `item_kategoria.xml` no `item_ingredientes.xml`.
- Troka `holder.itemView.setOnClickListener` ba
  `holder.binding.cardContent.setOnClickListener` iha `KategoriaAdapter.kt`
  no `IngredientesAdapter.kt`.
- **IMPORTANTE**: rebuild/rerun APK iha Android Studio — troka kódigu la
  automátiku iha APK ne'ebé ona instala.

## Ronde 28 - Foto Ai-han fila ba naran orijinál (mostra prátu MATANG)

Tuir miniatura iha screenshot ita nian, ficheiru `resep_*.jpg` loloos hatudu
**bahan sira mentah** (dispostu iha mangkuk, gaya flat-lay), la'os prátu
matang. Ficheiru naran simples (`kaldu_naan.jpg`, `tukir.jpg`, dsb) mak
loloos hatudu prátu **matang/tersaji**. Tan ne'e fila database ba:

| Ai-han | Foto |
|---|---|
| Kaldu Naan | `kaldu_naan.jpg` |
| Tukir | `tukir.jpg` |
| Koto Tisi | `koto_tisi.jpg` |
| Dosi Lakeru | `dosi_lakeru.jpg` |
| Kadaka | `kadaka.jpg` |
| Susu Keong Mas | `susu_keong_mas.jpg` |
| Saboko | `saboko.jpg` |
| Bubun | `aihan_bubun.jpg` |
| Akar | `aihan_akar.jpg` |

### ⚠️ AVISO: ficheiru "aihan_akar .jpg" iha folder ita nian iha ESPASU
Screenshot hatudu naran ficheiru "aihan_akar **.jpg**" (iha espasu molok
".jpg"). Database rai naran SEM espasu ("aihan_akar.jpg"). **Favor Rename**
ficheiru ne'e (hasai espasu) iha Windows Explorer, se lae imajen "Akar" LA
mosu iha app (erru 404).

## Ronde 29 - Click Ingredientes → LIU DIRETA ba Detalhe (foto resep + deskrisaun)

Tuir pedidu ikus, "Lista Ingredientes" agora la liu ona ba grid intermediáriu
kuandu de'it ai-han IDA de'it mak match. Agora:

1. Click naran ingredientes (sr: "Akar")
2. Sistema buka aihan sira ne'ebe uza ingredientes ne'e
3. **Se ai-han IDA de'it** (7 husi 8 ingredientes: Naan, Koto, Lakeru,
   Aifarina, Susu, Boek, Akar) → **liu DIRETA** ba pájina Detalhe (hatudu
   foto resep + deskrisaun kompletu, la iha etapa adisionál)
4. **Se ai-han BARAK** (de'it "Ikan" → Tukir + Saboko) → hatudu grid ki'ik
   atu user hili entre Tukir ka Saboko

### Testu real (php CLI + database)
Verifika hotu-hotu 8 ingredientes: 7 fila 1 rezultadu (liu direta), 1 (Ikan)
fila 2 rezultadu (Saboko + Tukir, hatudu grid).

## Ronde 30 - Kódigu Hadia Ai-han: Aumenta Mensajen Erru (la iha erru loloos hetan)

### Testu ne'ebé halo
Hau halo run test HTTP REAL kompletu (login + GET formuláriu + POST edita ho
foto foun) kontra `aihan_form.php` — **hotu-hotu funsiona 100%**: HTTP 302,
database atualiza, ficheiru foto rai iha `assets/uploads/`. Kódigu loloos LA
IHA ERRU.

### Kestaun ne'ebé bele mosu iha ita nia XAMPP
Se "Hadia" la funsiona iha computer ita nian, kauza mais provável:
1. **php.ini `upload_max_filesize` ki'ik demais** (default XAMPP dala barak
   2M) — se foto ita nian boot liu 2MB, upload falha silenciosamente.
2. **php.ini `post_max_size` ki'ik demais**.
3. **Permissaun folder `assets/uploads/`** la permite PHP hakerek.

### Korrezaun
`aihan_form.php` agora hatudu **mensajen erru KLARU** iha leten formuláriu
(la'os silenciozu tan) se upload falha, ho detallu eszatu (foto boot demais,
folder la iha permissaun, dsb). Se ita hetan mensajen erru agora, favor fó
sai mensajen ne'e mai hau, hau ajuda korrije direta.

### Se hakarak aumenta limite upload (php.ini)
Se mensajen hatudu "boot demais", favor edita `C:\xampp\php\php.ini`:
```
upload_max_filesize = 20M
post_max_size = 20M
```
Depois restart Apache iha XAMPP Control Panel.

## Ronde 31 - Aumenta Kolona "Foto Resep" Separadu (foto matang ≠ foto resep)

Tuir esplikasaun klaru ita nian, sistema agora suporta **RUA foto diferente**
ba kada ai-han, tanba ita hakarak konteúdu diferente iha kontestu diferente:

- **`foto`** (uluk) — foto MATANG/tersaji, hatudu iha tabela "Lista Ai-han"
  iha admin.
- **`foto_resep`** (FOUN) — foto resep/prosesu, hatudu iha app Android
  wainhira click naran Ingredientes (DetailAihanActivity troka ba foto
  ne'e wainhira liu husi fluxo "click ingredientes").

### Dadus foun (foto_resep)
Populadu ho ficheiru `resep_*.jpg` ne'ebé ita fó (resep_kaldu.jpg,
resep_tukir.jpg, resep_kototisi.jpg, resep_dosilakeru.jpg, resep_kadaka.jpg,
resep_keongmas.jpg, resep_saboko.jpg, resep_bubun.jpg, resep_akar.jpg).

### Muda kódigu
- **Database**: `aihan` tabela aumenta kolona `foto_resep`.
- **`api/aihan.php`**: endpoint detallu (`?id=`) agora fila mós `foto_resep`.
- **Android `Aihan.kt`**: aumenta kampu `fotoResep`.
- **`DetailAihanActivity.kt`**: simu extra `uza_foto_resep` (boolean); se
  `true`, hatudu `aihan.fotoResep` iha vez de `aihan.foto`.
- **`ListIngredientesFragment.kt`**: wainhira liu direta ba Detalhe (ai-han
  ida de'it), manda `uza_foto_resep=true`.
- **`AihanFiltruActivity.kt`**: wainhira click grid item ne'ebé mai husi
  filtru Ingredientes (sr: "Ikan" → Tukir/Saboko), mós manda flag ne'e.
- **`aihan_form.php`**: agora iha RUA kampu upload separadu — "Foto Ai-han"
  (matang) no "Foto Resep" — ho mensajen erru klaru se upload falha.

### Testu real ne'ebé halo
Import database + login + GET/POST HTTP real ho DALA UPLOAD RUA (foto no
foto_resep hamutuk) — **hotu-hotu susesu**, verifika iha database no JSON API.

## Ronde 32 - KORRIJE ERRU SINTAXE PHP (Parse error linha 89)

### Kauza
`aihan_form.php` uza sintaxe `[$a, $b] = função();` (list destructuring ho
kolokete kuadradu) — sintaxe ida-ne'e de'it eziste husi **PHP 7.1** mai leten.
Se servidor XAMPP ita nian uza PHP versaun uluk liu (sr: 7.0.x), sintaxe ne'e
sei fó "Parse error: syntax error, unexpected '='".

### Korrezaun
Troka ba sintaxe array indexing tradisionál (`$result[0]`, `$result[1]`) —
kompatível husi PHP 5 mai leten, la iha risku erru versaun.

### Verifikasaun kompletu
Hau verifika HOTU-HOTU 25 ficheiru PHP iha projetu ba sintaxe moderna seluk
ne'ebé bele sala iha PHP tuan (named arguments, nullsafe operator `?->`,
`str_contains()`, dsb) — LA HETAN buat ida seluk. De'it linha 89 ne'e mak
kauza.

## Ronde 33 - KORRIJE BUG BOOT: "Konesaun Falha, End of Input" iha Lista Ingredientes

### Kauza loloos
`api/aihan.php` uza `$stmt->bind_param($types, ...$params);` — operador
"spread" (`...`) atu deskompacta array. Maibé `mysqli_stmt::bind_param()`
**presiza referénsia real** ba variável (la'os valór temporáriu), no
kombinasaun "spread + bind_param" bele fó **Fatal Error silenciozu** iha
versaun PHP balun — konsekuénsia: resposta API sai **MAMUK KOMPLETU** (0 byte),
ne'ebé Android interpreta nu'udar "Konesaun falha: End of input at line 1
column 1 path $" (Gson la hetan JSON atu analiza).

Bug ida-ne'e toka **de'it** wainhira user click ingredientes/kategoria husi
Android (uza filtru `id_kategoria`/`id_ingredientes`) — ne'e mak razaun
"Lista Ingredientes" mosu erru maibé pájina seluk normal.

### Korrezaun
Troka ba padraun klássiku `call_user_func_array()` ho referénsia explísitu
(`&$params[$i]`), ne'ebé kompatível ho HOTU-HOTU versaun PHP no loos
konsidera nesesidade referénsia husi `bind_param()`.

### Testu real ne'ebé halo
Halo run HTTP REAL kontra `api/aihan.php` ba **hotu-hotu 8 ingredientes**
+ 1 kategoria — hotu-hotu fila **HTTP 200 + JSON válidu** (la'os mamuk tan).

## Ronde 34 - Troka Foto Akar/Bubun (kebalik) + Rede Seguransa API

### 1. Foto Akar/Bubun troka (kebalik, tuir ita fó sai)
Tuir ita nia rapór, foto "matang" mosu iha Lista INGREDIENTES, no foto "seidauk
matang" mosu iha Lista AI-HAN — signifika naran ficheiru troka. Hau troka:

| | Uluk | Foun (korrijidu) |
|---|---|---|
| Ingredientes "Akar" | `akar.jpg` | **`aihan_akar.jpg`** |
| Ai-han "Akar" | `aihan_akar.jpg` | **`akar.jpg`** |
| Ingredientes "Boek" | `bubun.jpg` | **`aihan_bubun.jpg`** |
| Ai-han "Bubun" | `aihan_bubun.jpg` | **`bubun.jpg`** |

### 2. Rede seguransa global ba API (`config/db.php`)
- **`register_shutdown_function`**: se iha Fatal Error PHP ne'ebé la bele
  "catch" (sr: sintaks la kompatível, funsaun la eziste), sistema agora
  SEMPRE fila JSON válidu (`{"status":"error","message":"..."}`) la'os
  pájina MAMUK — Android sei hatudu mensajen erru loloos la'os "end of
  input".
- **`mysqli_report(MYSQLI_REPORT_ERROR)`**: erru database sira sai
  "exception" ne'ebé bele kapta, la'os falha silenciozu.
- **`output buffering`**: garante header/JSON sempre bele hatama loos.

### 3. Korrezaun boot: `api/aihan.php` (Ronde 33, reafirma)
Bug `bind_param($types, ...$params)` (spread operator) troka ba
`call_user_func_array()` kompatível — ida-ne'e mak kauza loloos "end of
input" ne'ebé mosu wainhira click Ingredientes/Kategoria.

### Testu real ne'ebé halo
Login + dashboard + lista ai-han + hotu-hotu 8 filtru ingredientes +
kategoria + ingredientes.php + kategoria.php — HOTU-HOTU HTTP 200 ho JSON/
HTML válidu.

## Ronde 35 - Menu Foun "Lista Rekomendasaun" (tuir pedidu dosente orientadora)

Tuir pedidu dosente orientadora, sistema agora **rai istória** kada dala
utilizadór hili preferénsia (checkbox) iha app Android no hetan rezultadu
rekomendasaun. Istória ne'e hatudu iha admin panel, menu foun "Lista
Rekomendasaun".

### Database
- Tabela foun `rekomendasaun_log`: rai id_device, 10 fitur ne'ebé hili,
  id_aihan_hasil (rank 1), similaridade, no data_pedidu.

### Backend
- `api/rekomendasi_preferensia.php`: agora INSERT automátiku ba
  `rekomendasaun_log` kada dala kalkula rekomendasaun (antes fila JSON).
- Pájina foun `admin/rekomendasaun_list.php`: hatudu tabela ho FOTO ai-han
  rekomendadu, preferénsia (sr: "Nan, Modo, Midar, Mamar"), similarity, no
  data/oras.
- Menu "Lista Rekomendasaun" aumenta iha sidebar (okos "Bobot Fitur Algoritmu").

### Android
- `PreferensiaRequest` aumenta kampu `id_device` (husi `DeviceUtil.getDeviceId()`).
- Foto ai-han **ona hatudu** iha rezultadu (RekomendasaunHasilAdapter ona
  iha Glide.load() - la presiza muda kódigu).

### Testu real ne'ebé halo
Simula pedidu Android (Nan+Modo+Midar+Mamar) → API fila rezultadu loos
(#1 Kaldu Naan, similarity=1.000) → verifika log rai iha database → verifika
pájina admin hatudu istória ho preferénsia "Nan, Modo" korrektamente.

## Ronde 36 - Verifikasaun Lian Tetum Kompletu (sweep final)

Tuir pedidu ita nian, hau halo sweep KOMPLETU ba hotu-hotu ficheiru (backend
PHP + Android Kotlin/XML) atu buka liafuan Bahasa Indonesia ne'ebé seidauk
troka ba Tetum.

### Hetan
Label "Foto Resep" (visível ba admin iha `aihan_form.php`) uza liafuan
Indonesia "resep" (recipe). Troka ba **"Foto Preparasaun"**.

### Nota importante
Naran kolona database `foto_resep` no naran variável Android `fotoResep`
KONTINUA hanesan (la muda), tanba troka ne'e presiza toka database + API +
Android hotu-hotu (risku boot). De'it LABEL ne'ebé admin haree mak atualiza.

### Rezultadu sweep final
0 liafuan Indonesia hetan iha backend PHP no Android (strings.xml, layout
XML). Sistema 100% Tetum iha hotu-hotu tekstu ne'ebé visível ba user/admin.

## Ronde 37 - Fitur Favoritu (Android + Admin)

Tuir sujestaun ita nian, aumenta fitur "Favoritu" kompletu:

### Android
- Buton ikon fuik (❤️) iha kada item rezultadu rekomendasaun (RekomendasaunHasilAdapter)
  - Click = toggle aumenta/hamos ba favoritu
- Menu drawer foun **"Lista Favoritu"** - hatudu grid 2-kolona ai-han favoritu
  (FavoritoFragment + FavoritoAdapter, reuza layout item_aihan_grid.xml)
- Model foun: Favorito, FavoritoToggleRequest, FavoritoToggleResponse

### Backend
- API foun `api/favorito.php`: GET (lista tuir id_user), POST (toggle add/remove)
- Admin: `favorito_list.php` (uluk) hatudu istória kompletu + buton Hamos (Admin de'it)

### Testu real ne'ebé halo
Toggle add (id_aihan=1) -> hatudu iha lista -> toggle remove -> lista mamuk.
Hotu-hotu susesu.
