feat: Calculer automatiquement les moyennes après chaque saisie de notes
Les enseignants ont besoin de moyennes à jour immédiatement après la publication ou modification des notes, sans attendre un batch nocturne. Le système recalcule via Domain Events synchrones : statistiques d'évaluation (min/max/moyenne/médiane), moyennes matières pondérées (normalisation /20), et moyenne générale par élève. Les résultats sont stockés dans des tables dénormalisées avec cache Redis (TTL 5 min). Trois endpoints API exposent les données avec contrôle d'accès par rôle. Une commande console permet le backfill des données historiques au déploiement.
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
# BMad Module Workflows
|
||||
|
||||
Advanced patterns for BMad module workflows — long-running, multi-stage processes with progressive disclosure, config integration, and compaction survival.
|
||||
|
||||
---
|
||||
|
||||
## Workflow Persona
|
||||
|
||||
BMad workflows treat the human operator as the expert. The agent facilitates — asks clarifying questions, presents options with trade-offs, validates before irreversible actions. The operator knows their domain; the workflow knows the process.
|
||||
|
||||
---
|
||||
|
||||
## Config Reading and Integration
|
||||
|
||||
Workflows read config from `{project-root}/_bmad/config.yaml` and `config.user.yaml`.
|
||||
|
||||
### Config Loading Pattern
|
||||
|
||||
**Module-based skills** — load with fallback and setup skill awareness:
|
||||
|
||||
```
|
||||
Load config from {project-root}/_bmad/config.yaml ({module-code} section) and config.user.yaml.
|
||||
If missing: inform user that {module-setup-skill} is available, continue with sensible defaults.
|
||||
```
|
||||
|
||||
**Standalone skills** — load best-effort:
|
||||
|
||||
```
|
||||
Load config from {project-root}/_bmad/config.yaml and config.user.yaml if available.
|
||||
If missing: continue with defaults — no mention of setup skill.
|
||||
```
|
||||
|
||||
### Required Core Variables
|
||||
|
||||
Load core config (user preferences, language, output locations) with sensible defaults. If the workflow creates documents, include document output language.
|
||||
|
||||
**Example config line for a document-producing workflow:**
|
||||
|
||||
```
|
||||
vars: user_name:BMad,communication_language:English,document_output_language:English,output_folder:{project-root}/_bmad-output,bmad_builder_output_folder:{project-root}/bmad-builder-creations/
|
||||
```
|
||||
|
||||
Config variables used directly in prompts — they already contain `{project-root}` in resolved values.
|
||||
|
||||
---
|
||||
|
||||
## Long-Running Workflows: Compaction Survival
|
||||
|
||||
Workflows that run long may trigger context compaction. Critical state MUST survive in output files.
|
||||
|
||||
### The Document-Itself Pattern
|
||||
|
||||
**The output document is the cache.** Write directly to the file you're creating, updating progressively. The document stores both content and context:
|
||||
|
||||
- **YAML front matter** — paths to input files, current status
|
||||
- **Draft sections** — progressive content as it's built
|
||||
- **Status marker** — which stage is complete
|
||||
|
||||
Each stage after the first reads the output document to recover context. If compacted, re-read input files listed in the YAML front matter.
|
||||
|
||||
```markdown
|
||||
---
|
||||
title: 'Analysis: Research Topic'
|
||||
status: 'analysis'
|
||||
inputs:
|
||||
- '{project_root}/docs/brief.md'
|
||||
created: '2025-03-02T10:00:00Z'
|
||||
updated: '2025-03-02T11:30:00Z'
|
||||
---
|
||||
```
|
||||
|
||||
**When to use:** Guided flows with long documents, yolo flows with multiple turns. Single-pass yolo can wait to write final output.
|
||||
|
||||
**When NOT to use:** Short single-turn outputs, purely conversational workflows, multiple independent artifacts (each gets its own file).
|
||||
|
||||
---
|
||||
|
||||
## Sequential Progressive Disclosure
|
||||
|
||||
Use numbered prompt files at the skill root when:
|
||||
|
||||
- Multi-phase workflow with ordered stages
|
||||
- Input of one phase affects the next
|
||||
- Workflow is long-running and stages shouldn't be visible upfront
|
||||
|
||||
### Structure
|
||||
|
||||
```
|
||||
my-workflow/
|
||||
├── SKILL.md # Routing + entry logic (minimal)
|
||||
├── references/
|
||||
│ ├── 01-discovery.md # Stage 1
|
||||
│ ├── 02-planning.md # Stage 2
|
||||
│ ├── 03-execution.md # Stage 3
|
||||
│ └── templates.md # Supporting reference
|
||||
└── scripts/
|
||||
└── validator.sh
|
||||
```
|
||||
|
||||
Each stage prompt specifies prerequisites, progression conditions, and next destination. SKILL.md is minimal routing logic.
|
||||
|
||||
**Keep inline in SKILL.md when:** Simple skill, well-known domain, single-purpose utility, all stages independent.
|
||||
|
||||
---
|
||||
|
||||
## Module Metadata Reference
|
||||
|
||||
BMad module workflows require extended frontmatter metadata. See `./references/metadata-reference.md` for the metadata template and field explanations.
|
||||
|
||||
---
|
||||
|
||||
## Workflow Architecture Checklist
|
||||
|
||||
Before finalizing a BMad module workflow, verify:
|
||||
|
||||
- [ ] Facilitator persona — treats operator as expert?
|
||||
- [ ] Config integration — language, output locations read and used?
|
||||
- [ ] Portable paths — artifacts use `{project_root}`?
|
||||
- [ ] Compaction survival — each stage writes to output document?
|
||||
- [ ] Document-as-cache — YAML front matter with status and inputs?
|
||||
- [ ] Progressive disclosure — stages in `./references/` with progression conditions?
|
||||
- [ ] Final polish — subagent polish step at the end?
|
||||
- [ ] Recovery — can resume by reading output doc front matter?
|
||||
Reference in New Issue
Block a user