feat(db): v5.3.0 inline databases, predefined templates & property validation
- Slash command /database (DATA group) -> template picker -> inline DB embed block rendered by FlowDeckDB. 'Get Started > Database' uses it too. - 6 seeded database templates (CRM, Project tracker, Task list, Content calendar, Meeting notes, Reading list) with icon + schema; new service app/services/db_templates.py (materialize_properties, create_from_template). - POST /db/api and /db/inline/api accept 'template' and materialize collection_properties. database_templates gets an icon column (migration v4). - Property validation: collection_properties.validation_json (migration v4); validate_property_rule() in property_types (required/unique/min/max/ min_length/max_length); enforced in create/update page API (400 + message, unique excludes current row); property API accepts 'validation'. - UI: add-property modal exposes Required/Unique/Min/Max; cell edit shows validation errors (red outline + toast) and reverts. - VERSION + app.main -> 5.1.0; CHANGELOG + ROADMAP updated. - +9 tests (tests/test_db_advanced.py). 271 passed.
This commit is contained in:
+41
-1
@@ -1,6 +1,46 @@
|
||||
# Changelog — FlowDeck
|
||||
|
||||
## v5.0.0 (2026-09-06) — Command Palette & Migrations versionnées
|
||||
## v5.1.0 (2026-09-06) — Database Avancée : inline DB, templates prédéfinis & validation
|
||||
|
||||
> Livre la **v5.3.0** du roadmap : databases inline dans les pages (slash `/database`),
|
||||
> galerie de **templates prédéfinis** (CRM, Project tracker, …) et **validation des
|
||||
> propriétés** (required / unique / min / max) côté serveur + UI.
|
||||
|
||||
### Added — Inline databases (slash `/database`)
|
||||
- Commande slash **`/database`** (groupe DATA) dans l'éditeur : ouvre un **sélecteur de
|
||||
templates**, crée une database inline liée à la page et insère un bloc
|
||||
`embed_type:'collection'` rendu par `FlowDeckDB.renderInto`.
|
||||
- Le bouton « Database » de la barre *Get Started* ouvre désormais le même sélecteur
|
||||
(au lieu de créer une database vide directement).
|
||||
|
||||
### Added — Templates de database prédéfinis
|
||||
- **6 templates intégrés** seedés (migration v4) : Project tracker, CRM / Contacts,
|
||||
Task list, Content calendar, Meeting notes, Reading list — avec icône, description et
|
||||
schéma de propriétés.
|
||||
- `app/services/db_templates.py` : `materialize_properties()` (schéma → `collection_properties`)
|
||||
et `create_from_template()` (collection + propriétés + vue par défaut).
|
||||
- `POST /db/api` et `POST /db/inline/api` acceptent `"template": "<nom>"` et matérialisent
|
||||
les propriétés (titre exclu — c'est le titre de ligne). Colonne `icon` ajoutée à
|
||||
`database_templates` (migration v4).
|
||||
- `apply_db_template` (`/workspace/templates/database/{id}/apply`) matérialise les propriétés.
|
||||
|
||||
### Added — Validation des propriétés (required / unique / min / max)
|
||||
- Nouvelle colonne `collection_properties.validation_json` (migration v4) ; le type/format
|
||||
et les règles de validation sont portés par `validate_property_rule()` dans
|
||||
`property_types.py` (required, unique, min, max, min_length, max_length).
|
||||
- **Serveur** : `create_page_api` et `update_page_api` (`/db/{c}/pages/api`,
|
||||
`/db/pages/{id}/api`) valident les valeurs avant écriture → 400 + message clair. La règle
|
||||
`unique` exclut la page en cours d'édition. Les valeurs sont résolues par id **ou** par nom.
|
||||
- **API propriétés** : `POST/PUT /db/{c}/properties/api` acceptent `validation` (persisté).
|
||||
- **UI** (`_database_table_scripts.html`) : la modale « Add property » expose Required,
|
||||
Unique, Min, Max ; en cas de 400 à l'édition d'une cellule, la cellule est marquée en rouge
|
||||
et un toast affiche le message (valeur restaurée).
|
||||
|
||||
### Tests
|
||||
- **271 tests** (+9 dans `tests/test_db_advanced.py`) : templates seedés, création de
|
||||
collection/inline depuis template (propriétés matérialisées), apply template, validation
|
||||
required/unique/min-max (create + update, exclusion de la ligne courante), persistance de
|
||||
la config de validation, payload collection.
|
||||
|
||||
> Livre deux chantiers du roadmap v5 : la **migration au système de schéma versionné**
|
||||
> (v5.2.0, priorité n°1 — débloque tout le reste) et la **Command Palette + recherche
|
||||
|
||||
Reference in New Issue
Block a user