CommunitySchreiben & Editierengithub.com

quant-buddy-view · 量化看板发布

Verwandle deine quantitativen Research-Logiken in serverlose Daten-APIs und teilbare, automatisch aktualisierende Dashboard-Webseiten.

Was ist quant-buddy-view · 量化看板发布?

quant-buddy-view ist ein AI-Agenten-Skill, mit dem du die in quant-buddy-skill entdeckten Metriken und Formeln in öffentlich teilbare, live aktualisierende Web-Dashboards umwandeln kannst. Der Skill besteht aus drei Kernfunktionen: (1) Registrieren eines Formelpakets (`formula_package`) – eine Gruppe von Formeln und deren Lesemodi werden auf dem Server registriert, um einen `package_id` + `signature` zu erhalten. Die Daten werden bei Aktualisierung der zugrunde liegenden Daten automatisch neu berechnet. (2) Dashboard-HTML generieren (`build_dashboard`) – aus einer Spezifikation, die beschreibt, welche Outputs in welchen Diagrammen/Tabellen angezeigt werden sollen, wird ein Live-Dashboard-HTML erstellt, das die Daten beim Öffnen der Seite in Echtzeit abruft. (3) Veröffentlichung als gehostete statische Seite (`static_page`) – das HTML wird in einen Objektspeicher hochgeladen und erhält einen öffentlichen Link unter `https://pages.quantbuddy.cn/`. Der Skill ist vollständig eigenständig – er benötigt nur einen `api_key` in der `config.json` – aber die Formelvalidierung setzt voraus, dass der zugehörige Skill `quant-buddy-skill` installiert ist, um die Formeln vor der Registrierung zu testen. Der Skill wird von Claude Code, Cursor und anderen AI-Agentenplattformen unterstützt.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add pseudo-longinus/quant-buddy-view

Installed? Explore more Schreiben & Editieren skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

quant-buddy-view · Quant-Dashboard-Veröffentlichung

Wandele die in quant-buddy-skill entdeckten Metriken in ein öffentlich teilbares Web-Dashboard um. Dieser Skill führt keine Kursabfragen oder Backtest-Explorationen durch (das ist die Aufgabe von quant-buddy-skill), sondern ist nur für drei Dinge zuständig:

  1. Registrieren eines Formelpakets (formula_package) – registriere eine Gruppe von Formeln + Lesemodi für deren Ausgaben auf dem Server und erhalte package_id + signature. Wenn die zugrunde liegenden Daten aktualisiert werden, berechnet der Server automatisch neu – die abgerufenen Daten sind immer die aktuellsten.
  2. Dashboard-HTML erstellen (build_dashboard) – verwende eine Spezifikation, die beschreibt, „welche Ausgaben in welchen Diagrammen/Tabellen angezeigt werden sollen“, und kompiliere daraus ein Live-Datenabruf-HTML (das Gerüst ist in sich geschlossen, die Daten werden beim Öffnen in Echtzeit abgerufen).
  3. Gehostete Veröffentlichung (static_page) – lade das HTML in einen Objektspeicher hoch und erhalte einen öffentlichen Link unter https://pages.quantbuddy.cn/....

Wann dieser Skill vs. quant-buddy-skill verwendet wird

  • Exploration / einmalige Abfrage („Heutige Kursänderung von Maotai“, „Führe einen Backtest zum Golden Cross aus“) → verwende quant-buddy-skill.
  • Für eine Seite, die wiederholt betrachtet, an andere weitergegeben werden kann und deren Daten sich automatisch aktualisieren → wechsle nach der Exploration zu quant-buddy-view.

Voraussetzung: quant-buddy-skill muss zuerst installiert sein

Dieser Skill ist zur Laufzeit eigenständig (Registrierung, Erstellung, Veröffentlichung benötigen nur den api_key aus config.json und sind nicht von quant-buddy-skill-Code abhängig). Die normale Nutzung hat jedoch eine harte Hürde: Vor der Registrierung eines Formelpakets muss jede Formelgruppe zuerst in quant-buddy-skill mit runMultiFormulaBatchStream erfolgreich ausgeführt werden, um die Datenausgabe zu bestätigen (siehe „Harte Regeln vor der Registrierung“ unten). Daher kann die Formelvalidierung ohne installiertes quant-buddy-skill nicht korrekt durchgeführt werden.

