Archive meeting workflow and screenshot changes

This commit is contained in:
2026-05-27 12:55:19 +02:00
parent 2422236ef7
commit 12832dde84
48 changed files with 3041 additions and 43 deletions
@@ -0,0 +1,77 @@
## ADDED Requirements
### Requirement: Meeting automation rules are configurable
Meeting Assistant SHALL allow an optional local YAML rules file path to be configured.
When the configured rules file is missing or blank, Meeting Assistant SHALL continue without applying automation rules.
The local rules file SHALL be ignored by source control.
Rules SHALL be evaluated against the latest meeting note data read from disk for each event.
Meeting Assistant SHALL expose a diagnostic endpoint that reloads application configuration so workflow automation configuration changes can be picked up without restarting the application.
#### Scenario: Missing rules file is ignored
- **WHEN** Meeting Assistant handles a meeting event and no configured rules file exists
- **THEN** it leaves the meeting note and assistant context unchanged
#### Scenario: Created rule adds default attendee
- **GIVEN** a configured rule that triggers on meeting creation when `meeting.attendees.count = 0`
- **WHEN** Meeting Assistant creates a meeting note without attendees
- **THEN** it adds the configured attendee to the meeting note
#### Scenario: Workflow configuration is reloaded diagnostically
- **GIVEN** the workflow automation configuration has changed on disk
- **WHEN** the diagnostic workflow reload endpoint is called
- **THEN** Meeting Assistant reloads application configuration without restarting
- **AND** future workflow events use the reloaded workflow automation configuration
### Requirement: Meeting automation rules support lifecycle triggers
Meeting Assistant SHALL support rule triggers for `created`, `state_transition`, and `speaker_identified`.
A `state_transition` trigger MAY filter by `from`, `to`, or both state values.
A `speaker_identified` trigger MAY filter by speaker name.
#### Scenario: State transition rule matches from and to
- **GIVEN** a configured rule that triggers on a state transition from `collecting metadata` to `transcribing`
- **WHEN** Meeting Assistant transitions that meeting from `collecting metadata` to `transcribing`
- **THEN** it applies the rule steps
#### Scenario: Speaker identified rule filters by name
- **GIVEN** a configured rule that triggers when speaker `Ada` is identified
- **WHEN** Meeting Assistant identifies speaker `Grace`
- **THEN** it does not apply the rule
- **WHEN** Meeting Assistant identifies speaker `Ada`
- **THEN** it applies the rule steps
### Requirement: Meeting automation rules support conditions and steps
Meeting Assistant SHALL support rule conditions using an expression engine.
Rules SHALL support nested `and`, `or`, and `not` condition groups.
Step values SHALL support Razor syntax against the current meeting event model.
Meeting Assistant SHALL support these initial rule steps:
- `add_attendee`
- `remove_attendee`
- `set_property`
- `add_context`
- `add_project`
#### Scenario: Nested conditions choose a matching rule
- **GIVEN** a configured rule with nested `and`, `or`, and `not` conditions over meeting title, attendees, and event data
- **WHEN** the condition evaluates to true
- **THEN** Meeting Assistant applies the rule
- **WHEN** the condition evaluates to false
- **THEN** Meeting Assistant skips the rule
#### Scenario: Templated context mentions identified speaker
- **GIVEN** a configured `speaker_identified` rule with an `add_context` step using Razor syntax
- **WHEN** Meeting Assistant identifies matching speaker `Ada`
- **THEN** it appends rendered context text containing `Ada` to the assistant context note
#### Scenario: Rule can clean a meeting title
- **GIVEN** a configured state-transition rule that matches a title containing a configured marker
- **WHEN** the rule runs
- **THEN** Meeting Assistant can update the meeting title through `set_property`