Doku: Projektstand + Deploy-Workflow fuer Uebergabe aktualisiert
- CLAUDE.md: "Entwickeln & Deployen" auf Windows->Gitea->Bosgame umgestellt (key-basiertes SSH als hitonabi, rsync nach /opt, sudo-Restart) - ROADMAP.md: Projektstand-Sektion (Schritt 1 live auf :9000, Reihenfolge, naechster Schritt = Feature 3 mit geprueften sysfs/psutil-Quellen) - Feature 3 + 5 Status praezisiert Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -30,17 +30,37 @@ FastAPI-Backend + Vanilla-JS-Dashboard. **Leitprinzip: KISS — kein Build-Schri
|
||||
- **3 Modelle / 5 Rollen**: `coder`, `scout`, `vision` (Qwen3-Familie). Modelle werden geswappt, nicht parallel geladen.
|
||||
- **Mission Control**: Produktiv unter `/opt/mission-control` (als Dienst), Source-Repo unter `~/mission-control`.
|
||||
|
||||
## Entwickeln
|
||||
## Entwickeln & Deployen
|
||||
|
||||
- **Niemals direkt in `/opt` arbeiten.** Dev-Instanz aus der Source auf einem anderen Port starten:
|
||||
```bash
|
||||
cd ~/mission-control && python3 -m venv .venv && . .venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
uvicorn app:app --host 0.0.0.0 --port 9001 --reload
|
||||
```
|
||||
Dann `:9001` = Spielwiese, `:9000` = stabil.
|
||||
- **Ausrollen**: `sudo cp -r ~/mission-control/. /opt/mission-control/ && sudo systemctl restart mission-control`
|
||||
- **Logs**: `journalctl -u mission-control -f`
|
||||
**Wo entwickelt wird:** primär auf einem **Windows-PC** (Repo z. B. `F:\Coding Stuff\mission-control`),
|
||||
Zielsystem ist der **Linux-Bosgame**. Lokal nur Smoke-Test (rendert/bootet sauber?), echter
|
||||
Funktionstest nur auf dem Bosgame (dort läuft llama-swap).
|
||||
|
||||
**Lokaler Smoke-Test (Windows):**
|
||||
```bash
|
||||
python -m venv .venv && .venv/Scripts/python -m pip install -r requirements.txt
|
||||
.venv/Scripts/python -m uvicorn app:app --port 9001
|
||||
```
|
||||
Ohne llama-swap ist alles im Offline-Zustand (rote Pill, Warn-Banner) — das ist erwartet.
|
||||
|
||||
**Bosgame-Zugang (SSH, key-basiert, passwortlos):**
|
||||
```bash
|
||||
ssh -i ~/.ssh/id_ed25519_hermes -o IdentitiesOnly=yes hitonabi@192.168.178.151
|
||||
```
|
||||
User ist **`hitonabi`** (klein!). `sudo` braucht ein Passwort (kein passwortloses sudo).
|
||||
|
||||
**Deploy-Kette (Windows → Gitea → Bosgame):**
|
||||
1. Lokal bauen + Smoke-Test → `git push` (origin = Gitea `http://192.168.178.153:3000/Hitonabi/mission-control.git`).
|
||||
2. Bosgame: `cd ~/mission-control && git pull --ff-only` (Source-Repo).
|
||||
3. Nach `/opt` ausrollen — **ohne sudo** (`hitonabi` besitzt `/opt/mission-control`), `.venv` ausnehmen:
|
||||
```bash
|
||||
rsync -a --exclude='.git' --exclude='.venv' --exclude='__pycache__' --exclude='*.pyc' ~/mission-control/ /opt/mission-control/
|
||||
```
|
||||
4. `sudo systemctl restart mission-control` (Passwort nötig). Prod = `:9000`, Dev-Spielwiese = `:9001`.
|
||||
5. **Niemals direkt in `/opt` arbeiten.** Logs: `journalctl -u mission-control -f`.
|
||||
|
||||
Statische Dateien werden je Request frisch von Platte gelesen → UI-Änderungen wirken schon nach
|
||||
rsync; **Python-Code-Änderungen brauchen den Restart**.
|
||||
|
||||
## Konventionen
|
||||
|
||||
|
||||
Reference in New Issue
Block a user