Wenn quant-buddy-skill noch nicht installiert ist, installiere es in dieser Reihenfolge:

  1. Bevorzugt: GitHub-Installation (npx skills) – quant-buddy-skill und dieser Skill gehören zum selben GitHub-Repository pseudo-longinus/quant-buddy-skills:

    # Neuinstallation (noch nie installiert)
    npx skills add pseudo-longinus/quant-buddy-skills -g --all
    # Bereits installiert, nur Update
    npx skills update pseudo-longinus/quant-buddy-skills -y
    # Überprüfen, wo installiert / ob erfolgreich:
    npx skills list -g --json
    

    Bei Symlink / EPERM-Fehlern unter Windows, hänge --copy an das Ende des Befehls an und wiederhole ihn. Der Installationspfad ist normalerweise ~/.agents/skills/quant-buddy-skill.

  2. Fallback: Lade ein ZIP-Archiv herunter und entpacke es manuell (wenn kein node/npx vorhanden oder Netzwerk eingeschränkt ist) – lade das offizielle quant-buddy-skill ZIP herunter, entpacke es in das Skills-Verzeichnis unter quant-buddy-skill/ (entpacke zuerst in ein temporäres Verzeichnis; wenn es ein verschachteltes quant-buddy-skill/ enthält, nimm das innere; behalte den vorhandenen api_key in config.json). quant-buddy-skill enthält scripts/self_update.py, das mit --url / --zip-path + --sha512 + --version zur validierten Entpackung verwendet werden kann – verwende es vorzugsweise.

Verzeichnisstruktur: Platziere quant-buddy-skill und quant-buddy-view nebeneinander auf derselben Ebene:

<Skills-Verzeichnis>/
  quant-buddy-skill/      ← Exploration / Formelvalidierung (runMultiFormulaBatchStream, confirmDataMulti)
  quant-buddy-view/       ← Dieser Skill: Formelpaket registrieren / Dashboard erstellen / Veröffentlichen

Diese nebeneinander liegende Struktur wird empfohlen: Wenn formula_package import (Migration alter Anmeldedaten) keinen expliziten Pfad findet, greift es auf das „gleichrangige ../quant-buddy-skill“ als Fallback zurück.

  1. Konfiguration: Konfiguriere api_key in quant-buddy-skill (beide Skills haben unabhängige Keys). Nach der Installation kannst du dort Formeln validieren und dann zurück zu diesem Skill gehen, um sie register (zu registrieren).

Migration für bestehende Benutzer: Bereits in der alten Version von quant-buddy-skill registrierte Formelpakete müssen nicht erneut registriert werden – verwende python scripts/formula_package.py import ..., um die Anmeldedaten auf einmal in diesen Skill zu importieren und die alte package_id für Datenabfragen weiterzuverwenden (siehe tools/formula_package.md im Abschnitt „Migration von Anmeldedaten aus altem quant-buddy-skill“).

Einstiegspunkte (zuerst den Typ bestimmen)

Agent-Routing-Regel: Wenn der Benutzer Vorlagenmarkt / offizielle Vorlagen / öffentliche Vorlagen / veröffentlichte Vorlagen erwähnt → verwende zuerst scripts/static_page.py templates / template, um die online öffentlichen Vorlagen zu lesen; lade das HTML über die download_url aus dem template-Rückgabewert direkt von OSS herunter, ersetze das Ziel, den Text und die Formelpaket-Anmeldedaten und lade es dann mit upload als eigene Seite hoch. Wenn der Benutzer eine spezifische Seitenform wünscht, aber keine öffentliche Vorlage angibt → siehe zuerst lokal examples/ (Offline-Fallback für Online-Vorlagen und Vorlagenentwicklungsquelle); wenn der Benutzer von der Anforderung bis zum Link möchte → siehe workflows/; wenn der Benutzer eine komplexe benutzerdefinierte Seite oder Migration einer alten HTML-Seite möchte → siehe guides/.

