Build_Deployment_&_Laufzeit
Build Deployment & Laufzeit
Seitenregeln
- Single Source of Truth für Artefakte, Orchestrierung und das Prozessmodell der laufenden Anwendung (inkl. UI‑Build).
- Konfiguration nur als Quelle/Schalter (ENV, Files, Admin‑UI), keine Geheimniswerte.
- Release‑, Update‑ und Rollback‑Verfahren gehören hier; keine Host‑/Edge‑Details.
- Frontend gehört hier (Build, Theming, i18n, A11y), nicht zu Edge.
- Aktualisieren bei: Release‑Prozessänderung, neue Services/Worker, ENV‑Schema‑Änderung.
- Verweise auf: „Architektur & Entscheidungen“ (Warum), „Plattform, Netzwerk & Edge“ (Ingress/TLS), „Betrieb, Observability & Notfälle“ (Runbooks).
- Benenne betroffene Dateien inkl. Pfad als Unterpunkte, wenn diese für zukünftige Änderungen relevant.
Zweck und Abgrenzung
- Beschreibt, wie „n8n aktien“ gebaut, ausgeliefert und zur Laufzeit betrieben wird (Container/Images, Workflows, Start/Stop/Update).
- Umfasst aktuell: n8n (App/ETL), PostgreSQL (Datenhaltung). Metabase ist noch nicht ausgerollt.
- Keine Edge/Ingress‑Details (siehe „Plattform, Netzwerk & Edge“). Keine Geheimnisse/Secrets.
Repositories/Branching/Versionierung
- Workflows liegen in der n8n‑Datenbank (internes Persistenzmodell).
- Externes Git‑Repository für Workflows/Infra ist derzeit nicht angebunden.
- Export/Import von Workflows erfolgt ad hoc über die n8n‑UI (JSON‑Export) bei Bedarf.
Build/Artefakte/Container‑Images
- Laufende Container/Images:
- n8n: Image n8nio/n8n:latest, Container: n8n-n8n-1
- PostgreSQL: Image postgres:16-alpine, Container: n8n-n8n-postgres-1
- Persistenz:
- Docker‑Volume für Postgres: n8nn8npg_data (Mount: /var/lib/postgresql/data)
- Netzwerk:
- Gemeinsames Docker‑Netz: deploy_internal
- Postgres DNS/Alias im Netz: n8n-postgres (Alias zusätzlich: n8n-n8n-postgres-1)
Orchestrierung/Topologie (Services/Dependencies)
- Services:
- n8n (App/ETL/Orchestrierung)
- PostgreSQL (DB für n8n‑Systemtabellen und Projekt‑DB „mf_app“)
- Abhängigkeiten:
- n8n → PostgreSQL (Host: n8n-postgres, Port 5432)
- Datenbank(en):
- n8n‑System-DB: n8n (Schema durch n8n Migrationen)
- Projekt‑DB: mfapp (Schema core, Tabellen: securities, listings, pricesdaily, fxrates, corporateactions, liquidity, fundamentals, mfrank, signals, alertslog, marketstate, newscache, aievaluations, config, jobruns, data_quality)
- Workflows (UI‑Namen):
- Haupt: „mf_workflow - Add Security (ISIN → Listing → Prices)“
- Marktstatus: „Market State Update“
Konfigurationsquellen (ohne Werte)
- n8n (ENV):
- DB_TYPE=postgresdb
- DBPOSTGRESDBHOST=n8n-postgres
- DBPOSTGRESDBPORT=5432
- DBPOSTGRESDBDATABASE=n8n
- DBPOSTGRESDBUSER=n8n
- DBPOSTGRESDBPASSWORD=…
- PostgreSQL (mf_app):
- Datenbank: mfapp, Schema: core, searchpath: core, public
- n8n‑Credentials (UI, gespeichert verschlüsselt):
- Postgres Credential „mfapp“ (Host n8n-postgres, DB mfapp, User mfapp)
- Header Auth „openfigiapi“ (Header X-OPENFIGI-APIKEY, Domain: api.openfigi.com)
- Query Auth „alpha_vantage“ (Query apikey=…, Domain: www.alphavantage.co)
- Query Auth „simfin“ (Query api-key=…, Domain: api.simfin.com)
- Query Auth „fmp“ (Query apikey=…, Domain: financialmodelingprep.com)
Start/Stop/Update/Rollback
- Start/Stop (Container‑Ebene):
- docker compose up -d (Start/Deploy)
- docker compose restart n8n (n8n neu starten)
- docker compose restart n8n-postgres (Postgres neu starten)
- docker compose down (Stop, Volumes bleiben erhalten)
- Update:
- docker compose pull n8n && docker compose up -d n8n (n8n aktualisieren)
- docker compose pull postgres && docker compose up -d n8n-postgres (DB‑Image aktualisieren; vorher Backup)
- Rollback:
- Vorhalte der vorherigen Image‑Tags; Start via docker compose up -d mit altem Tag
- Daten: Wiederherstellung via pgdump/pgrestore (siehe „Daten, Suche, Backups & Integrationen“)
Prozessmodell (App‑Server, Worker/Jobs, Scheduler)
- App‑Server:
- n8n läuft als einzelner Service (HTTP‑UI + Workflow‑Engine).
- Jobs/Workflows (derzeit manuell/On‑Demand):
- „mf_workflow - Add Security (ISIN → Listing → Prices)“
- Form: Add ISIN (n8n form)
- OpenFIGI: ISIN → XETR mapping (HTTP)
- Set: ISIN+Name+Ticker+MIC
- PG: Upsert security
- PG: Upsert listing (XETR)
- AlphaVantage: Daily (compact, JSON) → Code: Parse AV JSON → rows → PG: Upsert prices (AV, last 100)
- Stooq: Daily CSV (full) → Code: Parse Stooq CSV → rows → PG: Upsert prices (Stooq, full)
- PG: Update indicators (SMA200/52W/3D)
- PG: Compute signal (price-only test)
- PG: Inspect last signal (Ad‑hoc)
- „Market State Update“
- VIX Fetch (Stooq vi.c CSV)
- VIX Parse (Code, F&G‑Proxy + 5‑Tage‑Delta)
- Market State Upsert (Postgres)
- Scheduler:
- Aktuell keine Cron‑Trigger aktiv; Ausführung manuell über UI.
- Frontend (aktuell):
- n8n Form („Form: Add ISIN“) als minimaler UI‑Einstiegspunkt zur Datenerfassung.
- Formularfelder: 1× Textfeld „ISIN“ (Validierung erfolgt im Workflow).
- Dashboards:
- Metabase ist noch nicht installiert/angebunden (keine Artefakte vorhanden).
- i18n/A11y/Theming:
- n8n Standard‑UI; keine eigenen Themes/Sprachen konfiguriert.