{ "title": "Börsenchecker", "version": "0.2.0", "description": "Depotverwaltung fuer Aktien, Kaufdaten, Kursverlauf und Waehrungsumrechnung.", "enabled_by_default": true, "app_scope": "module", "installable": true, "desktop": { "available": true, "show_on_desktop": true, "show_in_start_menu": true }, "widgets": [ { "widget_id": "boersenchecker-refresh", "title": "Boersenkurse", "icon": "BC", "zone": "sidebar", "default_enabled": false, "supports_public_home": false, "summary": "Kurse fuer hinterlegte Depot-Positionen manuell nachziehen.", "content": "Widget fuer Schnellabruf des letzten Kursstatus und manuellen Marktrefresh.", "launch_app_id": "boersenchecker", "action_label": "App oeffnen", "widget_type": "action-panel", "status_api": "/api/boersenchecker/index.php?path=v1/widget/status", "actions": [ { "action_id": "refresh-quotes", "label": "Kurse abrufen", "endpoint": "/api/boersenchecker/index.php?path=v1/widget/refresh-quotes", "method": "POST" } ] } ], "cron_jobs": [ { "job_id": "refresh-quotes", "label": "Boersenkurse aktualisieren", "description": "Laedt fuer alle aktiven Depot-Positionen neue Alpha-Vantage-Kurse.", "endpoint_path": "/api/boersenchecker/index.php?path=v1/cron/refresh-quotes", "method": "POST", "payload": { "trigger_source": "cron" }, "default_enabled": false, "default_cron": "15 */6 * * 1-5", "lock_minutes": 20 } ], "setup": { "fields": [ { "name": "use_separate_db", "label": "Eigene Modul-DB nutzen", "type": "checkbox", "required": false, "help": "Wenn aktiv, werden die DB-Daten unten verwendet. Sonst wird die Nexus-Base-DB genutzt." }, { "name": "db.driver", "label": "DB Driver", "type": "text", "required": false, "help": "z.B. pgsql, mysql, sqlite" }, { "name": "db.host", "label": "DB Host", "type": "text", "required": false }, { "name": "db.port", "label": "DB Port", "type": "number", "required": false }, { "name": "db.dbname", "label": "DB Name", "type": "text", "required": false }, { "name": "db.schema", "label": "DB Schema", "type": "text", "required": false }, { "name": "db.user", "label": "DB User", "type": "text", "required": false }, { "name": "db.password", "label": "DB Passwort", "type": "password", "required": false }, { "name": "report_currency", "label": "Standard-Berichtswahrung", "type": "text", "required": false, "help": "Zielwaehrung fuer Portfolio-Summen, z.B. EUR." }, { "name": "fx_max_age_hours", "label": "Maximales FX-Alter (Stunden)", "type": "number", "required": false, "help": "Wird bei manueller Aktualisierung ueber das Modul fx-rates genutzt." }, { "name": "alpha_vantage_api_key", "label": "Alpha Vantage API Key", "type": "password", "required": false, "help": "API Key fuer Aktienkursabrufe und Suche ueber Alpha Vantage." }, { "name": "alpha_vantage_timeout_sec", "label": "Alpha Vantage Timeout (Sek.)", "type": "number", "required": false, "help": "HTTP-Timeout fuer API-Abrufe." }, { "name": "alpha_vantage_min_interval_minutes", "label": "Alpha Vantage Mindestabstand (Min.)", "type": "number", "required": false, "help": "Wenn bereits ein frischer Alpha-Vantage-Kurs existiert, wird dieser wiederverwendet statt erneut abzurufen." }, { "name": "auto_refresh_quotes_enabled", "label": "Automatischen Kursabruf aktivieren", "type": "checkbox", "required": false, "help": "Fuehrt Kursupdates automatisch beim ersten Modulaufruf nach Ablauf des Intervalls aus." }, { "name": "auto_refresh_quotes_interval_hours", "label": "Intervall fuer automatischen Kursabruf (Stunden)", "type": "number", "required": false, "help": "Nach Ablauf dieses Intervalls wird beim naechsten Modulaufruf ein automatischer Kursabruf gestartet." } ] }, "interval_tasks": [ { "name": "auto_refresh_quotes", "label": "Automatischer Kursabruf", "callback": "scheduled_refresh_quotes", "enabled_setting": "auto_refresh_quotes_enabled", "interval_setting": "auto_refresh_quotes_interval_hours", "default_enabled": false, "default_interval_hours": 6, "lock_minutes": 20 } ], "db_defaults": { "driver": "pgsql", "host": "localhost", "port": 5432, "dbname": "", "schema": "public", "user": "", "password": "" }, "auth": { "required": true, "users": [], "groups": [] } }