refactor: A28 lot 3 — collections.py (2 622 L) → package 13 fichiers (v7.31.0)
FlowDeck CI / docker (push) Successful in 1m54s
FlowDeck CI / lint (push) Successful in 1m55s
FlowDeck CI / test (push) Successful in 15m28s

Découpe par concern de l'ancien app/routers/collections.py (2 622 lignes,
53 endpoints / 52 fonctions) en package `app/routers/collections/` :

- 10 modules de routes : crud 337 L (6 r.), properties 322 (8),
  linked 286 (7), structure 267 (8), dashboard_views 214 (3),
  meta 197 (5), views 187 (6), pages 184 (4), data_api 122 (2),
  boards 61 (3)
- _common.py (220 L) : 8 helpers auth/permissions/validation
- _renderers.py (667 L) : 15 rendus HTML des vues + CHART_MAX_GROUPS
- __init__.py : ré-exports connus (_validate_page_properties pour
  automations ; _chart_values/_chart_aggregate/_fmt_number/_render_chart
  pour les tests) + __all__

Preuve contractuelle : docs/openapi-v2.json régénéré = IDENTIQUE
byte-à-byte (509 chemins, ordre préservé).

Pièges rattrapés :
- docstring d'origine conservée dans le header copié → F404
  (from __future__ après un statement) → slice [1:30]
- décorateurs empilés (view_collection ×2) : segment sans def →
  skip du 2e décorateur (53 endpoints = 52 unités)
- CHART_MAX_GROUPS hors détection des helpers (F821) → import ._renderers
- test_csp_no_cdn_and_vendor lisait collections.py → balayage du package

Reste A28 : board.py 2 101 L (lot 4).

suite **1091/1091** · ruff OK · OpenAPI 509 identique · docs à jour
This commit is contained in:
2026-10-02 08:16:03 -04:00
parent c0925e511b
commit adf56a2dd8
21 changed files with 3168 additions and 2631 deletions
+35
View File
@@ -1,5 +1,40 @@
# Changelog - FlowDeck
## v7.31.0 (2026-10-01) — Audit : A28 lot 3 (collections → package 13 fichiers)
### Changed
- **A28 lot 3** : `app/routers/collections.py` (**2 622 lignes, 53
endpoints / 52 fonctions**) devient le package `app/routers/collections/` :
· 10 modules de routes : `crud` 337 L (6), `properties` 322 (8),
`linked` 286 (7), `structure` 267 (8), `dashboard_views` 214 (3),
`meta` 197 (5), `views` 187 (6), `pages` 184 (4), `data_api` 122 (2),
`boards` 61 (3)
· `_common.py` (220 L) : 8 helpers auth/permissions/validation
· `_renderers.py` (667 L) : **15 rendus HTML des vues** (_render_chart,
_render_map, …) + `CHART_MAX_GROUPS`
· `__init__.py` : ré-exports connus — `_validate_page_properties`
(automations), `_chart_values`/`_chart_aggregate`/`_fmt_number`/
`_render_chart` (tests)
- Preuve contractuelle : **`docs/openapi-v2.json` régénéré = identique
byte-à-byte**
### Fixed (pièges de la découpe)
- docstring d'origine gardée dans le header copié → **F404** (`from
__future__` après un statement) : slice `[1:30]`
- décorateurs **empilés** (`view_collection` ×2) : segment sans `def` →
skip du 2ᵉ décorateur (53 endpoints = 52 unités)
- `CHART_MAX_GROUPS` hors détection des helpers (F821 dans
`dashboard_views`) → import `._renderers` ajouté
- `test_csp_no_cdn_and_vendor` lisait `collections.py` → balayage du
package
### Notes
- Reste A28 : `board.py` 2 101 L (lot 4)
- Suite complète : **1091/1091** · ruff OK
## v7.30.0 (2026-10-01) — Audit : A28 lot 2 (dashboard → package 10 fichiers)
### Changed