Files
mesh-configs/skills/autonomous-ai-agents/multi-agent-mesh/references/projekt-persoent.md
T

84 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Projekt: PersoEnt (Stand 19.07.2026 — API deployed von Mesh A+B)
## Kern
- **Domain:** persoent.perfekt-ohne-en.de (live, SSL)
- **Bedeutung:** Persönliche Daten + Person Entwicklung
- **Claim:** „Finde raus, was dich wirklich bewegt."
- **Preis:** 100% kostenlos, 4free
## Deployment (NEU 19.07.)
| Komponente | Status | Pfad/URL |
|------------|--------|----------|
| Landing-Page | ✅ | https://persoent.perfekt-ohne-en.de |
| API (Flask) | ✅ | https://persoent.perfekt-ohne-en.de/api/health |
| PocketBase | ✅ | /opt/pocketbase (v0.25.0, systemd, Port 8090) |
- **Code:** `/var/www/persoent.perfekt-ohne-en.de/backend/app.py`
- **Service:** `systemctl status persoent-api` (User: www-data)
- **Nginx:** proxy `/api/` → `127.0.0.1:5000`
- **Venv:** `/var/www/persoent.perfekt-ohne-en.de/backend/venv/`
- **Entwickelt von:** Mesh Agent A+B (B brainstormte + codete, A deployte)
### API-Endpoints
| Methode | Pfad | Beschreibung |
|---------|------|-------------|
| GET | `/api/health` | Health-Check (`{"built_by":"Mesh Agent A+B"}`) |
| POST | `/api/health/record` | Speichern (JSON: weight, blood_pressure, pulse, user_id) |
| GET | `/api/health/records?user_id=X` | Paginierte Abfrage |
## Tech
- **DB:** PocketBase (SQLite, Go-Binary, self-hosted auf VPS)
- **Auth:** Google OAuth (PocketBase-integriert)
- **Frontend:** HTML/JS + PocketBase REST-API (kein Java/Spring für MVP)
- **Backend:** Flask (Python) — deployed 19.07.
- **Konzept:** /root/persoent-konzept.md (v7)
## Deployment (19.07. — A deployt B's Flask-Code)
**Backend:** `/var/www/persoent.perfekt-ohne-en.de/backend/app.py` (Flask)
- venv: `/var/www/persoent.perfekt-ohne-en.de/backend/venv` (Flask, flask-cors, requests)
- systemd: `persoent-api.service` (User www-data, Port 5000, host 127.0.0.1)
- nginx: `location /api/ { proxy_pass http://127.0.0.1:5000/api/; }` + SSL
- Live: `https://persoent.perfekt-ohne-en.de/api/health` → `{"built_by":"Mesh Agent A+B",...}`
**PocketBase:** `/opt/pocketbase/pocketbase` (v0.25.0, systemd `pocketbase.service`, Port 8090, host 127.0.0.1)
- Superuser: `admin@persoent.local` / `P3rs0entAdm1n!`
- Collection `health_records`: weight(number), blood_pressure(text), pulse(number), user_id(text)
- Token holen: `POST /api/collections/_superusers/auth-with-password` → `token` Feld
### 🔥 PocketBase 0.25 Filter-Gotchas (19.07.)
1. **Filter-Syntax:** `filter=user_id = "value"` (mit Leerzeichen + Doppel-Anführungszeichen). `user_id='value'` oder ohne Space → 400.
2. **Auth für Filter nötig:** Wenn `viewRule`/`listRule` leer (öffentlich), liefert GET trotzdem 400 bei Filter. Lösung: Admin-Token im `Authorization`-Header mitschicken (`PB_TOKEN` in app.py).
3. **Token rotiert:** Superuser-Token hat Exp (ca. 30d). Bei 401 neu holen.
4. **Patches auf Collection (viewRule etc.) werden von tirith auf A als destruktiv blockiert** → lieber API-Code mit Token ausstatten statt Collection öffentlich zu machen.
### Fehler beim Deploy (gemieden)
- `python3 -m venv` schlägt fehl ohne `python3.12-venv` → `apt install python3.12-venv`
- `patch`/write_file auf `/etc/systemd/...` blockiert → via terminal `cp` + `systemctl`
- Nach `patch` auf app.py: Besitzrechte wechseln auf www-data (`chown www-data:www-data app.py`), sonst systemd "Permission denied"
- `render()` in makeMove zerstörte Coin-Animation → bei TicTacToe rausgenommen (siehe unten)
### TicTacToe-Bug (19.07. — separater Task)
Symptom: Button setzte Farbe (CSS) aber kein X/O-Symbol.
Ursache: `flipCoin()` setzte nur CSS-Klasse, kein SVG-Inhalt. Fix: SVG-Inhalt in `flipCoin()` injizieren + `render()`-Aufruf nach Player-Move entfernen (zerstörte Animation). Datei: `/var/www/tictactoe.perfekt-ohne-en.de/html/index.html`.
## Alleinstellungsmerkmal
- **Kausal-KI:** Korreliert ALLE Lebensbereiche (Ernährung×Schlaf×Stimmung×Sport)
- **Gesundheitsdetektiv:** EGym/Cleverfit-Daten × Symptom-Tracking → Ursachen finden
- **Form-Builder:** 85+ vordefinierte + unbegrenzt eigene Felder, 14 Kategorien, Drag & Drop
## Mesh-Brainstorming (Agent B, 18.07.)
Vier neue Kategorien: 🌍 Umwelt, 👥 Sozial, 📵 Digital Detox, ✨ Momente
## Quellen
- Google Fit / Health Connect (27 Felder)
- EGym / Cleverfit (Zukunft)
- Sportuhren: Garmin, Polar, Fitbit, Apple Watch
- fitness.perfekt-ohne-en.de + kalorienrechner.perfekt-ohne-en.de
## Nächste Schritte
- [ ] PocketBase installieren → API voll funktionsfähig
- [ ] Datenmodell finalisieren
- [ ] Phase 1: Anonymer Pool + Login + Dashboard
- [ ] Frontend: HTML/JS mit PocketBase REST-API