TypAnzeigenameEinstiegspunktWann verwenden
SeitenvorlageEinzelaktien-Schnellübersichtexamples/single-stock/Profilseite für ein einzelnes Ziel: Zusammenfassung + Zahlenkarten für aktuellen Preis/Änderung/20d/60d/PE/PB/Volumen + Hauptpreisdiagramm; muss mit spec.template.json beginnen
SeitenvorlageEinzelaktien-Bewertungs-Checkexamples/valuation-financial-profile/Bewertungs- und Finanzseite für ein einzelnes Ziel: Historische PE/PB/PCF-Bänder, Finanztrends, Cashflow-Qualität, Bewertungsänderungsattribution; wird mit page.template.html geliefert
SeitenvorlageIndex-Anomalie-Rankingexamples/index-anomaly/Überwachung von Anomalien in Index-/Aktienpool-Komponenten: Anomalie-Ranking + Gewinn-/Verlustverteilung + Indexverlauf; wird mit page.template.html geliefert, dunkles Interface, data-kernel Datenabruf
SeitenvorlageMulti-Faktor-Aktienscreening-Dashboardexamples/multi-factor-screener/Thematischer Aktienpool + Multi-Faktor-Scoring + TopN-Ranking + Backtest/rankIC + Kerzencharts + Formel-Audit; feste Rollen RANK / BACKTEST / KLINE_*, RANK wird auf dem ersten Bildschirm bevorzugt gerendert
SeitenvorlageTäglicher Rohstoff-Long/Short-Berichtexamples/commodity-daily/Täglicher Rohstoff-Futures-Bericht: dominante Long/Short-Konflikte nach Sektor + heutige Anomalien + Sparklines der führenden Kontrakte; wird mit page.template.html geliefert
Allgemeiner WorkflowStandard-Live-Dashboardworkflows/dashboard-end-to-end.mdWenn der Benutzer „ein teilbares Dashboard/einen Link erstellen“ möchte, aber keine bestimmte Seitenvorlage angibt
EntwicklungsanleitungBenutzerdefinierte Seiteguides/bespoke-page.mdFür benutzerdefinierte HTML/CSS/SVG-Seiten, die build_dashboard nicht erstellen kann, oder für Migration vorhandener HTML-Seiten
MigrationstoolAlte Seite mit öffentlicher Hülle versehentools/retrofit_share_shell.mdBereits veröffentlichtes/generiertes HTML muss alte QR-Codes, alte Kopf- und Fußzeilen entfernen und dieselbe page_id für Updates beibehalten

