Project

General

Profile

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: n8n_n8n_pg_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: mf_app (Schema core, Tabellen: securities, listings, prices_daily, fx_rates, corporate_actions, liquidity, fundamentals, mf_rank, signals, alerts_log, market_state, news_cache, ai_evaluations, config, job_runs, 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
    • DB_POSTGRESDB_HOST=n8n-postgres
    • DB_POSTGRESDB_PORT=5432
    • DB_POSTGRESDB_DATABASE=n8n
    • DB_POSTGRESDB_USER=n8n
    • DB_POSTGRESDB_PASSWORD=…
  • PostgreSQL (mf_app):
    • Datenbank: mf_app, Schema: core, search_path: core, public
  • n8n‑Credentials (UI, gespeichert verschlüsselt):
    • Postgres Credential „mf_app“ (Host n8n-postgres, DB mf_app, User mf_app)
    • Header Auth „openfigi_api“ (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 pg_dump/pg_restore (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 & UX (Technologie, Theming, IA, Performance, i18n, A11y)

  • 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.