refactor: A28 lot 2 — dashboard.py (2 735 L) → package 10 fichiers (v7.30.0)
Découpe par concern de l'ancien app/routers/dashboard.py (2 735 lignes, 63 routes) en package `app/routers/dashboard/` : - 8 modules de routes : local_workspace 559 L (15 r.), pages_html 485 (6), account_settings 439 (16), workspace 321 (9), pages_api 240 (6), workspaces 131 (6), public 78 (1), account_api 77 (4) - _common.py (774 L) : les 15 helpers top-level INTERCALÉS dans l'ancien fichier + état (logger, _VERSION, WORKSPACE_COOKIE) - __init__.py : ordre d'enregistrement identique à l'origine, re-export complet (7 importateurs inchangés : main, board ×3, my_tasks, web_clipper, wiki, sites `_dash._render_blocks_public`, tests) + __all__ Preuve contractuelle : docs/openapi-v2.json régénéré = IDENTIQUE byte-à-byte (509 chemins, ordre préservé). Pièges rattrapés : - segment décorateur sans sa fonction → assert `def in seg` + récupération git (corps perdus en silence à la 1ʳᵉ exécution) - collision `settings` (section vs from app.config import settings → hasattr du fromlist) → renommée account_settings - WORKSPACE_COOKIE utilisé sans import dans workspaces.py (F821) - script __all__ mangeant la fin du fichier → __init__ réécrit Reste A28 : collections.py 2 622 L, board.py 2 101 L (lot 3). suite **1091/1091** · ruff OK · OpenAPI 509 identique · docs à jour
This commit is contained in:
@@ -1,5 +1,38 @@
|
||||
# Changelog - FlowDeck
|
||||
|
||||
## v7.30.0 (2026-10-01) — Audit : A28 lot 2 (dashboard → package 10 fichiers)
|
||||
|
||||
### Changed
|
||||
|
||||
- **A28 lot 2** : `app/routers/dashboard.py` (**2 735 lignes, 63 routes**)
|
||||
devient le package `app/routers/dashboard/` :
|
||||
· `local_workspace` 559 L (15 routes), `pages_html` 485 (6),
|
||||
`account_settings` 439 (16), `workspace` 321 (9), `pages_api` 240 (6),
|
||||
`workspaces` 131 (6), `public` 78 (1), `account_api` 77 (4)
|
||||
· `_common.py` (774 L) : les **15 helpers top-level intercalés** dans
|
||||
l'ancien fichier + état (`logger`, `_VERSION`, `WORKSPACE_COOKIE`)
|
||||
· `__init__.py` : re-export complet (les 7 importateurs existants —
|
||||
main, board ×3, my_tasks, web_clipper, wiki, sites, tests — n'ont
|
||||
rien changé) + `__all__`
|
||||
- Preuve contractuelle : **`docs/openapi-v2.json` régénéré = identique
|
||||
byte-à-byte** (ordre d'enregistrement des routes préservé)
|
||||
|
||||
### Fixed (pièges de la découpe, rattrapés)
|
||||
|
||||
- segment décorateur sans sa fonction (`def`) → corps perdus en silence :
|
||||
assert `def in seg` ajoutée + récupération depuis git
|
||||
- collision `settings` : la section `settings.py` entrait en conflit avec
|
||||
`from app.config import settings` du header (`hasattr` du fromlist de
|
||||
Python → la section était ignorée) → renommée `account_settings`
|
||||
- `WORKSPACE_COOKIE` utilisé dans `workspaces.py` sans import (F821) →
|
||||
import `._common` ajouté
|
||||
- script `__all__` tronquant la fin du fichier → `__init__.py` réécrit
|
||||
|
||||
### Notes
|
||||
|
||||
- Reste A28 : `collections.py` 2 622 L, `board.py` 2 101 L
|
||||
- Suite complète : **1091/1091** · ruff OK
|
||||
|
||||
## v7.29.0 (2026-10-01) — Audit : A28 lot 1 (api_v2 → package 14 fichiers)
|
||||
|
||||
### Changed
|
||||
|
||||
Reference in New Issue
Block a user