Harte Regel: Wenn der Benutzer „Profilseite einer bestimmten Aktie/eines bestimmten Index, Aktienprofil, Einzelaktienprofil, Seite eines einzelnen Ziels“ wünscht, lies zuerst examples/single-stock/README.md, kopiere examples/single-stock/spec.template.json als Ausgangspunkt für die Spezifikation und behalte template: "single-stock" bei. Schreibe keine alte Minimal-Spezifikation mit „1 Preiskurve + 4 Zahlenkarten“ von Hand; build_dashboard lehnt dieses alte Gerüst ab. Harte Regel: Wenn der Benutzer fragt, „ob diese Aktie teuer ist / ob sich die Fundamentaldaten verbessern / Bewertungs- und Finanzprofil / historische PE/PB-Bänder / Finanztrends / Cashflow-Qualität“ und dies als Landingpage oder öffentlichen Link möchte, lies zuerst examples/valuation-financial-profile/README.md, kopiere examples/valuation-financial-profile/page.template.html als Ausgangspunkt, validiere und registriere das von dieser Vorlage erforderliche Formelpaket; falle nicht auf eine normale single-stock-Kartenseite zurück. Harte Regel: Wenn der Benutzer „Anomalien in den Komponenten eines Index / Aktienpools, Anomalie-Ranking, Drag-Ranking-ähnliche Auflistung“ wünscht (z. B. „Welche Aktien im CSI 500 sind heute anomal?“, „CSI 300 Anomalie-Überwachung“, „SSE 50 Gewinn-/Verlustranking“), lies zuerst examples/index-anomaly/README.md, kopiere examples/index-anomaly/page.template.html als Ausgangspunkt, ersetze die __INDEX_*__-Platzhalter und binde data-kernel.js ein, bevor du veröffentlichst; schreibe kein helles/allgemeines HTML von Hand, das vom Thema abweicht. Harte Regel: Wenn der Benutzer „thematischer Aktienpool / Konzeptaktien / Branchenpool + Multi-Faktor-Scoring / TopN / Backtest / rankIC / Kerzencharts / Formel-Audit“ für eine Aktien-Screening-Arbeitsplatzseite wünscht, lies zuerst examples/multi-factor-screener/README.md, kopiere examples/multi-factor-screener/page.template.html als Ausgangspunkt; die Formelpaket-Rollen sind auf RANK / BACKTEST / KLINE_* festgelegt, RANK muss auf dem ersten Bildschirm bevorzugt gerendert werden, BACKTEST und KLINE_* können lokal herabgestuft werden. Harte Regel: Bei der Wiederverwendung einer öffentlichen Vorlage gehören die package_id + signature im Vorlagen-HTML dem ursprünglichen Autor; du musst die Formeln gemäß dem aktuellen Benutzerziel erneut validieren, dein eigenes Formelpaket registrieren und die Anmeldedaten auf der Seite ersetzen, bevor du sie veröffentlichst. Verwende die ursprünglichen Anmeldedaten der öffentlichen Vorlage nicht direkt als Datenquelle für die Benutzerseite. Harte Regel: Der subtitle und die „Zusammenfassung“ auf der Profilseite eines einzelnen Ziels dürfen nur Werte verwenden, die während der Build-Phase von build_dashboard in Echtzeit aus den endgültigen Outputs abgerufen wurden. Wenn das Skript „Text stimmt nicht mit Echtzeit-Datenabrufergebnissen überein“ zurückgibt, schreibe den Text gemäß den zurückgegebenen facts neu, bevor du das HTML generierst/hochlädst; verwende keine alten Abfrageergebnisse oder manuelle Schätzungen. Harte Regel: Alle Landingpages müssen die gemeinsamen Komponenten aus assets/share-shell/ integrieren. Die Vorlagen sind nur für den Hauptinhalt und getPosterData() verantwortlich; Kopfzeilen, Fußzeilen, Aktualisierungs-Schaltflächen, Sharing-Poster-Overlays, Link-Kopieren, Kopieren/Herunterladen von PNG und feste Poster-Kopf-/Fußzeilen werden alle von der gemeinsamen Shell bereitgestellt. Kopiere oder modifiziere nicht eigenmächtig alte QR-Code-Blöcke, alte Aktualisierungsschaltflächen oder alte Sharing-Overlays in einzelnen Vorlagen. Harte Regel: Das Sharing-Poster wird standardmäßig von der gemeinsamen poster.js als Frontend-Screenshot des Seiten-Hauptteils generiert – lieber weniger als mehr; Vorlagen können data-qb-poster-target verwenden, um den Kern-Screenshot-Bereich zu markieren, und getPosterData() stellt nur Titel/Zusammenfassung und strukturierte Fallback-Kandidaten bereit; verlasse dich nicht darauf, dass der Agent das Poster-Layout von Hand schreibt, und stopfe nicht den gesamten Seiteninhalt in sections. Harte Regel: Wenn der Benutzer „bereits generiertes HTML modifizieren / QR-Code entfernen / aktuelle Kopf-/Fußzeilen entfernen / an feste Kopf-/Fußzeilen anpassen“ möchte, verwende vorzugsweise scripts/retrofit_share_shell.py. Verlasse dich nicht auf lange Prompts, damit der Agent DOM von Hand löscht; behalte standardmäßig den Hero-Bereich des alten Seitenkörpers bei, entferne nur die QR-Code-Karte und die alte Fußzeile darin und füge dann direkt die gemeinsamen Kopf-/Fußzeilen am Anfang/Ende des <body> ein; erstelle zuerst eine lokale migrierte Version zur Überprüfung und überschreibe dann dieselbe page_id mit update:true.

  1. Formelpaket registrieren (scripts/formula_package.py register)

    • formulas: Eine Gruppe von "Variable = Ausdruck" (verwende die in quant-buddy-skill während der Exploration validierten Formeln).
    • reads: Liste der externen Ausgaben, jede Deklaration enthält output (Ausgabenname) + read_mode (Lesemodus).
    • Bei Erfolg werden package_id + signature zurückgegeben und automatisch in output/formula_packages/<package_id>.json gespeichert.
    • ⚠️ Die signature wird nur einmal bei der Registrierung im Klartext zurückgegeben; wenn die lokalen Anmeldedaten verloren gehen, sind sie nicht wiederherstellbar (kann mit refresh rotiert werden).
  2. Dashboard erstellen (scripts/build_dashboard.py)

    • Schreibe eine Spezifikation: title + panels[], jedes Panel rendert einen bestimmten output als line/bar/table/number/text/raw.
    • Wenn eine Seitenvorlage zutrifft, kopiere zuerst spec.template.json oder page.template.html aus dem Vorlagenverzeichnis und ersetze dann Assets, Daten, erklärenden Text und optionale Module.
    • Die Seite ruft Daten in Echtzeit ab (siehe unten „Datenabruf: Echtzeit-Datenabruf“); mode muss nicht in die Spezifikation geschrieben werden.
    • Die Ausgabe wird standardmäßig in output/pages/<slug>.html geschrieben; durch Übergabe von "upload": true können Erstellung und Veröffentlichung in einem Schritt erfolgen.
  3. Veröffentlichung / Verwaltung (scripts/static_page.py)

    • upload: Lade HTML hoch → erhalte page_id + öffentliche url; kann title (Standardwert aus <title>) und description (Seitenbeschreibung, ≤1000 Zeichen, für Listen-/Detailansichten) enthalten.
    • update: Ersetze den Inhalt einer bereits veröffentlichten Seite, URL / page_id bleiben unverändert (verwende dies, wenn eine bereits geteilte Seite ergänzt/angepasst werden soll; Besucher sehen beim Aktualisieren den neuen Inhalt, ohne neues Kontingent zu verbrauchen). Es können auch nur title / description geändert werden (leerer String "" für description löscht sie; Weglassen behält den Originalwert).
    • download: Rufe das HTML einer bereits veröffentlichten Seite zur erneuten Bearbeitung ab (Authentifizierung → URL → direkter OSS-Download, verbraucht keine serverseitige Bandbreite), nach der Bearbeitung mit update überschreiben.
    • list / revoke: Auflisten / Widerrufen meiner Seiten (maximal 200 aktive Seiten, einzelne Seite ≤ 2 MB).
    • thumbnail: Setze / ersetze ein reines Präsentations-Cover-Bild für eine bereits veröffentlichte Seite (direkter Upload von PNG/JPG, ≤2 MB). Wird nur für <img>-Vorschauen in Listen/Details/Vorlagenwänden verwendet, beeinflusst nicht das HTML, beeinträchtigt nicht den Datenabruf und belegt kein Kontingent für aktive Seiten; wird unter der page_id im OSS gespeichert und bleibt auch nach der Umwandlung in eine Vorlage gültig. upload / update akzeptieren thumbnail_file; nach erfolgreichem HTML-Upload wird das Cover automatisch hochgeladen; bei Fehlern des Thumbnails wird nur eine Warnung zurückgegeben, das HTML wird nicht zurückgesetzt.
    • templates / template: Durchsuchen / Wiederverwenden öffentlicher Vorlagen – templates listet Vorlagen auf (normale Benutzer sehen nur veröffentlichte), template zeigt Details einer Vorlage und gibt die download_url, lade das HTML direkt von OSS herunter, ersetze es durch deine eigenen Ziele/Texte/Formelpaket-Anmeldedaten und lade es dann mit upload als deine eigene Seite hoch.
    • Vor upload / update wird eine erzwungene Überprüfung auf die gemeinsame Share-Shell durchgeführt; fehlende gemeinsame Kopf-/Fußzeilen werden automatisch eingefügt und kompiliert; das Design kann nur durch theme / --qb-shell-*-Variablen überschrieben werden; bei verbleibenden Platzhaltern oder alten QR-Code-Überresten wird die Veröffentlichung verweigert.
    • Berechtigungen / Verantwortlichkeiten: Eigene Seiten sind standardmäßig nur für den Besitzer; is_test-Benutzer können Seiten anderer is_test-Benutzer mit download / update / thumbnail übergreifend bearbeiten, list mit scope=test_all zeigt alle Testbenutzer an (Seiten normaler Benutzer sind immer FORBIDDEN). Das Durchsuchen/Wiederverwenden öffentlicher Vorlagen ist für alle Benutzer offen (normale Benutzer sehen nur veröffentlichte); das Einreichen/Ändern/Online-/Offline-Schalten von Vorlagen ist nur für is_test; die Umwandlung einer vorhandenen Seite in eine öffentliche Vorlage ist eine Backend (growthX)-Aktion – dieser Skill macht nur „Lesen + Wiederverwenden“ von Vorlagen, keine Schreibvorgänge.

