尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Rechenwerk der BWG Fantasy Liga (ESPN): Rohdaten, Kennzahlen, Automatisierung
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Rechenwerk für die BWG Fantasy Liga (ESPN-Liga 1166555857): holt die Ligadaten nur lesend von ESPN, berechnet daraus Standings und Kennzahlen und zeigt sie als statische Web-Seite: https://frest2101.github.io/bwg-fantasy/
Einrichten mit python -m pip install --user -r requirements.txt, Rohdaten holt der Wochenabruf (von Hand nur zum Testen: python scripts/espn_fetch.py --weeks 1 2 3, Kontrolle: --summary), Kennzahlen und App-Daten rechnen mit python scripts/compute.py und prüfen mit python -m pytest.
Regeln, Entscheidungen und Historie der Liga liegen in Notion, die Arbeitsregeln und Rechenregeln für dieses Repo in CLAUDE.md.
app/ (HTML, CSS, JavaScript ohne Framework) und den App-Daten app/data/*.json, die compute.py schreibt. Aufbau der Daten: docs/app_daten.md.#start, auch die Marke im Kopf; Paket P2): Stand der laufenden Woche, die Zeile „Mein Team“ (Bilanz, Platz, Playoff %, Spiel der Woche mit Siegchance, Bedarf der nächsten Woche) und je Bereich eine Karte mit Frage, Zahl und Satz – nur aus teams.json, schedule.json und waiver.json, ohne eigene Rechnung.bwg-team, kein Login). Die App hebt das Team dann überall hervor: eigene Zeile in den Team-Tabellen von Liga, Stärke und Keeper, eigenes Kürzel in den Diagrammen, eigenes Spiel unter Woche › Paarungen zuerst; Markt, Keeper › Herkunft, Liga › Duelle und Spieltag live nehmen es als Voreinstellung.bwg-spalten). Er ersetzt die früheren Spalten-Sichten unter Markt und in der Spielerliste.docs/auftraege/app_konzept_2026-10-04.md): fünf Bereiche nach Fragen als Tabs – Liga (#liga: Tabelle, /division, /ergebnisse/w3, /playoffs, /duelle, /rekorde), Stärke (#staerke: Power Ranking, /allplay, /punkte, /coaching, /score), Woche (#spieltag live als erste Ansicht während der Saison, #woche/paarungen, /matchups, /wetter), Markt (#markt: freie Spieler, /bedarf, /reihenfolge, /moves) und Keeper (#keeper: Bilanz, /herkunft, /alter, /marktwert, /draft, /draft-folgejahr). Unter jeder Überschrift nennt eine Zeile die Frage des Bereichs, darunter stehen seine Ansichten als Chips. Spieler und Teams findet die Lupe im Kopf (Spielerliste #spieler, Spielerseite #spieler/<id>, Team-Seite #team/<id>). Alte Links (#tabelle/…, #waiver, #dst, #rekorde/h2h …) leitet der Router dauerhaft auf die neuen Routen um (ALT in app/js/app.js, Wächter tests/test_routen.py).#staerke/allplay/w3); dort steht je Team das Matchup-Glück der Woche mit Begründung (Sieg unter dem Wochenmedian = Glück, Niederlage über dem Median = Pech).waiver.json): Freie Spieler (#markt) – beste verfügbare Spieler je Position nach Horizont, Standard Woche N+1 über Wochen-Ersatz, dazu „Nächste 3 Wochen“ und „Rest der Saison“ (#markt?h=drei, h=ros; Spalten „Vorteil W5“, „Vorteil W5–7“, „Vorteil Rest Saison“ = Abstand zum besten freien Ersatz) sowie „Langfristig (Marktwert)“ (h=zukunft), schon angepfiffene Spieler grau – mit Bye, Verletzung, Projektion, Besitz-Trend und Frist, je Horizont der Rang innerhalb der Position mit Gesamtrang („RB 12“, über alle Spieler des Wochenpools, Kader und frei), unter „Ausführlich“ die Ränge der übrigen Horizonte, Rang Saison (nach Punkten), ESPN-Rang und Marktwert-Rang, dazu „Experten W5“ (Median der Wochenranglisten der ESPN-Experten innerhalb der Position mit Anzahl, eigener Wert, fließt in nichts ein; seit 09.10.2026, auch als Kachel der Spielerseite, nicht in der Spielerliste), darunter Links auf die Wochenranglisten bei FantasyPros (nur Verweise); Schalter „Frei · Alle · Kader“ (?status=alle, ?status=kader) zeigt statt der freien alle Spieler des Tagesstands bzw. nur Kaderspieler (seit 06.10.2026), dazu „Gegner W5“ (Gegner der nächsten Woche mit seinem Faktor für die Position des Spielers als Farbzelle, Bye grau) und „Faktor nächste 3“ („Faktor nächste 3“, Besitz-Trend und Frist unter „Ausführlich“; beide fehlen dienstags vor dem Wochenabruf, dann steht dort der Hinweis „Gespielt, noch nicht gewertet“) sowie ein Wetter-Fähnchen ⚑ beim Spieler, dessen Team in der laufenden Woche ein markiertes Spiel hat (Link nach #woche/wetter); Spalte „Gewinn für “ (Zugewinn) und #markt?team=N als Sicht eines Teams; Bedarf je Team (#markt/bedarf: Woche N+1 mit Kandidaten, Ausfällen und Byes oder ROS; Schwächen je Team); Waiver-Reihenfolge und Claims der letzten 7 Tage (#markt/reihenfolge); alle Moves (#markt/moves) mit der Tabelle „Moves je Team“ (Zugänge laut ESPN, Aufstellungswechsel). Die Spielerliste zeigt Team, Status, Besitz und Verletzung ebenfalls als Tagesstand und dieselben Ränge (Rang Saison einfach, die übrigen ausführlich); die Spielerseite trägt sie als Kacheln (Saison, Woche, Rest der Saison). players.json führt neben Kader und Spielern mit Einsatz die 30 besten Free Agents je Position, bei RB und WR 40.#team/<id>, Paket P6): die fünf Bereiche als aufklappbare Abschnitte – Liga (Platz, Playoff %, Spiel der Woche, Wochenliste, Duelle, Franchise-Historie), Stärke (Power Ranking, Kennzahlen, PF je Woche, Positionen, Verläufe), Woche (Lücken und Ausfälle der nächsten Woche, Byes der zwei Wochen danach, mit Namen; markierte Wetterspiele der eigenen Spieler), Markt (Stärken und Schwächen, Bedarf Rest der Saison, letzte Moves), Keeper (erwarteter Pick, Kader mit Herkunft, Alter und Marktwert, Draft-Picks mit Ertrag); ab 900 px alle offen, auf dem Handy nur Liga.#spieler/<id>), gegliedert wie das Menü: Woche (Projektion, Experten der nächsten Woche, Gegner der nächsten Woche mit Faktor und Rang der Defense für die Position, bei D/ST aus den D/ST-Faktoren; Wetterzeile des Spiels), Saison (Kennzahlen und Formkurve), Rest der Saison (ROS, Faktor nächste 3, Rest Regular Season, Playoffs W15–17), Markt (Besitz, Frist, Vorteil, Ersatzniveau), Keeper (Herkunft, Alter, Marktwert mit Rang, Trend 30 Tage und Abstand zur Keeper-Linie) und das Datum der letzten ESPN-Meldung mit Verweisen auf ESPN, FantasyPros (Spielerseite und Wochenrangliste der Position) und NBC Sports (nur Links, keine Texte).#woche/matchups, je Position #woche/matchups/qb … /k, Daten matchup.json; D/ST #woche/matchups/dst aus dst.json, die frühere Sicht „Streaming“ entfällt zugunsten von Markt › Freie Spieler › D/ST): Die Übersicht zeigt je NFL-Team als Gegner den Faktor aller Positionen (QB bis K gegen seine Defense, D/ST gegen seine Offense), die Chips je Position Faktor, Rang und Bye, unter „Ausführlich“ dazu den Rechenweg. Faktor je NFL-Defense und Position (QB, RB, WR, TE, K) mit Rang, Formel wie bei den D/ST-Faktoren – Position gegen Defense, kein Einzelduell; schwacher Hinweis, weil sich die Werte je Position von Jahr zu Jahr kaum halten. Vorjahr aus data/raw/2026/basis/positionen_2025.json; fehlt die Datei, gilt für 2025 das Ligamittel (Verhältnis 1,00, Hinweis in der App).#woche/wetter Prognose der laufenden Woche, #woche/wetter/ist gespielte Spiele, Daten wetter.json): je Spiel Anstoß in deutscher Zeit, Stadion, Dach, Temperatur, Wind mit Böen, Regenwahrscheinlichkeit (nur Prognose), Niederschlag und Schnee (Modellwerte von Open-Meteo); Markierung ⚑ ab Wind 25 km/h, Böen 40 km/h, Regenwahrscheinlichkeit 60 % oder Schnee über 0 als Faustregel (rechnet scripts/wetter.py); Dachspiele ohne Werte.#keeper, Daten keeper.json): Die Liga behält 12 von 24 Kaderspielern über den Winter. Die Keeper-Bilanz zeigt je Team, wie viel der Punkte von Keepern, aus dem Draft der Saison, von späteren Zugängen und aus Trades kommt (auch ohne K und D/ST), #keeper/herkunft die Herkunft jedes Kaderspielers mit dem Vergleich zum Vorjahr, #keeper/draft den Draft inklusive Keeper mit dem Ertrag je Pick. Herkunft steht auch im Kader der Team-Seite und auf der Spielerseite. #keeper/alter zeigt das Altersprofil je Team (Ø Alter, nach ROS gewichtet und positionsbereinigt, Spieler unter 26 und ab 30, Rookies); Alter und NFL-Jahr stehen auch in der Herkunft-Ansicht und auf der Spielerseite. #keeper/marktwert zeigt den Marktwert je Team (Werte von FantasyCalc): „Wert Top 12“ (Summe der zwölf wertvollsten, nur als Zahl), Wert über der Keeper-Linie (Wert des 120.-wertvollsten Kaderspielers) und das wertgewichtete Alter; Wert, Rang und Trend je Spieler stehen in der Herkunft-Ansicht. Die Werte sind Tauschpreise aus Dynasty-Ligen mit rund 300 gehaltenen Spielern – oberhalb der Keeper-Linie passen sie, darunter überzeichnen sie; keine Punktprognose, kein eigener Trade-Rechner (Verweis auf den von FantasyCalc). #keeper/draft-folgejahr zeigt die Draft-Reihenfolge der nächsten Saison (umgekehrte Endplatzierung, linear, ohne Lotterie): bis zum Saisonende die erwartete Draft-Position laut Simulation, die dafür auch die Playoffs W15–17 ausspielt (Annahme zur ESPN-Mechanik, wird nach W15–17 geprüft), danach die feste Reihenfolge; getauschte Picks sind nicht berücksichtigt. Gerechnet aus Draft und Transaktions-Archiv (scripts/keeper.py), keine Absichten der Manager.#spieltag, erste Ansicht unter Woche; während der Saison öffnet der Tab „Woche“ hier, ein weiterer Tipp auf ihn lädt neu): holt beim Öffnen und auf „Aktualisieren“ den laufenden Spieltag direkt bei ESPN in den Browser (nur lesend, ohne Zugangsdaten, nichts wird gespeichert) – NFL-Spiele nach Status, Paarungen mit Punkten live und ESPNs Siegchance, Aufstellungen samt Bank (je Spieler vor dem Anstoß der Expertenrang laut App), Bewegungen der Woche mit dem Kennzeichen „neu seit Stand der App“ (wie unter Markt › Moves nur ausgeführte Moves und angenommene Trades, keine gescheiterten Claims) und Kader live gegen den Stand der App; nach den Regeln von scripts/claude_stand.py (app/js/live_core.js, Wächter tests/test_live_ansicht.py; die Gegenprobe mit node liegt nicht im Repo und wird von Hand wiederholt, wenn eine der beiden Dateien sich ändert). Der Knopf „Tageslauf starten (GitHub)“ in der Live-Ansicht und im Datenstand-Fenster öffnet die Workflow-Seite des Tageslaufs („Run workflow“); die App startet ihn nicht selbst und enthält kein Token. Danach genügt „Aktualisieren“ bzw. „Daten neu laden“ – beides holt den neuen Datenstand, ohne die Seite neu zu laden.python -m http.server 8000 --directory app, dann http://localhost:8000 öffnen.app/data/claude.json (unter 50 KB), abrufbar unter https://raw.githubusercontent.com/frest2101/bwg-fantasy/main/app/data/claude.json. Den Spieltag live soll der claude.ai-Chat mit dem Stand-Skript scripts/claude_stand.py holen, das als Skill bwg-spieltag im Chat-Container liegt (Einrichtung und Abnahme per Probe-Chat noch offen, siehe docs/auftraege/stand_skill_2026-10-11.md): Marketplace .claude-plugin/marketplace.json mit dem Plugin plugins/bwg-spieltag (in claude.ai unter Customize › Plugins › Add marketplace frest2101/bwg-fantasy), ersatzweise plugins/bwg-spieltag.zip zum Hochladen unter Customize › Skills; gebaut mit python scripts/skill_bauen.py. Seit 11.10.2026 blockiert claude.ai im Auto-Modus („Code from External“) Code, der zur Laufzeit aus dem Netz geladen und ausgeführt wird. Für Trade-Fragen im Claude-Projekt die Gesamtrangliste der Marktwerte app/data/claude_marktwert.json (https://raw.githubusercontent.com/frest2101/bwg-fantasy/main/app/data/claude_marktwert.json), keine Seite der App.scripts/check_public.py prüft vor jedem Commit und vor jeder Veröffentlichung, dass keine Manager-Namen, ESPN-Texte oder Chat in der App stehen..github/workflows/wochenabruf.yml): dienstags 08:30 UTC, Nachläufe Di 16:30 und Mi 08:30 UTC.
espn_fetch.py --due), samt Spielerpool, ROS-Auszug und ESPN-Standings der Woche.mRoster der Woche). Korrigiert ESPN nachträglich Punkte, Einsatz oder Team eines Spielers, legt er die Abweichung als Auszug wNN/statkorrektur.json neben die unveränderten Wochendateien (Spielstände und Ist-Einträge mit dem Wert „vorher“, nur IDs und Zahlen); das Rechenwerk übernimmt sie rückwirkend wie ESPN, Felder mit Stand des Abrufs (Verletzung, Besitz, Status) bleiben beim Dienstag. Übernahme und Rücknahme erscheinen als Hinweis am Lauf; drei Kalenderwochen nach W17 ruht die Prüfung.wNN/mTeam.json ist ein Auszug, nicht die Rohantwort: je Team nur Ligafelder (ohne tradeBlock und draftStrategy), je Manager nur Name, Anzeigename und ID (ohne notificationSettings). Felder, die ESPN auf der obersten Ebene, je Team oder je Manager neu ergänzt, fallen weg und erscheinen als Warnung am Lauf (espn_fetch.team_extract); tiefer wird nicht gefiltert.fantasypros/sitemap.json, 5 s Abstand laut robots.txt; Grundlage des FantasyPros-Verweises im Spielerprofil), die Spieler-Stammdaten von nflverse (nflverse/players.json: Geburtsdatum, Rookie-Saison und Draft je Pool-Spieler als Auszug, Grundlage des Altersprofils unter Keeper) und einmalig Draft sowie D/ST- und Positions-Grundlage des Vorjahrs. Die Positions-Grundlage basis/positionen_2025.json ist ein Auszug von rund 25 KB statt der 4,4-MB-Rohantwort: je NFL-Team, Position (QB, RB, WR, TE, K) und Woche 2025 die Punktsumme im Liga-Scoring (aus den Rohstats neu gerechnet) und die Zahl der Spieler mit Einsatz. Scheitert ein einmaliger Abruf, bleibt es bei einer Warnung und der nächste Lauf versucht es erneut.compute.py), testet (pytest) und committet nur bei Änderung. Rohdaten kommen immer ins Repo, die abgeleiteten Dateien nur bei grünem Rechenwerk und grünen Tests.data/history/, dazu Wochen und Spiele 2018–2022 und Hugh Jass 2023–2025 aus der DSGVO-Auskunft von nfl.com (scripts/nfl_export.py, einmalig und lokal; siehe README dort).pool/latest.json, Woche N+1) speichert je Spieler nur die veröffentlichten Ränge ohne Zuordnung zum Experten, die App zeigt den Median mit Anzahl. Die Wochendateien wNN/kona_player_info.json bleiben byte-genau und tragen die Ränge der gespielten Woche so, wie ESPN sie liefert (mit Experten-IDs, unveröffentlichten Rängen und ESPNs Durchschnitt).data/raw/<saison>/nflverse/players.json); zwei dort falsche Geburtsdaten berichtigt scripts/nflverse.py beim Lesen.claude_marktwert.json): Werte: FantasyCalc (Dynasty, Superflex, 10 Teams, PPR), einmal am Tag abgerufen; das Repo speichert nur einen Auszug der genutzten Felder für die Spieler des ESPN-Pools (data/raw/<saison>/fantasycalc/latest.json), keine Pick-Werte. Inoffizielle Auswertung ohne Verbindung zu FantasyCalc..github/workflows/tageslauf.ymltimezone: "Europe/Berlin"espn_fetch.py --transactions --pool --wetter --marktwertmTransactions2kona_league_communicationdata/raw/2026/transactions/pool/latest.jsonmTeammRosterwetter/prognose/wetter/ist_2026.jsonnfl/stadien.jsonfantasycalc/latest.json--news.github/workflows/probe.yml): nur von Hand, ohne Commit – fragt Open-Meteo, die ESPN-Site-API und FantasyCalc ab und zeigt die Antworten im Log (scripts/probe.py)..github/workflows/pages.yml): veröffentlicht app/ nach jedem erfolgreichen Datenlauf und bei Änderungen an der App.docs/auftraege/kernsaetze_routine.md in data/redaktion/power_ranking_<Saison>.csv, rechnet jede Zahl gegen die Daten nach und merged per Pull Request; Pages veröffentlicht danach.gh workflow run von Hand starten. Schlägt ein Lauf fehl, schickt GitHub eine Mail.main: vor lokaler Arbeit git pull.CLAUDE.md.