74 lines
2.6 KiB
Markdown
74 lines
2.6 KiB
Markdown
# AGENTS.md
|
|
|
|
Tento subor je prakticky navod pre AI agentov a contributorov v projekte `dbPrompt`.
|
|
|
|
## 1. Ciel projektu
|
|
|
|
`dbPrompt` je jednoducha web aplikacia na spustanie SQL dotazov nad MySQL s historiou vykonanych dopytov.
|
|
|
|
## 2. Struktura projektu
|
|
|
|
- `dbPrompt.go`: backend server (Go, `net/http`), API endpointy aj praca s historiou.
|
|
- `index.html`: cely frontend (HTML + CSS + JavaScript v jednom subore).
|
|
- `static/`: staticke assety (napr. logo).
|
|
- `history/`: JSON subory s historiou dopytov.
|
|
- `config.json`: DB konfiguracia pre lokalny beh.
|
|
- `build.bat`: build pre Windows/Linux binarky do `dist/`.
|
|
|
|
## 3. Lokalny beh a overenie
|
|
|
|
1. Skontroluj `config.json` (lokalne MySQL udaje).
|
|
2. Spust aplikaciu:
|
|
- `go run dbPrompt.go`
|
|
3. Otvor:
|
|
- `http://localhost:8080`
|
|
4. Pred odovzdanim zmien spusti:
|
|
- `go test ./...`
|
|
|
|
Poznamka: V projekte aktualne nie su unit testy, ale `go test ./...` overi aspon build.
|
|
|
|
## 4. API kontrakt (nezlomit bez poziadavky)
|
|
|
|
- `GET /history/`: vracia historiu ako JSON pole, zoradene od najstarsich.
|
|
- `POST /query`: prijme `{ id, query }`, vykona SQL, vrati `QueryResult`.
|
|
- `DELETE /history/{id}`: zmaze jeden zaznam historie.
|
|
|
|
`QueryResult` klucove polia:
|
|
- `id`, `query`, `timestamp`
|
|
- `duration` (ms)
|
|
- `error` alebo vysledok (`columns`, `rows`) alebo `rowsAffected`
|
|
|
|
Ak menis schema odpovede, zosulad backend aj frontend naraz.
|
|
|
|
## 5. Pravidla pre zmeny
|
|
|
|
- Zachovaj jednoduchu architekturu (single-file backend + single-file frontend), pokial nie je explicitna poziadavka na refactor.
|
|
- Preferuj male, cielene zmeny bez "cleanupu navyse".
|
|
- Pri zmenach endpointov vzdy uprav aj frontend render a nacitanie historie.
|
|
- Pri praci s cestami zachovaj sanitizaciu ID (`filepath.Base`) kvoli directory traversal.
|
|
- Nezavadzaj nove zavislosti bez dovodu.
|
|
|
|
## 6. Bezpecnost a data
|
|
|
|
- Nikdy necommituj realne prihlasovacie udaje do DB.
|
|
- `config.json` je lokalny runtime subor; citlive hodnoty maskuj v ukazkach.
|
|
- SQL sa vykonava priamo zo vstupu uzivatela. Ak by si pridaval funkcionalitu, zvaz oddelenie read-only rezimu alebo aspon jasne varovanie v UI.
|
|
|
|
## 7. Frontend poznamky
|
|
|
|
- UI je event-delegated cez `mainContainer.addEventListener('click', ...)`.
|
|
- Historicke bloky maju tlacidlo `Delete`; "new-query-block" ho nema, kym query neuspesne/neuspesne neprebehne.
|
|
- Collapsible tabulky pouzivaju `.collapsible-header` a `.collapsible-content`.
|
|
|
|
Pri zmenach vizualu zachovaj funkcnost:
|
|
- run query
|
|
- delete history item
|
|
- load history po starte
|
|
- collapse/expand individualne aj globalne
|
|
|
|
## 8. Definition of done pre kazdu upravu
|
|
|
|
1. Zmena funguje funkcne v UI/API.
|
|
2. `go test ./...` prejde.
|
|
3. Nemas neplanovane zmeny mimo scope zadania.
|