Die Authentifizierung erfolgt nur über den api_key in config.json (für den Datenabruf ist nicht einmal der api_key erforderlich, nur package_id + signature). Dieser Skill verwaltet keine Sitzungen / task_id.

Datenabruf: Echtzeit-Datenabruf

Dashboards rufen Daten in Echtzeit ab: Das HTML enthält package_id + signature; wenn ein Besucher die Seite öffnet, wird sofort queryFormulaPackage aufgerufen, um die neuesten Daten abzurufen und zu rendern – wenn die zugrunde liegenden Daten aktualisiert werden, wird automatisch neu berechnet, die Seite ist beim Öffnen immer aktuell, das ist der Zweck des Formelpaket-Designs. Die Spezifikation muss kein mode-Feld enthalten.

  • Die Seite ist „live“: Daten werden nicht in das HTML eingebettet, sondern zur Laufzeit in Echtzeit abgerufen; während der Build-Phase werden Daten nur einmal für einen Gesundheitscheck abgerufen (Datenqualität + Textkonsistenz für einzelne Ziele), nicht eingebettet.
  • Zwei Voraussetzungen (beide erfüllt): ① Der queryFormulaPackage-Endpunkt hat CORS für die Seiten-Domain pages.quantbuddy.cn geöffnet (der aktuelle HTTPS-Endpunkt hat * geöffnet); ② Die signature wird mit der Seite öffentlich gemacht (Formelpaketabfragen verwenden die Signatur als Fähigkeits-Token, das Design erlaubt die Einbettung in Seiten).
  • ⚠️ Das Protokoll muss übereinstimmen: Wenn die Seite auf https:// veröffentlicht wird, muss der endpoint in config.json ebenfalls https:// sein, sonst blockiert der Browser den Datenabruf aufgrund gemischter Inhalte. Der aktuelle Endpunkt ist bereits https://www.quantbuddy.cn/skill.

