CommunityRédaction et éditiongithub.com

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

Transformez vos résultats d'exploration quantitative en tableaux de bord web partageables et automatiquement mis à jour, publiés via Serverless.

Qu'est-ce que quant-buddy-view · 量化看板发布 ?

Ce skill (quant-buddy-view) permet de transformer des métriques et formules validées dans l'écosystème quant-buddy en tableaux de bord web dynamiques et partageables. Il se concentre sur trois opérations clés : l'enregistrement de packages de formules (formula_package) sur le serveur, la génération de pages HTML de tableau de bord en temps réel (build_dashboard), et leur publication en tant que pages statiques hébergées (static_page). Les tableaux de bord sont 'vivants' : ils ne figent pas les données dans le HTML, mais les récupèrent en direct à chaque ouverture via l'API queryFormulaPackage, garantissant des informations toujours à jour. Le skill est conçu pour fonctionner de manière autonome avec une simple clé API, mais nécessite au préalable l'installation de quant-buddy-skill pour valider les formules avant de les enregistrer. Il fournit également des modèles de pages prêts à l'emploi (fiche action, diagnostic de valorisation, anomalies d'indices, etc.) et des outils pour migrer ou adapter des pages existantes. La sortie finale est une URL publique comme https://pages.quantbuddy.cn/..., partageable instantanément.

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

Installed? Explore more Rédaction et édition skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

quant-buddy-view · Publication de tableaux de bord quantitatifs

Transformez les indicateurs explorés avec quant-buddy-skill en un tableau de bord web public et partageable. Ce skill ne gère ni les requêtes de marché ni l'exploration backtest (c'est le rôle de quant-buddy-skill). Il se concentre sur trois tâches :

  1. Enregistrer un package de formules (formula_package) — Enregistrez un ensemble de formules + leurs modes de lecture sur le serveur pour obtenir un package_id et une signature. Les données sont automatiquement recalculées côté serveur dès que les données sous-jacentes sont mises à jour. Les requêtes renvoient toujours les résultats les plus récents.
  2. Générer le HTML du tableau de bord (build_dashboard) — Décrivez avec une spécification quels indicateurs afficher et avec quels graphiques/tableaux. Compilez le tout en un HTML live qui récupère les données en temps réel (le squelette est autonome, les données sont chargées à l'ouverture de la page).
  3. Publier et héberger (static_page) — Téléchargez le HTML vers un stockage objet pour obtenir un lien public : https://pages.quantbuddy.cn/....

Quand utiliser ce skill vs quant-buddy-skill

  • Exploration/requête unique ("Combien pourcent de hausse aujourd'hui pour Maotai ?", "Exécute un backtest de croisement de moyennes mobiles") → utilisez quant-buddy-skill.
  • Vous voulez une page que vous pouvez consulter régulièrement, partager à d'autres, et dont les données se mettent à jour automatiquement → une fois l'exploration terminée, passez à quant-buddy-view.

Prérequis : Installation de quant-buddy-skill obligatoire

Ce skill est autonome à l'exécution (l'enregistrement, la génération et la publication ne nécessitent que la api_key du fichier config.json, pas le code de quant-buddy-skill). Cependant, le flux normal d'utilisation comporte une exigence stricte : avant d'enregistrer un package de formules, chaque formule doit d'abord être exécutée avec succès dans quant-buddy-skill en utilisant runMultiFormulaBatchStream (voir la règle stricte ci-dessous). Par conséquent, sans quant-buddy-skill installé, vous ne pourrez pas valider correctement les formules.

