# jr-sql-ai (Terminal-first SQL Server Expert KI, lokal) Ziel: Lokale Expert-KI für **SQL Server 2022** (T-SQL, Views, Stored Procedures, Execution Plans, UTF-8 Migration), aufrufbar **vom Terminal**, ohne direkte DB-Verbindung (nur Copy & Paste / Dateien). ## Features - **Einfacher Tech-Stack:** Docker + Ollama + Bash + curl + python - **Host Networking:** nutzt den Host-Netzwerkstack (Routing/DNS wie Host; ideal wenn nur `br0` zuverlässig ist) - **Auto-Updates:** Runtime + Models via `systemd --user` Timer - **Viele Logs:** jede Ausführung schreibt detaillierte Logs unter `./logs/` ## Voraussetzungen (Arch Linux) - docker + docker compose - curl - python (für JSON-Quoting/Parsing) ## Quickstart ```bash cp .env.example .env ./scripts/bootstrap.sh echo "SELECT 1;" | ./bin/sqlai analyze-tsql ``` ## Verwendung (Copy & Paste) ### T-SQL ```bash cat query.sql | ./bin/sqlai analyze-tsql ``` ### Stored Procedure ```bash cat dbo.usp_Something.sql | ./bin/sqlai analyze-proc ``` ### View ```bash cat dbo.vw_Something.sql | ./bin/sqlai analyze-view ``` ### Execution Plan - Unterstützt Showplan XML oder Text. ```bash ./bin/sqlai analyze-plan --file showplan.xml ``` ### UTF-8 Migration Plan ```bash cat schema_snippet.sql | ./bin/sqlai utf8-migration ``` ## Prompt Library (Templates) Unter `./prompts/` findest du Copy&Paste-Templates: - `prompts/tsql_review.md` - `prompts/plan_review.md` - `prompts/utf8_migration_runbook.md` - `prompts/indexing_checklist.md` - `prompts/sniffing_stats_playbook.md` - `prompts/proc_refactor_template.md` - `prompts/view_analysis_template.md` ## Logs - CLI Logs: `./logs/sqlai-YYYY-MM-DD.log` - Bootstrap Logs: `./logs/bootstrap-YYYY-MM-DDTHH:MM:SS.log` - Update Logs: `./logs/update-YYYY-MM-DDTHH:MM:SS.log` Die Logs enthalten: - Input-Bytes, Mode, Model - Roh-Metriken aus Ollama (Token Counts, Durations) - Fehler inkl. curl exit codes ## Auto-Updates aktivieren (systemd --user) ```bash mkdir -p ~/.config/systemd/user cp systemd/user/* ~/.config/systemd/user/ systemctl --user daemon-reload systemctl --user enable --now jr-sql-ai-update.timer systemctl --user list-timers | grep jr-sql-ai ``` ## Troubleshooting - **API nicht erreichbar**: Prüfe `docker ps` und ob Port 11434 lokal erreichbar ist (Host-Netz). - **Langsam/OOM**: setze `BASE_MODEL` kleiner (z.B. 7b) und re-run `./scripts/update.sh`. - **Model fehlt**: `./scripts/update.sh` ausführen und prüfen ob `ollama list` im Container das Model zeigt: `docker exec -it ollama ollama list`