Harte Regeln

  1. Chinesische Parameter über @file oder Umgebungsvariablen: Die Windows PowerShell-Befehlszeile kürzt direkt übergebene chinesische Zeichen ggf. mit GBK ab. Verwende für die Formelregistrierung und das Schreiben von Spezifikationen immer @params.json (UTF-8) oder die Umgebungsvariablen FP_PARAMS/BD_PARAMS/SP_PARAMS.
  2. Formeln müssen vor der Registrierung validiert werden (harte Hürde): Jede für die Registrierung eingereichte Formelgruppe muss zuerst in quant-buddy-skill mit runMultiFormulaBatchStream ausgeführt werden, um die Datenausgabe zu bestätigen (die Formelsyntax ist auf beiden Seiten identisch und kann unverändert validiert werden). Nur bei Erfolg ist register erlaubt. Erfinde keine unvalidierten Ausdrücke und „registriere sie einfach und schaue dann, ob ein Fehler auftritt“ – der serverseitige Testlese beim Registrieren ist nur ein Fallback und ersetzt diesen Schritt nicht.
  3. Auch die Validierungsparameter müssen sauber ausgetauscht werden: Beim Aufruf von runMultiFormulaBatchStream muss user_query die aktuelle Benutzeranfrage und das aktuelle Asset widerspiegeln; wenn task_id übergeben wird, muss es eine neue Aufgabe für diesen Vorgang sein. Beim Kopieren von Beispielen darf nicht nur formulas ersetzt werden, während alte user_query wie „Maotai Factsheet“ stehen bleiben, da sonst die Backend-Überwachung und -Wiedergabe verunreinigt werden.
  4. Signatur ist ein Anmeldedatum: Gib sie nicht in Dialogen aus, die für Endbenutzer bestimmt sind; das Dashboard schreibt sie zur Echtzeit-Datenabfrage in das öffentliche HTML; stelle vor der Veröffentlichung sicher, dass dies akzeptabel ist.
  5. Fehler klar kommunizieren: Wenn ein Skript code != 0 zurückgibt, teile dem Benutzer mit, „bei welchem Schritt (Befehlsname) + Fehlerzusammenfassung“; beende nicht mit einer leeren Ausgabe oder reinen Logs.

