- app/services/realtime_merge.py : merge à 3 voix diff3-lite, regions disjointes conservees, conflit par champ + drapeau - protocole base (client embarque la base de sa saisie) ; sans base -> LWW historique (retro-compat) - ack renvoie le bloc fusionne + conflict ; adoption cote client + toast ; broadcast du resultat fusionne - broadcast non bloquant : file sortante + tache writer par connexion, coalescence des curseurs - clients trop lents deconnectes (4413), budget ops anti-flood (400/10s) - fix fuite room 4404 + room_state() sur page inexistante - GET /api/realtime/stats (observabilite) - 26 tests test_realtime_v64.py ; suite 725 verte ; ruff + eslint OK ; version 6.4.0
66 lines
3.2 KiB
Markdown
66 lines
3.2 KiB
Markdown
# WORKLOAD — FlowDeck Notion Clone
|
||
|
||
> **Début**: 2026-07-08 | **Version**: v6.4.0 | **Statut**: EN COURS 🔄
|
||
> **Cible**: parité Notion + intégration forge · **Reste roadmap**: SSO/SAML, synced blocks prod (databases/vues)
|
||
|
||
## 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+** |
|
||
|
||
## 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, 749+ tests, TestClient avec SQLite temporaire
|
||
- **CI/CD**: Gitea Actions (.gitea/workflows/ci.yml)
|