Si quant-buddy-skill n'est pas encore installé, installez-le en suivant cet ordre de priorité :

  1. Prioritaire : Installation via GitHub (npx skills) — quant-buddy-skill et ce skill font partie du même dépôt GitHub pseudo-longinus/quant-buddy-skills :

    # Nouvelle installation (jamais installé auparavant)
    npx skills add pseudo-longinus/quant-buddy-skills -g --all
    # Déjà installé, simple mise à jour
    npx skills update pseudo-longinus/quant-buddy-skills -y
    # Vérifier l'emplacement / l'installation
    npx skills list -g --json
    

    Sous Windows, si une erreur de lien symbolique / EPERM survient, ajoutez --copy à la fin de la commande. Le chemin d'installation est généralement ~/.agents/skills/quant-buddy-skill.

  2. Solution de repli : Téléchargez et décompressez manuellement l'archive zip (lorsque node/npx n'est pas disponible ou que le réseau est restreint) — Téléchargez le zip officiel de quant-buddy-skill, décompressez-le et copiez son contenu dans le répertoire quant-buddy-skill/ sous le répertoire des skills (décompressez d'abord dans un dossier temporaire ; s'il contient un sous-répertoire quant-buddy-skill/, prenez ce dernier ; conservez la api_key existante dans config.json). quant-buddy-skill contient scripts/self_update.py qui prend en charge --url / --zip-path + --sha512 + --version pour une vérification et une extraction validées. Utilisez-le de préférence.

Structure de placement : Placez quant-buddy-skill et quant-buddy-view côte à côte au même niveau :

<répertoire des skills>/
  quant-buddy-skill/      ← Exploration / validation des formules (runMultiFormulaBatchStream, confirmDataMulti)
  quant-buddy-view/       ← Ce skill : enregistrement des packages de formules / génération de tableaux de bord / publication

