Yvv
9a8f10efdf
Groupes d'identités : modèle DB, router, store, UI cercles + Protocoles
...
- Group + GroupMember : modèle SQLAlchemy + migration + router CRUD
- /api/v1/groups : liste, création, suppression, membres (add/remove)
- groups.ts : store Pinia (fetchAll, getGroup, create, remove, addMember, removeMember)
- decisions/new.vue : cercles 1 & 2 en mode texte libre OU groupe prédéfini
(affected_count calculé depuis le member_count du groupe)
- protocols/index.vue : section Groupes avec expand/collapse, ajout/suppression membres
- lang="fr" + spellcheck sur tous les textareas ; placeholder cercle 2 corrigé
- n8n channels : prévu sprint futur (texte libre → webhook appel à contribution)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 20:25:44 +02:00
Yvv
e2ae8b196e
Qualify : service IA + endpoint ai-chat + wizard Décider (3 cercles + AI 2-rounds)
...
- qualify_ai_service.py : stub IA 2-allers-retours (réversibilité + urgence)
- qualify.py router : endpoint POST /ai-chat → AIChatRequest/AIChatResponse
- test_qualifier_ai.py : 11 tests A1-A7 (questions stables, done=True au 2e round)
- decisions/new.vue : wizard 4 étapes — branche mandat (liste + lien demande) /
hors-mandat (3 cercles textarea), questions IA, résultat + boîte à outils,
formulaire final
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 19:44:00 +02:00
Yvv
5c51cffc93
Qualifier : corrections R2/R6 + router + modèle DB + wizard frontend
...
Corrections moteur (TDD) :
- R2 : within_mandate → record_in_observatory=True (Observatoire des décisions)
- R6 : >50 personnes → collective recommandé, pas obligatoire (confidence=recommended)
- R3 supprimée : affected_count=1 hors périmètre de l'outil
- R9-R12 renommés G1-G4 (garde-fous internes)
- 23 tests, 213/213 verts
Étape 1 — Router /api/v1/qualify :
- POST / → qualify() avec config depuis DB ou defaults
- GET /protocol → protocole actif
- POST /protocol → créer/remplacer (auth requise)
Étape 2 — Modèle QualificationProtocol :
- Table qualification_protocols (seuils configurables via admin)
- Migration Alembic + seed du protocole par défaut
Étape 3 — Wizard frontend decisions/new.vue :
- Étape 1 : formulaire de qualification (mandat, affected_count, structurant, contexte)
- Étape 2 : résultat (type, raisons, modalités, observatoire, on-chain)
- Étape 3 : formulaire de décision (titre, description, protocole si collectif)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 19:12:01 +02:00
Yvv
428299c9c8
TDD Qualifier : moteur de qualification des décisions (R1–R12)
...
- engine/qualifier.py : QualificationConfig (seuils configurables),
QualificationInput, QualificationResult, DecisionType enum, qualify()
- Règles : within_mandate→consultation_avis, affected_count→routing,
is_structural→recommend_onchain, seuils lus depuis config
- Stub suggest_modalities_from_context() — interface LLM définie,
intégration Qwen3.6 (MacStudio) à venir
- 22 tests, 212/212 verts, zéro régression
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 16:16:35 +02:00
Yvv
fc84600f97
Fix auth : CORS outermost + dev rate limit + filtre workspace réactif
...
- Middleware : CORSMiddleware ajouté en dernier = plus externe = tous les
codes de retour (dont 429) portent Access-Control-Allow-Origin
→ résout "no response / Failed to fetch" sur POST /auth/challenge
- Dev mode : rate_limit_auth = RATE_LIMIT_DEFAULT (60/min) au lieu de 10/min
→ plus de blocage login après quelques reconnexions
- app.vue : watcher activeSlug → refetch documents/décisions/protocoles/mandats
→ le sélecteur de workspace filtre désormais le contenu en temps réel
- TDD : 4 tests middleware (RED→GREEN) + doc méthode docs/dev/tdd-methode.md
- Régression : 190/190 tests verts
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 15:51:28 +02:00
Yvv
79e468b40f
Multi-tenancy : espaces de travail + fix auth reload (rate limiter OPTIONS)
...
- Modèles Organization + OrgMember, migration Alembic (SQLite compatible)
- organization_id nullable sur Document, Decision, Mandate, VotingProtocol
- Service, schéma, router /organizations + dependency get_active_org_id
- Seed : Duniter G1 + Axiom Team ; tout le contenu seed attaché à Duniter G1
- Backend : list/create filtrés par header X-Organization
- Frontend : store organizations, WorkspaceSelector réel, useApi injecte l'org
- Fix critique : rate_limiter exclut les requêtes OPTIONS (CORS preflight)
→ résout le bug "Failed to fetch /auth/me" au reload (429 sur preflight)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 15:17:14 +02:00
Yvv
224e5b0f5e
Auth Duniter v2 : vérification réelle + extension signing + titres outils
...
Backend :
- Vérification Sr25519/Ed25519 réelle via substrateinterface (bypass démo)
- Message signé : <Bytes>{challenge}</Bytes> (convention polkadot.js)
- DEV_PROFILES : Charlie → Référent structure, Dave → Auteur (WoT member)
Frontend :
- Signing via extension polkadot.js / Cesium2 (_signWithExtension)
- @polkadot/extension-dapp + @polkadot/util installés
- Vite : global=globalThis + optimizeDeps pour les packages polkadot
- Boîte à outils : titres complets des 4 sections
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-24 03:36:51 +01:00
Yvv
a8dc0dfb40
Typo Plus Jakarta Sans + renommage libreDecision + mode démo prod + seed mandats
...
- Fonte : Nunito → Plus Jakarta Sans (moderne, ronde sans être toy)
- Logo : ğ(Decision) → libreDecision (libre italic/muted + Decision bold)
- Footer et watermark DocumentPreview mis à jour
- Mode démo : DEMO_MODE flag dans config.py + auth.py (profils rapides en prod)
- docker-compose : ENVIRONMENT=production explicite + DEMO_MODE=true par défaut
- Seed : +décision Licence G1 v0.4.0, +3 mandats (ComTech, Admin Forgerons, Modération)
runner 7→10 étapes, import Mandate/MandateStep ajouté
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-24 01:42:22 +01:00
Yvv
ed9ed11cd4
Toolbox 30rem sticky + accordéons collapsibles + renommage libreDecision
...
- Boîte à outils élargie à 30rem (×1.75) — flottante sticky, zéro scroll visible
- ToolboxSection : nouveau composant accordéon générique (chevron, défaut fermé)
- ToolboxVignette : titre cliquable, bullets/actions cachés par défaut
- 4 pages : ContextMapper/SocioElection/WorkflowMilestones/inertie → ToolboxSection
- Suppression doublon SectionLayout (common/) — conflit de nommage résolu
- Renommage complet Glibredecision → libreDecision dans configs/docker/CI
- README.md + CONTRIBUTING.md ajoutés
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-17 00:48:20 +01:00
Yvv
8201e73d7c
Accents FR, architecture modulaire, protocoles opérationnels
...
- Fix accents manquants dans 7 pages UI (décisions, boîte à outils, etc.)
- Titres accueil enrichis : Décisions structurantes, Documents de référence,
Mandats et nominations, Protocoles et fonctionnement
- Retrait Embarquement Forgeron du seed (n'est pas une Decision)
- 2 protocoles opérationnels dans Protocoles : Embarquement Forgeron
(lié à l'Acte d'engagement) + Soumission Runtime Upgrade (lié à la
Décision Runtime Upgrade) avec timeline et liens croisés signalétiques
- Décision Runtime Upgrade : badge on-chain + lien protocole + contexte
- Document [slug] : lien protocole dans la section Qualification
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-03 07:05:55 +01:00
Yvv
c19c1aa55e
Restructure Engagement Forgeron + fix GenesisBlock + InertiaSlider
...
- Seed: restructure Engagement Forgeron (51→59 items) avec 3 nouvelles
sections: Engagements fondamentaux (EF1-EF3), Engagements techniques
(ET1-ET3), Qualification (Q0-Q1) liée au protocole Embarquement
- Seed: ajout protocole Embarquement Forgeron (5 jalons: candidature,
miroir, évaluation, certification Smith, mise en ligne)
- GenesisBlock: fix lisibilité — fond mood-surface teinté accent au lieu
de mood-text inversé, texte mood-aware au lieu de rgba blanc hardcodé
- InertiaSlider: mini affiche "Inertie" sous le curseur, compact en
width:fit-content pour s'adapter au label
- Frontend: ajout section qualification dans SECTION_META/SECTION_ORDER
- Pages, composants et tests des sprints précédents
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-03 03:44:33 +01:00
Yvv
a1fa31c3f9
Accents dans les commentaires de section du seed
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 09:49:37 +01:00
Yvv
3de07e8c17
Fix: accents manquants dans seed + labels type visibles
...
- Reseed avec tous les accents français corrigés (à, é, è, ê, î, ô)
- Labels type-étiquette: taille augmentée, fond accent léger, visible
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 09:45:15 +01:00
Yvv
21ceae4866
Français soigné, labels signalétiques, formule N1.1 visuelle, F1.2 lisible
...
- Accents français partout (seed + composants Vue)
- Labels discrets: Engagements, Préambule, Application, Variables
- N1.1: présentation visuelle des niveaux d'inertie avec formule
- F1.2: paramètres + lecture du curseur d'inertie
- MarkdownRenderer: espacement resserré, support code inline
- Toutes descriptions et meta en bon français
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 09:29:50 +01:00
Yvv
0b230483d9
UX: texte valorise, vote discret, inertie visuelle, genese repliable
...
- EngagementCard: texte agrandi (15-16px), vote board discret (opacity, scale)
- MiniVoteBoard: badge Adopte/En attente apres "Vote permanent :", board compact
- InertiaSlider: labels descriptifs (inertie pour le remplacement), schema SVG
avec courbe de seuil, formule simplifiee et legende parametres
- GenesisBlock: toggle repliement individuel par section (source, outils,
forum, processus, contributeurs)
- Votes varies dans Conseils et bonnes pratiques (non-adoptes inclus)
- Seed: Certification responsable → Reciprocite, ordonnancement inertie standard,
notes variables K1/K2 (vote porte sur l'inclusion, pas les valeurs),
init_db() dans seed.py pour DB vierge
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 08:52:56 +01:00
Yvv
62808b974d
Composants engagement: GenesisBlock, InertiaSlider, MiniVoteBoard, EngagementCard, DocumentTuto
...
Backend: genesis_json sur Document, section_tag/inertia_preset/is_permanent_vote sur DocumentItem
Frontend: 5 nouveaux composants pour vue detail document enrichie
- GenesisBlock: sources, outils, synthese forum, contributeurs (depliable)
- InertiaSlider: visualisation inertie 4 niveaux avec params formule G/M
- MiniVoteBoard: tableau vote compact (barre seuil, pour/contre, participation)
- EngagementCard: carte item enrichie integrant vote + inertie + actions
- DocumentTuto: modal pedagogique vote permanent/inertie/seuils
Seed et page [slug] enrichis pour exploiter les nouveaux champs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 07:59:05 +01:00
Yvv
11e4a4d60a
Dev mode: panneau connexion rapide avec 4 profils pre-configures
...
Ajout d'un panneau dev sous le login (Alice=membre, Bob=forgeron,
Charlie=comite tech, Dave=observateur) pour tester les differents
roles sans keypair Ed25519. Endpoint GET /auth/dev/profiles renvoie
les profils uniquement en ENVIRONMENT=development.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 03:09:40 +01:00
Yvv
c7cb22f313
Design ludique arrondi + mobile responsive + fix IPv6
...
- ToolboxVignette: prop bullets[] remplace description, touch targets agrandis
- Design arrondi: border-radius 16px cards, 20px pills, 12px inputs, no borders
- Hover animations: translateY(-3px) + shadow, active states pour touch
- SectionLayout: toolbox accordion mobile, pills scroll horizontal, responsive title/subtitle
- app.vue: MoodSwitcher dans drawer mobile, header responsive, nav touch-friendly
- Dashboard: grille 2-colonnes mobile, connect banner column layout, formula code scroll
- Documents/decisions/mandates/protocols: cards responsive (padding, font-size, gap)
- Login: touch targets 3rem min, iOS zoom prevention, responsive sizing
- Modals: padding responsive sm:p-6
- Protocols: table compact mobile, proto items responsive
- nuxt.config: host 0.0.0.0 pour fix IPv4/IPv6 binding
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-28 23:09:29 +01:00
Yvv
61a414d214
Design moderne + seed reel engagements forgeron avec votes
...
- CSS: couleurs saturees sans pastels, border-radius 4-6px, inputs mood-aware
- Header: allege (3.25rem), logo typographique, bouton connexion fin
- Login: redesign complet avec steps dots et input natif style
- Dashboard: entry cards epurees, tags toolbox compacts
- Seed: 34 vraies clauses forgeron v2.0.0 (forum topic 33165)
- Seed: 9 clauses certification (licence G1)
- Seed: 11 votants simules + 3 sessions de vote (10 pour / 1 contre)
- MoodSwitcher: dots colores au lieu d'icones
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-28 18:28:14 +01:00
Yvv
77dceb49c3
Refonte design : 4 humeurs, onboarding, sections avec boite a outils
...
- Systeme de themes adaptatifs : Peps (light chaud), Zen (light calme),
Chagrine (dark violet), Grave (dark ambre) avec CSS custom properties
- Dashboard d'accueil orienté onboarding avec cartes-portes et teaser
boite a outils
- SectionLayout reutilisable : liste + sidebar toolbox + status pills
cliquables (En prepa / En vote / En vigueur / Clos)
- ToolboxVignette : vignettes Contexte / Tutos / Choisir / Demarrer
- Seed : Acte engagement certification + forgeron, Runtime Upgrade
(decision on-chain), 3 modalites de vote (majoritaire, quadratique,
permanent)
- Backend adapte SQLite (Uuid portable, 204 fix, pool conditionnel)
- Correction noms composants (pathPrefix: false), pinia/nuxt ^0.11
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-28 17:44:48 +01:00
Yvv
403b94fa2c
Sprint 5 : integration et production -- securite, performance, API publique, documentation
...
Backend: rate limiter, security headers, blockchain cache service avec RPC,
public API (7 endpoints read-only), WebSocket auth + heartbeat, DB connection
pooling, structured logging, health check DB. Frontend: API retry/timeout,
WebSocket auth + heartbeat + typed events, notifications toast, mobile hamburger
+ drawer, error boundary, offline banner, loading skeletons, dashboard enrichi.
Documentation: guides utilisateur complets (demarrage, vote, sanctuaire, FAQ 30+),
guide deploiement, politique securite. 123 tests, 155 fichiers.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-28 15:12:50 +01:00
Yvv
3cb1754592
Sprint 4 : decisions et mandats -- workflow complet + vote integration
...
Backend: 7 nouveaux endpoints (advance, assign, revoke, create-vote-session),
services enrichis avec creation de sessions de vote, assignation de mandataire
et revocation. 35 nouveaux tests (104 total). Frontend: store mandates, page
cadrage decisions, detail mandats, composants DecisionWorkflow, DecisionCadrage,
DecisionCard, MandateTimeline, MandateCard. Documentation mise a jour.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-28 14:28:34 +01:00
Yvv
cede2a585f
Sprint 3 : protocoles de vote et boite a outils
...
Backend:
- Sessions de vote : list, close, tally, threshold details, auto-expiration
- Protocoles : update, simulate, meta-gouvernance, formulas CRUD
- Service vote enrichi : close_session, get_threshold_details, nuanced breakdown
- Schemas : ThresholdDetailOut, VoteResultOut, FormulaSimulationRequest/Result
- WebSocket broadcast sur chaque vote + fermeture session
- 25 nouveaux tests (threshold details, close, nuanced, simulation)
Frontend:
- 5 composants vote : VoteBinary, VoteNuanced, ThresholdGauge, FormulaDisplay, VoteHistory
- 3 composants protocoles : ProtocolPicker, FormulaEditor, ModeParamsDisplay
- Simulateur de formules interactif (page /protocols/formulas)
- Page detail protocole (/protocols/[id])
- Composable useWebSocket (live updates)
- Composable useVoteFormula (calcul client-side reactif)
- Integration KaTeX pour rendu LaTeX des formules
Documentation:
- API reference : 8 nouveaux endpoints documentes
- Formules : tables d'inertie, parametres detailles, simulation API
- Guide vote : vote binaire/nuance, jauge, historique, simulateur, meta-gouvernance
55 tests passes (+ 1 skipped), 126 fichiers total.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-28 13:29:31 +01:00
Yvv
2bdc731639
Sprint 2 : moteur de documents + sanctuaire
...
Backend:
- CRUD complet documents/items/versions (update, delete, accept, reject, reorder)
- Service IPFS (upload/retrieve/pin via kubo HTTP API)
- Service sanctuaire : pipeline SHA-256 + IPFS + on-chain (system.remark)
- Verification integrite des entrees sanctuaire
- Recherche par reference (document -> entrees sanctuaire)
- Serialisation deterministe des documents pour archivage
- 14 tests unitaires supplementaires (document service)
Frontend:
- 9 composants : StatusBadge, MarkdownRenderer, DiffView, ItemCard,
ItemVersionDiff, DocumentList, SanctuaryEntry, IPFSLink, ChainAnchor
- Page detail item avec historique des versions et diff
- Page detail sanctuaire avec verification integrite
- Modal de creation de document + proposition de version
- Archivage document vers sanctuaire depuis la page detail
Documentation:
- API reference mise a jour (9 nouveaux endpoints)
- Guides utilisateur documents et sanctuaire enrichis
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-28 13:08:48 +01:00
Yvv
25437f24e3
Sprint 1 : scaffolding complet de Glibredecision
...
Plateforme de decisions collectives pour Duniter/G1.
Backend FastAPI async + PostgreSQL (14 tables, 8 routers, 6 services,
moteur de vote avec formule d'inertie WoT/Smith/TechComm).
Frontend Nuxt 4 + Nuxt UI v3 + Pinia (9 pages, 5 stores).
Infrastructure Docker + Woodpecker CI + Traefik.
Documentation technique et utilisateur (15 fichiers).
Seed : Licence G1, Engagement Forgeron v2.0.0, 4 protocoles de vote.
30 tests unitaires (formules, mode params, vote nuance) -- tous verts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-28 12:46:11 +01:00