kp
This commit is contained in:
parent
db4db516aa
commit
002f91464c
4 changed files with 131 additions and 9 deletions
|
|
@ -66,6 +66,12 @@ Lade immer zuerst diese Datei. Dann gezielt die passende(n) Referenz-Datei(en).
|
|||
| Teamsbot Director Prompts (done) | c-work/4-done/2026-04-teamsbot-director-prompts.md | Private Operator-Prompts (One-Shot/Persistent), Hybrid SPEECH_TEAMS+Agent (`needsAgent`), `_activeServices`-Registry, Reconnect-Persistenz, 26 Backend-Tests |
|
||||
| **Typed Action Architecture** (canonical) | b-reference/gateway/architecture.md (Abschnitt 4-Schichten), b-reference/gateway/workflow.md (Abschnitt Typed Action Architecture), b-reference/gateway/ai-agent.md (Tool-Generierung aus Catalog), b-reference/gateway/features/trustee.md, b-reference/frontend-nyla/architecture.md (FlowEditor), c-work/3-validate/2026-04-typed-action-architecture.md, c-work/1-plan/2026-04-typed-action-followups.md | Catalog → Methods → Adapter → Runtime; FeatureInstanceRef-Envelope; Pick-not-Push; `*`-Wildcard; Save-with-errors (AC-9); DB-CLI `script_migrate_feature_instance_refs.py`; Vitest+RTL FE-Tests |
|
||||
|
||||
## Infrastruktur & Deployment
|
||||
|
||||
| Thema | Datei | Wann laden |
|
||||
|-------|-------|------------|
|
||||
| Deployment-Infrastruktur | b-reference/platform/infrastructure.md | Infomaniak-Projekte, Naming Convention, VM-Instanzen, Deploy-Patterns |
|
||||
|
||||
## Prozess & Betrieb
|
||||
|
||||
| Thema | Datei | Wann laden |
|
||||
|
|
|
|||
112
b-reference/platform/infrastructure.md
Normal file
112
b-reference/platform/infrastructure.md
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
<!-- status: canonical -->
|
||||
<!-- lastReviewed: 2026-05-24 -->
|
||||
|
||||
# Deployment-Infrastruktur
|
||||
|
||||
## Hosting-Provider
|
||||
|
||||
Infomaniak Public Cloud (OpenStack) unter dem Dach-Account **PowerOnUniverse** (ID 17397).
|
||||
|
||||
Horizon Dashboard: `https://api.pub1.infomaniak.cloud/horizon`
|
||||
|
||||
## Projektstruktur
|
||||
|
||||
Jeder Service-Bereich ist ein eigenes OpenStack-Projekt mit eigenem Netzwerk, eigenen Security Groups, eigenen Floating IPs. Die Kommunikation zwischen Projekten laeuft ueber oeffentliche Floating IPs.
|
||||
|
||||
| Projekt | OpenStack-ID | Zweck |
|
||||
|---|---|---|
|
||||
| **Porta** | PCP-OUJTOXY | Plattform-Kern (Frontend, Backend, DB) |
|
||||
| **Service-LLM** | PCP-MPXPVCR | Private LLM (Ollama + Flask, GPU) |
|
||||
| **Service-Teamsbot** | PCP-KO2UYXT | Teams-Browser-Bot |
|
||||
|
||||
## Naming Convention
|
||||
|
||||
### Schema
|
||||
|
||||
```
|
||||
{bereich}-{env}-{komponente}
|
||||
```
|
||||
|
||||
- **bereich:** `porta` (Plattform-Kern) oder `service` (eigenstaendiger Service)
|
||||
- **env:** `main` (Produktion) oder `int` (Integration)
|
||||
- **komponente:** Forgejo-Repo-Name oder `db`
|
||||
|
||||
### Regeln
|
||||
|
||||
1. Alles fuer PORTA laeuft im Projekt **Porta** mit:
|
||||
- `porta-main-<repo|db>` fuer alle Produktions-Komponenten
|
||||
- `porta-int-<repo|db>` fuer alle Integrations-Komponenten
|
||||
|
||||
2. Alle eigenstaendigen Services laufen je als **separates Projekt** mit:
|
||||
- `service-main-<repo>` fuer Produktion
|
||||
- `service-int-<repo>` fuer Integration (falls vorhanden)
|
||||
|
||||
### Instanzen
|
||||
|
||||
#### Projekt: Porta (PCP-OUJTOXY)
|
||||
|
||||
| Instanzname | Env | Komponente | Flavor | Intern IP | Floating IP | DNS |
|
||||
|---|---|---|---|---|---|---|
|
||||
| `porta-main-ui-nyla` | main | Frontend (React/Vite) | a2-ram4-disk20-perf1 | 10.20.0.92 | 37.156.43.5 | `porta.poweron.swiss` |
|
||||
| `porta-main-platform-core` | main | Backend (FastAPI) | a2-ram4-disk50-perf1 | 10.20.0.197 | 83.228.234.207 | `api.poweron.swiss` |
|
||||
| `porta-main-db` | main | PostgreSQL + pgvector | a2-ram4-disk80-perf1 | 10.20.0.21 | 37.156.40.141 | -- |
|
||||
| `porta-int-ui-nyla` | int | Frontend (React/Vite) | a2-ram4-disk20-perf1 | 10.20.0.182 | 37.156.41.74 | `porta-int.poweron.swiss` |
|
||||
| `porta-int-platform-core` | int | Backend (FastAPI) | a2-ram4-disk50-perf1 | 10.20.0.74 | 37.156.43.14 | `api-int.poweron.swiss` |
|
||||
| `porta-int-db` | int | PostgreSQL + pgvector | a2-ram4-disk80-perf1 | 10.20.0.175 | 37.156.42.67 | -- |
|
||||
|
||||
Key Pair: `ida-laptop` (alle Instanzen)
|
||||
|
||||
#### Projekt: Service-LLM (PCP-MPXPVCR)
|
||||
|
||||
| Instanzname | Env | Komponente | Flavor | DNS / IP |
|
||||
|---|---|---|---|---|
|
||||
| `service-main-llm-private` | main | Ollama + Flask (Vision-LLM) | GPU L4 (24 GB VRAM), 8 vCPU, 16 GB RAM, 150 GB | `83.228.200.109` |
|
||||
|
||||
#### Projekt: Service-Teamsbot (PCP-KO2UYXT)
|
||||
|
||||
| Instanzname | Env | Komponente | Flavor | Floating IP | DNS |
|
||||
|---|---|---|---|---|---|
|
||||
| `service-main-teams-browser-bot` | main | Docker + Playwright/Chrome | a2-ram4-disk20 | 179.237.73.4 | `teamsbot.poweron.swiss` |
|
||||
|
||||
Key Pair: `teamsbot-deploy-key`
|
||||
|
||||
## Deployment-Patterns
|
||||
|
||||
### Porta (git pull + systemd restart)
|
||||
|
||||
Deploy-Workflow: `.forgejo/workflows/deploy.yml` in `plattform-core`
|
||||
|
||||
1. Forgejo Actions Runner verbindet per SSH auf die VM
|
||||
2. `git fetch origin main && git reset --hard origin/main`
|
||||
3. `pip install -r requirements.txt`
|
||||
4. `sudo systemctl restart gateway`
|
||||
|
||||
### Private LLM (rsync + systemd restart)
|
||||
|
||||
Deploy-Workflow: `.github/workflows/deploy.yml` in `service-llm-private`
|
||||
|
||||
1. GitHub Actions (noch nicht migriert auf Forgejo) verbindet per SSH
|
||||
2. `rsync` des Codes nach `/opt/ollama-webapp/app/`
|
||||
3. `pip install -r requirements.txt`
|
||||
4. `sudo systemctl restart ollama-webapp`
|
||||
|
||||
### Teams-Bot (rsync + docker compose, geplant)
|
||||
|
||||
Deploy-Workflow: `.forgejo/workflows/deploy.yml` in `service-teams-browser-bot`
|
||||
|
||||
1. Forgejo Actions Runner verbindet per SSH auf die VM
|
||||
2. `rsync` des Codes nach `/opt/teamsbot/`
|
||||
3. `docker compose build && docker compose up -d`
|
||||
4. Health-Check auf Port 4100
|
||||
|
||||
## Zugriff
|
||||
|
||||
| Ressource | URL / Pfad |
|
||||
|---|---|
|
||||
| Infomaniak Cloud Console | `https://www.infomaniak.com/cloud-computing` |
|
||||
| OpenStack Horizon | `https://api.pub1.infomaniak.cloud/horizon` |
|
||||
| Forgejo (Git + CI/CD) | `https://git.poweron.swiss` |
|
||||
| SSH Key (LLM) | `ollama-deploy-key.pem` |
|
||||
| SSH Key (Teamsbot) | `teamsbot-deploy-key.pem` (geplant) |
|
||||
|
||||
Credentials: siehe lokale Datei `local/notes/key.txt` (nicht im Repo).
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<!-- status: canonical -->
|
||||
<!-- lastReviewed: 2026-04-05 -->
|
||||
<!-- lastReviewed: 2026-05-24 -->
|
||||
|
||||
# PowerOn PORTA -- Komponentenübersicht
|
||||
|
||||
|
|
@ -9,11 +9,11 @@ PowerOn PORTA ist eine Multi-Tenant SaaS-Plattform mit Feature-Store-Modell, AI-
|
|||
|
||||
## Komponenten
|
||||
|
||||
| Komponente | Repository | Technologie | Beschreibung |
|
||||
| Komponente | Repository (Forgejo) | Technologie | Beschreibung |
|
||||
|-----------|-----------|-------------|-------------|
|
||||
| Frontend Nyla | frontend_nyla | React/TypeScript, Vite | Zentrales UI für alle Features |
|
||||
| Gateway | gateway | FastAPI, Python, PostgreSQL | Backend REST-API, Services, AI-Core |
|
||||
| Private LLM | private-llm | Python | Internes LLM für Neutralisierung + sensitive Daten |
|
||||
| Frontend Nyla | ui-nyla | React/TypeScript, Vite | Zentrales UI für alle Features |
|
||||
| Platform Core | plattform-core | FastAPI, Python, PostgreSQL | Backend REST-API, Services, AI-Core |
|
||||
| Private LLM | service-llm-private | Python | Internes LLM für Neutralisierung + sensitive Daten |
|
||||
| Teams Bot | service-teams-browser-bot | TypeScript/Node.js | Bot für Teams-Meeting-Teilnahme |
|
||||
| Wiki | wiki | Markdown | Dokumentation (dieses Repo) |
|
||||
|
||||
|
|
@ -21,10 +21,10 @@ PowerOn PORTA ist eine Multi-Tenant SaaS-Plattform mit Feature-Store-Modell, AI-
|
|||
|
||||
| Layer | Technologie | Pfad |
|
||||
|-------|------------|------|
|
||||
| Backend (Gateway) | FastAPI (Python), PostgreSQL | `@poweron/gateway` |
|
||||
| Frontend | React/TypeScript (Vite) | `@poweron/frontend_nyla` |
|
||||
| AI Core | Multi-Provider (Anthropic, OpenAI, Mistral, Perplexity, Tavily, PrivateLLM) | `@poweron/gateway/modules/aicore` |
|
||||
| DB-Connector | PostgreSQL mit pgvector (Embeddings) | `@poweron/gateway/modules/connectors/connectorDbPostgre.py` |
|
||||
| Backend (Platform Core) | FastAPI (Python), PostgreSQL | `plattform-core` |
|
||||
| Frontend (Nyla) | React/TypeScript (Vite) | `ui-nyla` |
|
||||
| AI Core | Multi-Provider (Anthropic, OpenAI, Mistral, Perplexity, Tavily, PrivateLLM) | `plattform-core/modules/aicore` |
|
||||
| DB-Connector | PostgreSQL mit pgvector (Embeddings) | `plattform-core/modules/connectors/connectorDbPostgre.py` |
|
||||
|
||||
## Feature-Module
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,10 @@ type: `feat` `fix` `refactor` `docs` `test` `chore` `build` · scope: `gateway
|
|||
|
||||
Skip: reine Refactors, Formatting, Lint, Dep-Bumps, Test-only, Wiki-Tippfehler.
|
||||
|
||||
## 2026-05-24
|
||||
|
||||
- 2026-05-24 | docs | infra | **Deployment-Infrastruktur Doku** -- Neue kanonische Seite `b-reference/platform/infrastructure.md`: Infomaniak-Projektstruktur (Porta, LLM, Teamsbot), Naming Convention (`{bereich}-{env}-{komponente}`), VM-Instanzenliste, Deploy-Patterns. TOPICS.md ergaenzt.
|
||||
|
||||
## 2026-05-23
|
||||
|
||||
- 2026-05-23 | feat | gateway+frontend-nyla | **DB Migration Backup/Restore** — Neuer Tab "Migration" auf der Datenbank-Gesundheit-Seite (SysAdmin). Backup: dynamische DB-Auswahl via Registry, Export als JSON. Restore: JSON-Upload, Validierung, Import mit Modus "Neu" (replace) oder "Zusammenfuehren" (merge). System-Objekte (Root-Mandant, Admin-User, Event-User) werden nie geloescht; ihre IDs werden beim Import automatisch auf die Live-IDs remapped. Neue Dateien: `databaseMigration.py`, 4 API-Endpoints unter `/api/admin/database-health/migration/`, MigrationTab in `AdminDatabaseHealthPage.tsx`.
|
||||
|
|
|
|||
Loading…
Reference in a new issue