Cette disposition côte à côte est recommandée : lorsque formula_package import (migration d'anciens identifiants) ne trouve pas de chemin explicite, il se rabat sur le chemin relatif ../quant-buddy-skill.

  1. Configuration : Configurez la api_key spécifique à quant-buddy-skill (indépendante de celle de ce skill). Une fois installé, vous pouvez y valider les formules, puis revenir à ce skill pour l'enregistrement (register).

Migration pour les anciens utilisateurs : Les packages de formules déjà enregistrés dans l'ancienne version de quant-buddy-skill n'ont pas besoin d'être réenregistrés — utilisez python scripts/formula_package.py import ... pour importer en une seule fois les identifiants dans ce skill et continuez à utiliser l'ancien package_id pour interroger les données (voir tools/formula_package.md dans « Migration des identifiants depuis l'ancien quant-buddy-skill »).

Point d'entrée (déterminez d'abord le type)

Règle de routage pour l'Agent : Si l'utilisateur mentionne marché de modèles / modèles officiels / modèles publics / modèles publiés → utilisez d'abord scripts/static_page.py templates / template pour lire les modèles publics en ligne ; téléchargez le HTML depuis l'download_url retourné, remplacez le ticker, le texte et les identifiants du package de formules, puis upload pour créer votre propre page. Si l'utilisateur demande un type de page spécifique sans mentionner un modèle public → consultez d'abord le répertoire local examples/ (solution de repli hors ligne et source de développement des modèles en ligne) ; si l'utilisateur veut partir d'un besoin jusqu'à un lien → consultez workflows/ ; si l'utilisateur veut une page personnalisée complexe ou migrer un HTML existant → consultez guides/.

TypeNom d'affichagePoint d'entréeQuand l'utiliser
Modèle de pageFiche actionexamples/single-stock/Page portrait pour un seul actif : résumé + cartes numériques (dernier cours, variation, 20j, 60j, PER, PBR, volume) + graphique de prix principal ; doit partir de spec.template.json
Modèle de pageDiagnostic de valorisationexamples/valuation-financial-profile/Page valorisation et données financières pour un seul actif : niveaux historiques PER/PBR/PCF, tendances financières, qualité des flux de trésorerie, décomposition de la variation de valorisation ; associé à page.template.html
Modèle de pageTableau des anomalies des composantsexamples/index-anomaly/Surveillance des anomalies des composants d'un indice/panier : tableau des anomalies + répartition hausse/baisse + tendance de l'indice ; associé à page.template.html, thème sombre, données via data-kernel
Modèle de pageTableau de sélection multi-facteursexamples/multi-factor-screener/Panier thématique + score multi-facteurs + TopN + backtest/rankIC + K-line + audit des formules ; rôles fixes RANK / BACKTEST / KLINE_*, le rendu de RANK est prioritaire en première page
Modèle de pageBulletin quotidien matières premièresexamples/commodity-daily/Bulletin quotidien des futures matières premières : contradictions haussières/baissières par secteur, anomalies du jour, sparkline des produits phares ; associé à page.template.html
Flux génériqueTableau de bord standard en temps réelworkflows/dashboard-end-to-end.mdL'utilisateur souhaite "obtenir un tableau de bord partageable / un lien" sans spécifier de modèle de page fixe
Guide de développementPage personnaliséeguides/bespoke-page.mdPages HTML/CSS/SVG personnalisées que build_dashboard ne peut pas produire, ou migration d'un HTML existant
Outil de migrationCoque partagée pour anciennes pagestools/retrofit_share_shell.mdUn HTML déjà publié/généré doit supprimer l'ancien QR code, l'ancien en-tête et l'ancien pied de page, tout en conservant le même page_id pour la mise à jour

Règle stricte : Si l'utilisateur demande "une page portrait d'une action/d'un indice, une fiche action, un portrait d'action, une page d'un seul actif", lisez d'abord examples/single-stock/README.md, copiez examples/single-stock/spec.template.json comme point de départ pour la spec, en conservant template: "single-stock". N'écrivez pas manuellement une vieille spec minimale "1 ligne de prix + 4 cartes numériques" ; build_dashboard la rejettera. Règle stricte : Si l'utilisateur demande "cette action est-elle chère / sa situation fondamentale s'améliore-t-elle / profil de valorisation et financier / niveaux historiques PER/PBR / tendances financières / qualité des flux de trésorerie" et souhaite une page de destination ou un lien public, lisez d'abord examples/valuation-financial-profile/README.md, copiez examples/valuation-financial-profile/page.template.html comme point de départ, validez et enregistrez l'ensemble de formules requis par ce modèle ; ne revenez pas à une simple page de cartes single-stock. Règle stricte : Si l'utilisateur demande "les anomalies des composants d'un indice / d'un panier d'actions, tableau des anomalies, classement à la manière d'un tableau dragon/tigre" (par exemple « Quelles actions du CSI 500 ont des anomalies aujourd'hui ? », « Surveillance des anomalies du CSI 300 », « Classement des hausses/baisses du SSE 50 »), lisez d'abord examples/index-anomaly/README.md, copiez examples/index-anomaly/page.template.html comme point de départ, remplacez les placeholders __INDEX_*__, intégrez data-kernel.js, puis publiez ; n'écrivez pas manuellement un HTML clair/générique hors sujet. Règle stricte : Si l'utilisateur demande un "panier thématique / actions concepts / panier sectoriel + score multi-facteurs / TopN / backtest / rankIC / K-line / audit des formules", lisez d'abord examples/multi-factor-screener/README.md, copiez examples/multi-factor-screener/page.template.html comme point de départ ; les rôles du package de formules sont fixés à RANK / BACKTEST / KLINE_* ; RANK doit être rendu en priorité sur la première page, BACKTEST et KLINE_* peuvent être dégradés localement. Règle stricte : Lors de la réutilisation d'un modèle public, les package_id + signature dans le HTML du modèle appartiennent à l'auteur original. Vous devez revalider les formules selon l'objectif de l'utilisateur actuel, enregistrer votre propre package de formules et remplacer les identifiants dans la page avant de publier. N'utilisez pas directement les identifiants originaux du modèle public comme source de données. Règle stricte : Le subtitle et le "résumé de lecture" de la page portrait d'un seul actif ne doivent utiliser que les valeurs numériques correspondant aux résultats finaux (outputs) obtenus en temps réel lors de la construction par build_dashboard. Si le script retourne "le texte est incohérent avec les résultats de l'interrogation en temps réel", réécrivez le texte en fonction des facts retournés avant de générer/télécharger ; n'utilisez pas d'anciens résultats de requête ou d'estimations manuelles. Règle stricte : Toutes les pages de destination doivent intégrer les composants communs de assets/share-shell/. Le modèle ne fournit que le contenu principal et getPosterData(). L'en-tête, le pied de page, le bouton de rafraîchissement, la couche modale de l'affiche de partage, le lien de copie, le téléchargement PNG et l'affiche à en-tête/pied de page fixe sont tous fournis par le shell commun ; ne copiez pas ni ne modifiez manuellement d'anciens blocs de QR code, d'anciens boutons de rafraîchissement ou d'anciennes couches de partage dans un modèle individuel. Règle stricte : L'affiche de partage est générée par défaut par le poster.js commun en prenant une capture d'écran du corps de la page. « Mieux vaut rien que mal fait ». Le modèle peut utiliser data-qb-poster-target pour marquer la zone de capture d'écran principale ; getPosterData() ne fournit que le titre/le résumé et une solution de repli structurée. Ne faites pas rédiger manuellement la maquette de l'affiche par l'Agent, et ne mettez pas tout le contenu de la page dans sections. Règle stricte : Si l'utilisateur demande "modifier le HTML déjà généré / supprimer le QR code / supprimer l'en-tête et le pied de page actuels / adapter un en-tête et un pied de page fixes", utilisez d'abord scripts/retrofit_share_shell.py. Ne comptez pas sur de longues instructions pour que l'Agent supprime manuellement le DOM ; par défaut, conservez la zone hero principale de l'ancienne page, supprimez uniquement la carte QR et l'ancien pied de page, puis insérez directement l'en-tête et le pied de page communs en haut/bas du body ; générez d'abord une version migrée locale pour validation, puis utilisez update:true pour écraser le même page_id.

  1. Enregistrer un package de formules (scripts/formula_package.py register)

    • formulas : un ensemble de "nom_variable = expression" (reprenant les formules validées lors de l'exploration avec quant-buddy-skill).
    • reads : la liste des sorties externes, chaque entrée déclarant output (nom de la sortie) + read_mode (mode de lecture).
    • En cas de succès, retourne un package_id + signature, et sauvegarde automatiquement le tout dans output/formula_packages/<package_id>.json.
    • ⚠️ La signature n'est retournée en clair qu'une seule fois lors de l'enregistrement. Si le fichier d'identifiants local est perdu, elle est irrécupérable (vous pouvez utiliser refresh pour la renouveler).
  2. Générer le tableau de bord (scripts/build_dashboard.py)

    • Écrivez une spécification : title + panels[], chaque panel affichant une output sous forme de line/bar/table/number/text/raw.
    • Si un modèle de page est concerné, copiez d'abord le spec.template.json ou page.template.html du répertoire du modèle, puis remplacez les actifs, les dates, le texte d'interprétation et les modules optionnels.
    • La page récupère les données en temps réel (voir ci-dessous « Récupération des données : en temps réel ») ; la spec n'a pas besoin de champ mode.
    • Le résultat est écrit par défaut dans output/pages/<slug>.html ; passez "upload": true pour générer et publier en une seule étape.
  3. Publier / Gérer (scripts/static_page.py)

    • upload : Téléchargez le HTML → retourne page_id + url publique ; peut inclure title (par défaut, prend le <title>) et description (description de la page, ≤ 1000 caractères, utilisée pour les listes/détails).
    • update : Remplace le contenu d'une page déjà publiée, l'URL / le page_id reste inchangé (utilisez-le pour compléter/ajuster une page déjà partagée ; le visiteur voit le nouveau contenu après rafraîchissement, sans consommer de nouveau quota). Vous pouvez aussi modifier uniquement le title / description (passez une chaîne vide "" pour effacer la description, omettez-la pour conserver la valeur d'origine).
    • download : Récupérez le HTML d'une page déjà publiée pour le modifier (authentification via url → téléchargement direct depuis l'OSS, ne consomme pas de bande passante serveur), puis update pour écraser.
    • list / revoke : Lister / révoquer mes pages (limite de 200 pages actives, chaque page ≤ 2 Mo).
    • thumbnail : Définir / remplacer une image de couverture purement décorative pour une page déjà publiée (transférez un PNG/JPG, ≤ 2 Mo). Utilisée uniquement pour l'aperçu <img> dans les listes/détails/murs de modèles, n'entre pas dans le HTML, n'affecte pas la récupération des données, ne consomme pas de quota de pages actives ; stockée dans OSS avec le page_id comme nom, toujours valide après conversion en modèle. upload / update peuvent inclure thumbnail_file ; la couverture est automatiquement téléchargée après le succès du HTML ; en cas d'échec de la vignette, seul un avertissement (warning) est retourné, le HTML n'est pas annulé.
    • templates / template : Parcourir / réutiliser les modèles publics — templates liste les modèles (les utilisateurs normaux ne voient que les modèles publiés published), template consulte les détails d'un modèle pour obtenir son download_url, téléchargez directement le HTML depuis l'OSS, remplacez-le par vos propres actifs/texte/package de formules, puis upload pour créer votre propre page.
    • Avant upload / update, une vérification obligatoire du shell partagé public est effectuée ; si l'en-tête ou le pied de page public est manquant, ils sont automatiquement insérés et compilés ; la couleur du thème ne peut être modifiée que via theme / les variables --qb-shell-* ; la publication est refusée s'il reste des placeholders ou des anciens QR codes.
    • Permissions / Responsabilités : Vos propres pages ne sont visibles que par vous par défaut ; les utilisateurs is_test peuvent accéder aux pages d'autres utilisateurs is_test via download / update / thumbnail, et list avec scope=test_all pour voir toutes les pages des utilisateurs test (les pages des utilisateurs normaux sont toujours FORBIDDEN). La consultation et la réutilisation des modèles publics sont ouvertes à tous (les utilisateurs normaux ne voient que les modèles publiés published). La soumission, la modification, la mise en ligne et hors ligne des modèles sont réservées aux utilisateurs is_test ; la conversion d'une page existante en modèle public est une action du back-office (growthX) — du côté de ce skill, nous ne faisons que « lire + réutiliser » les modèles, pas ces opérations d'écriture.

L'authentification repose uniquement sur la api_key du fichier config.json (pour les requêtes de récupération de données, la api_key n'est même pas nécessaire, seuls le package_id et la signature sont requis). Ce skill ne gère pas de sessions / task_id.