Werkzeugübersicht

Parameter-Konvention: Alle Skriptparameter sind ein JSON-String als Positionsparameter (oder @params.json / Umgebungsvariable), z. B. list '{"scope":"test_all"}'. Die Befehlszeile akzeptiert auch die intuitive Schreibweise --scope test_all / --key=value (nur für einfache Parameter; komplexe Strukturen wie Formeln, Spezifikationen verwenden weiterhin @file/Umgebungsvariablen, um GBK-Kürzungen zu vermeiden).

SkriptBefehlFunktionDokumentation
scripts/formula_package.pyregister / query / list / revoke / refreshFormelpaket: Datenabruffähigkeit registrieren, Daten mit Paket-Anmeldedaten streamentools/formula_package.md
scripts/build_dashboard.py(Einzelbefehl)Spezifikation → Live-Echtzeit-Datenabruf-Dashboard-HTMLtools/build_dashboard.md
scripts/compile_bespoke_page.py(Einzelbefehl)[Shell-Verarbeitungsskript] Bespoke-Vorlage → Inklusive gemeinsamer Share-Shell / Logo / QR-Mini / Data-Kernel in sich geschlossenes HTMLguides/share-shell.md
scripts/retrofit_share_shell.py(Einzelbefehl)[Shell-Verarbeitungsskript] Altes HTML / bereits veröffentlichte Seite → Alte QR-Codes / alte Kopf-/Fußzeilen entfernen, gemeinsame Share-Shell einfügen (assets/share-shell/), kann mit ursprünglichem Link aktualisiert werdentools/retrofit_share_shell.md
scripts/static_page.pyupload / update / download / list / revoke / thumbnail / templates / templateStatische Seiten veröffentlichen/ersetzen/herunterladen/verwalten, öffentlichen Link erhalten (update ersetzt Inhalt ohne Linkänderung; download ruft HTML zur Bearbeitung ab; thumbnail setzt Präsentations-Cover; templates/template durchsuchen und wiederverwenden öffentliche Vorlagen; is_test kann benutzerübergreifend arbeiten)tools/static_page.md
scripts/verify_page.mjs(Einzelbefehl)Seitenabnahme vor/nach der Veröffentlichung: 1440px-, 390px-, 320px-Viewport, h1, Platzhalter, horizontale Überläufe, Kern-Konsolenfehler—
scripts/render_cover.py(Wird von build_dashboard aufgerufen)Cover-Rasterisierung und -Zusammenstellung als Fallback: capture_page_cover verwendet systemeigenen Edge/Chrome im Headless-Modus, um eine „Cover-Modus-Seite“ als ganzseitiges PNG zu erfassen; zusammengesetzte Cover (vollflächiges nacktes Bild/Brand-Poster) verwenden Browser → reines Python (cairosvg/svglib) → SVG, dreistufiger Fallback. Plattformübergreifend, keine starken Abhängigkeiten, beeinträchtigt nicht die HTML-Veröffentlichung—
scripts/render_existing_page_thumbnail.py(Einzelbefehl)Fehlendes Cover für bereits veröffentlichte/öffentliche Vorlagen-HTML ergänzen: HTML herunterladen oder lesen → eingebettete Formelpaket-Anmeldedaten parsen → zuerst echte Outputs abrufen und temporär QB.query ersetzen → dann systemeigenen Edge/Chrome verwenden, um 1200×675 PNG zu erfassen; kann mit upload:true direkt thumbnail_url setzentools/static_page.md
assets/data-kernel.js(Frontend-Kernel, kein Skript)Eine gemeinsame „Datenabruf + Bereinigung + Fehlertoleranz“-Komponente für handgeschriebene Bespoke-Seiten; wird inline in das <script> der Seite eingefügtguides/bespoke-page.md
assets/share-shell/(Gemeinsame Komponenten)Von allen Landingpages gemeinsam genutzte Kopfzeilen, Fußzeilen, Aktualisierungs-Schaltflächen, Sharing-Poster-Overlays, Poster-Canvas, Link-Kopieren und Kopieren/Herunterladen-Verhaltenguides/share-shell.md
examples/valuation-financial-profile/page.template.html(Offline-Referenzvorlage, kein Skript)Einzelaktien-Bewertungs-Check: Bewertungsbänder, Finanztrends, Bewertungswaage-Attributionexamples/valuation-financial-profile/README.md
examples/index-anomaly/page.template.html(Offline-Referenzvorlage, kein Skript)Index-Anomalie-Ranking: Anomalie-Ranking, Gewinn-/Verlustverteilung, Index-Sparklineexamples/index-anomaly/README.md
examples/commodity-daily/page.template.html(Offline-Referenzvorlage, kein Skript)Täglicher Rohstoff-Long/Short-Bericht: Long/Short-Dominanz, Anomalie-Ranking, Sektorbalken, Sparklineexamples/commodity-daily/README.md

