Files
flowdeck/WORKLOAD.md
T
bruno adf56a2dd8
FlowDeck CI / docker (push) Successful in 1m54s
FlowDeck CI / lint (push) Successful in 1m55s
FlowDeck CI / test (push) Successful in 15m28s
refactor: A28 lot 3 — collections.py (2 622 L) → package 13 fichiers (v7.31.0)
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
2026-10-02 08:16:03 -04:00

4.6 KiB
Raw Blame History

WORKLOAD — FlowDeck Notion Clone

Début: 2026-07-08 | Version: v7.31.0 (audit — A28 lot 3 : collections.py 2 622 L → package 13 fichiers) | Statut: EN COURS 🔄 Cible: parité Notion + intégration forge · Follow-ups v7.3 livrés: sidebar teamspaces, notif page.updated, charts number + dashboards multi-DB, unfurl forge, UI Settings → Audit — voir ROADMAP.md § v7.3.0

Avancement Global

Version Description Statut Tests
v0.2–v0.9 Base → Backend ✅ —
v1.0 Production (lifespan, CI/CD) ✅ 28/28
v1.1 Pages & Sidebar Notion ✅ —
v1.2 Éditeur Notion (slash menu, blocs) ✅ —
v1.3 Database Concept (collections) ✅ 34/34
v1.4 Propriétés Avancées (21 types) ✅ 38/38
v1.5 Relations, Rollups, Formulas ✅ 43/43
v1.6 Vues (Calendar, Gallery, List, Timeline) ✅ 49/49
v1.7 Vues Améliorées (view config, save-as) ✅ —
v1.8 Sub-items & Dépendances ✅ 56/56
v1.9 My Tasks Dashboard ✅ 60/60
v2.0 Multi-User + Editor Complete ✅ 67/67
v2.1 Public API, Webhooks, PWA ✅ 73/73
v2.2 Share/Publish, Favorites, Library ✅ 73/73
v3.0 Auth locale, Multi-Forge, Standalone ✅ —
v4.x–v5.x MVP → Agent IA, palette, automations, import, calendrier, wiki-links, synced blocks ✅ 523+
v6.0–v6.3 PWA offline, permissions granulaires, web clipper, API publique v2 ✅ 668+
v6.4.0 Realtime production (merge 3-voix, broadcast non bloquant) ✅ 749+
v6.5.0–v6.5.1 Synced blocks production (databases/vues) + webhooks v2 complets ✅ 749
v6.6.0 Agent phase 5 — API publique agent & skill marketplace ✅ 764+
v6.7.0 SSO / SAML + OIDC entreprise (Enterprise Auth) ✅ 802
v6.8.0 Sites multi-pages + Forms publics (doc) ✅ 20
v6.9.0 Recherche hybride + Ask AI RAG (doc) ✅ 24
v7.0.0 Automations multi-étapes + Workers lite (doc) ✅ 31
v7.1.0 Calendar sync + Meeting Notes (doc) ✅ 15
v7.2.0 SCIM + 2FA + Audit UI + gouvernance agents (doc) ✅ 52
v7.3.0 Teamspaces + Verified + Polish + follow-ups (doc) ✅ 72

Suites de régression : test_v72_enterprise.py (52) + test_v73_wiki_polish.py (72) = 124 verts · suite complète -n auto = 1016 passed. Follow-ups v7.3 livrés (voir § v7.3.0 du ROADMAP.md): sidebar par teamspace, charts number/multi-DB, notif page.updated aux followers, unfurl gitea:/github:, page Settings → Audit — + 21 casses SSO corrigées (install python3-saml/authlib).

Blocs Complétés

Bloc Features Statut
Bloc 1 Database Concept ✅ 6/6
Bloc 2 Propriétés Avancées ✅ 14/14
Bloc 3 Vues Manquantes ✅ 10/10
Bloc 4 Sub-items & Dépendances ✅ 7/7
Bloc 5 My Tasks ✅ 7/7
Bloc 6 Éditeur Complet ✅ 8/8
Bloc 7 Fonctions Transversales ✅

Total: 52/52 features (100%)

Architecture

Tables (21)

users, user_tokens, boards, cards, notes, col_mapping, checklists, checklist_items, project_properties, property_values, ai_keywords, pages, collections, collection_pages, collection_views, collection_properties, workspaces, workspace_members, comments, page_history, favorites, database_templates, page_templates, webhook_subscriptions

Routeurs (11)

dashboard, board, notes, api, auth, webhooks, collections, my_tasks, workspace, public_api + app-level routes

Services (6)

GiteaClient, FormulaEngine, RollupEngine, GiteaBoardCompat, property_types, webhook_outbound

Endpoints (85+)

CRUD collections/pages, 5 vues HTML, relations/rollups/formulas, sub-items/dependencies, my-tasks, workspaces, comments, history, favorites, templates, CSV import/export, public sharing, public API v1, webhooks, PWA manifest

Stack

  • Backend: Python 3.12 + FastAPI + httpx
  • Frontend: Jinja2 + HTMX + Alpine.js + SortableJS + CSS 31KB
  • BDD: SQLite WAL mode, 21 tables, foreign keys ON
  • Auth: OAuth2 Gitea + sessions signed (itsdangerous) + token API
  • Déploiement: Docker (python:3.12-slim), docker-compose, port 8080
  • Tests: pytest, 764+ tests, TestClient avec SQLite temporaire
  • CI/CD: Gitea Actions (.gitea/workflows/ci.yml)