Récupération des données : en temps réel

Les tableaux de bord récupèrent les données en temps réel : le HTML contient package_id + signature. Lorsqu'un visiteur ouvre la page, elle appelle immédiatement queryFormulaPackage pour récupérer les dernières données et les afficher. Dès que les données sous-jacentes sont mises à jour, elles sont automatiquement recalculées. La page affiche les données les plus récentes, ce qui est l'objectif même de la conception des packages de formules. La spec n'a pas besoin de champ mode.

  • La page est « vivante » : Les données ne sont pas intégrées dans le HTML ; elles sont récupérées en temps réel à l'exécution. Pendant la construction, les données ne sont récupérées qu'une seule fois pour un contrôle de qualité (santé des données + cohérence du texte pour un seul actif). Elles ne sont pas intégrées.
  • Deux prérequis (tous deux satisfaits) : ① L'endpoint queryFormulaPackage autorise CORS pour le domaine de la page pages.quantbuddy.cn (l'endpoint HTTPS actuel autorise *) ; ② La signature est publique avec la page (les requêtes de package de formules utilisent la signature comme jeton de capacité, ce qui permet par conception de l'intégrer dans la page).
  • ⚠️ Le protocole doit être cohérent : La page est publiée en https://, l'endpoint dans config.json doit également être https://, sinon le navigateur bloquera la récupération des données en raison d'un contenu mixte. L'endpoint actuel est déjà https://www.quantbuddy.cn/skill.

Règles strictes

  1. Passer les paramètres en chinois via @file ou variables d'environnement : Les lignes de commande PowerShell de Windows tronquent les caractères chinois encodés en GBK. Pour l'enregistrement des formules et l'écriture des specs, utilisez systématiquement @params.json (UTF-8) ou les variables d'environnement FP_PARAMS / BD_PARAMS / SP_PARAMS.
  2. Les formules doivent d'abord être validées avant d'être enregistrées (seuil strict) : Chaque ensemble de formules soumis pour enregistrement doit d'abord être exécuté avec succès dans quant-buddy-skill en utilisant runMultiFormulaBatchStream (la syntaxe des formules est identique dans les deux, vous pouvez les valider telles quelles). L'enregistrement (register) n'est autorisé qu'en cas de succès. N'inventez pas d'expressions non validées, et n'essayez pas d'"enregistrer d'abord, on verra après" — la vérification côté serveur lors de l'enregistrement n'est qu'un filet de sécurité, elle ne remplace pas cette étape.
  3. Nettoyez également les paramètres de validation : Lors de l'appel à runMultiFormulaBatchStream, le user_query doit refléter la demande actuelle de l'utilisateur et l'actif actuel. Si task_id est passé, il doit correspondre à une nouvelle tâche. Lorsque vous copiez un exemple, ne vous contentez pas de remplacer les formulas ; ne laissez pas d'anciens user_query comme "factsheet de Kweichow Moutai", sinon l'audit et la relecture seront pollués.
  4. La signature est un identifiant : Ne l'imprimez pas dans une conversation destinée à l'utilisateur final ; le tableau de bord l'écrit dans le HTML public pour l'interrogation en temps réel. Assurez-vous que cela est acceptable avant la publication.
  5. En cas d'échec, expliquez clairement : Lorsqu'un script retourne code != 0, répétez à l'utilisateur « l'étape (nom de la commande) qui a échoué + un résumé de l'erreur ». Ne terminez pas par un écran blanc ou un simple journal.

Aperçu des outils

Convention de paramètres : Tous les scripts acceptent une chaîne JSON comme paramètre positionnel (ou via @params.json / variables d'environnement), par exemple list '{"scope":"test_all"}'. La ligne de commande accepte également la notation intuitive --scope test_all / --key=value (uniquement pour les paramètres simples ; les structures complexes comme les formules ou les specs doivent toujours utiliser @file/variables d'environnement pour éviter la troncature GBK).

ScriptCommandeRôleDocumentation
scripts/formula_package.pyregister / query / list / revoke / refreshPackage de formules : enregistrer la capacité d'interrogation, interroger en flux avec les identifiants du packagetools/formula_package.md
scripts/build_dashboard.py(commande unique)spec → HTML de tableau de bord live avec récupération en temps réeltools/build_dashboard.md
scripts/compile_bespoke_page.py(commande unique)【Script de traitement shell】 Modèle bespoke → HTML autonome intégrant le shell partagé commun / logo / qr-mini / data-kernelguides/share-shell.md
scripts/retrofit_share_shell.py(commande unique)【Script de traitement shell】 Ancien HTML / page déjà publiée → supprimer l'ancien QR code / l'ancien en-tête / l'ancien pied de page, intégrer le shell partagé commun (assets/share-shell/), peut effectuer un update avec le même lientools/retrofit_share_shell.md
scripts/static_page.pyupload / update / download / list / revoke / thumbnail / templates / templatePublier/remplacer/télécharger/gérer des pages statiques, obtenir un lien public (update remplace le contenu sans changer le lien ; download récupère le HTML pour le modifier ; thumbnail définit une couverture d'affichage ; templates/template parcourent/réutilisent les modèles publics ; is_test peut interagir entre utilisateurs)tools/static_page.md
scripts/verify_page.mjs(commande unique)Validation des pages avant/après publication : fenêtres 1440px, 390px, 320px, h1, placeholders, débordement horizontal, erreurs console critiques—
scripts/render_cover.py(appelé par build_dashboard)Rastérisation et composition de couverture de secours : capture_page_cover utilise Edge/Chrome sans tête du système pour capturer la "page en mode couverture" en PNG pleine page ; pour la composition de couverture (image pleine nue/affiche de marque), trois niveaux de secours : navigateur → Python pur (cairosvg/svglib) → SVG. Multi-plateforme, aucune dépendance forte, n'affecte pas la publication HTML—
scripts/render_existing_page_thumbnail.py(commande unique)Ajouter une couverture à un HTML déjà publié / un modèle public : téléchargez ou lisez le HTML → analysez les identifiants du package de formules intégrés → récupérez d'abord les véritables outputs et remplacez temporairement QB.query → capturez un PNG 1200×675 avec Edge/Chrome du système ; peut inclure upload:true pour définir directement thumbnail_urltools/static_page.md
assets/data-kernel.js(noyau frontal, pas un script)Noyau frontal commun pour les pages bespoke faites à la main : « récupération + nettoyage + tolérance aux pannes » ; intégré dans la balise <script> de la pageguides/bespoke-page.md
assets/share-shell/(composants communs)En-tête, pied de page, bouton de rafraîchissement, popup d'affiche de partage, canvas d'affiche, copie de lien et comportement de copie/téléchargement communs à toutes les pages de destinationguides/share-shell.md
examples/valuation-financial-profile/page.template.html(modèle de référence hors ligne, pas un script)Diagnostic de valorisation d'une action individuelle : niveaux de valorisation, tendances financières, décomposition de l'équilibre de valorisationexamples/valuation-financial-profile/README.md
examples/index-anomaly/page.template.html(modèle de référence hors ligne, pas un script)Tableau des anomalies des composants : tableau des anomalies, répartition hausse/baisse, sparkline de l'indiceexamples/index-anomaly/README.md
examples/commodity-daily/page.template.html(modèle de référence hors ligne, pas un script)Bulletin quotidien matières premières : direction haussière/baissière dominante, tableau des anomalies, barres sectorielles, sparklineexamples/commodity-daily/README.md

Deux voies de production : Pour les tableaux de bord standards, utilisez build_dashboard (voie rapide déclarative). Pour les pages design nécessitant une mise en page/SVG personnalisée, créez le HTML à la main, en utilisant systématiquement le noyau commun assets/data-kernel.js (QB.query pour la récupération, QB.series/lastValue/topValues pour l'extraction et le nettoyage). N'écrivez plus de fetch/extraction personnalisés pour chaque page, et évitez les pièges classiques du "faux 0 / trou". Voir guides/bespoke-page.md. Avant la publication, utilisez scripts/verify_page.mjs <html_file> pour vérifier le rendu sur desktop et mobile (390px/320px), en vous assurant qu'il n'y a pas de résidus QB_SHARED_ / replace_with_signature / pkg_replace, qu'il y a un <h1>, pas de débordement horizontal critique, et pas d'erreur de script de récupération de données.

Configuration

config.json : Renseignez la api_key (obtenez-la depuis https://www.quantbuddy.cn/login), ou définissez la variable d'environnement QUANT_BUDDY_API_KEY. Vous pouvez créer un fichier config.local.json pour écraser endpoint / api_key (non versionné). Les scripts formula_package.py, build_dashboard.py, et static_page.py partagent le même endpoint.

Skills associés