Zwei Produktionspfade: Standard-Dashboards gehen über build_dashboard (deklarativer, schneller Weg); für Designseiten mit benutzerdefinierten Layouts/SVG wird HTML von Hand geschrieben, die Datenschicht verwendet einheitlich assets/data-kernel.js (QB.query für Datenabruf, QB.series/lastValue/topValues für Auspacken und Bereinigen), anstatt dass jede Seite ihr eigenes fetch/Auspacken schreibt und in die gleichen Fallstricke mit „falschen 0/Datenlücken“ tappt. Siehe guides/bespoke-page.md. Vor der Veröffentlichung mit scripts/verify_page.mjs <html_file> auf Desktop- und 390px/320px-Mobilansichten prüfen, um sicherzustellen, dass keine QB_SHARED_ / replace_with_signature / pkg_replace-Überreste vorhanden sind, ein <h1> existiert, keine kritischen horizontalen Überläufe und keine Kern-Datenabruf-Skriptfehler auftreten.

Konfiguration

config.json: Trage api_key ein (erhältlich unter https://www.quantbuddy.cn/login) oder setze die Umgebungsvariable QUANT_BUDDY_API_KEY. Du kannst config.local.json erstellen, um endpoint / api_key usw. zu überschreiben (nicht im Repository). formula_package.py, build_dashboard.py und static_page.py verwenden denselben endpoint.

Verwandte Skills