chore: Archive all pending OpenSpec proposals

Force archive the following proposals:
- add-audio-device-selector (complete)
- add-embedded-backend-packaging (19/26 tasks)
- add-flexible-deployment-options (20/21 tasks)

New specs created:
- audio-device-management (7 requirements)
- embedded-backend (8 requirements)

Updated specs:
- transcription (+2 requirements for model download progress)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
egg
2025-12-22 08:44:04 +08:00
parent c36f4167f2
commit e7a06e2b8f
19 changed files with 1551 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
## ADDED Requirements
### Requirement: SQLite Database Support
The backend SHALL support SQLite as an alternative to MySQL for offline/standalone deployments.
#### Scenario: SQLite mode initialization
- **WHEN** `database.type` is set to `"sqlite"` in config.json
- **THEN** backend SHALL create SQLite database at `database.sqlitePath`
- **AND** initialize all required tables using SQLite-compatible syntax
#### Scenario: MySQL mode initialization
- **WHEN** `database.type` is set to `"mysql"` or not specified in config.json
- **THEN** backend SHALL connect to MySQL using credentials from `database` section
- **AND** behave exactly as before this change
#### Scenario: SQLite thread safety
- **WHEN** multiple concurrent requests access SQLite database
- **THEN** backend SHALL use thread lock to serialize database operations
- **AND** use `check_same_thread=False` for SQLite connection
#### Scenario: SQLite data persistence
- **WHEN** app is closed and reopened
- **THEN** all meeting data SHALL persist in SQLite file
- **AND** be accessible on next launch
### Requirement: Portable Extraction Path Configuration
The portable Windows build SHALL extract to a predictable folder name.
#### Scenario: Fixed extraction folder
- **WHEN** portable executable starts
- **THEN** it SHALL extract to `%TEMP%\Meeting-Assistant` instead of random UUID folder
#### Scenario: Windows Defender consistency
- **WHEN** user launches portable executable multiple times
- **THEN** Windows Defender SHALL NOT prompt for permission each time
- **BECAUSE** extraction path is consistent across launches
## MODIFIED Requirements
### Requirement: Unified Configuration Schema
All configuration for frontend, backend, and whisper SHALL be in a single `config.json` file.
#### Scenario: Backend configuration loading
- **WHEN** backend sidecar starts
- **THEN** it SHALL read database type from `config.json` backend.database.type section
- **AND** read SQLite path from `config.json` backend.database.sqlitePath section (if SQLite mode)
- **AND** read database credentials from `config.json` backend.database section (if MySQL mode)
- **AND** read API keys from `config.json` backend.externalApis section
- **AND** read auth settings from `config.json` backend.auth section
#### Scenario: Configuration priority
- **WHEN** both environment variable and config.json value exist
- **THEN** environment variable SHALL take precedence
#### Scenario: Default values
- **WHEN** configuration value is not specified
- **THEN** system SHALL use sensible defaults (host: 127.0.0.1, port: 8000, database.type: mysql)