chore(openspec): archive completed changes and sync main specs

- archive local-fs-storage-backend, sqlite-metadata-backend,
  storage-orphan-reconciliation, metadata-managed-jwt-secret, default-local-backends
- sync specs: storage-backends, metadata-backends, storage-reconciliation,
  app-secrets; update photos/share-links
- defaults reflected in specs: SQLite and local FS
This commit is contained in:
iu
2026-10-11 10:19:44 +03:00
parent cb272398ce
commit 8638d1bbfc
33 changed files with 392 additions and 13 deletions
@@ -0,0 +1,30 @@
# Proposal
## Why
Слои данных были по умолчанию внешними (`postgres` и `s3`), поэтому самодостаточный
локальный запуск без внешних сервисов требовал явной настройки. Нужно сделать локальные
бэкенды значением по умолчанию.
## What Changes
- Сменить значения по умолчанию: `DB_BACKEND=sqlite` (`SQLITE_PATH=./galo.db`) и
`STORAGE_BACKEND=fs` (`FS_ROOT=./data`).
- Обновить `.env.example`, `project.md`, `README.md`.
- Поведение при явном выборе `postgres`/`s3` не меняется.
## Capabilities
### New Capabilities
<!-- нет -->
### Modified Capabilities
- `metadata-backends`: значением по умолчанию становится встроенная SQLite (ранее PostgreSQL).
- `storage-backends`: значением по умолчанию становится локальная ФС (ранее S3-совместимая).
## Impact
- `backend/internal/config` (значения по умолчанию) и тесты.
- `.env.example`, `project.md`, `README.md`.
- **BREAKING (поведение):** развёртывания без явных `DB_BACKEND`/`STORAGE_BACKEND`
переключатся на локальные бэкенды; для прежнего режима задайте `postgres`/`s3` явно.
@@ -0,0 +1,23 @@
# Spec Delta
## MODIFIED Requirements
### Requirement: Выбор бэкенда метаданных
Система SHALL поддерживать выбор бэкенда слоя метаданных параметром конфигурации,
при этом встроенная SQLite SHALL быть значением по умолчанию.
#### Scenario: Выбор по умолчанию
- **WHEN** бэкенд метаданных не задан в конфигурации
- **THEN** система использует встроенную SQLite с путём по умолчанию
#### Scenario: Выбор PostgreSQL
- **WHEN** в конфигурации задан бэкенд PostgreSQL
- **THEN** метаданные читаются и пишутся во внешнюю PostgreSQL
#### Scenario: Выбор встроенной SQLite
- **WHEN** в конфигурации задан бэкенд SQLite
- **THEN** метаданные читаются и пишутся в локальный файл SQLite без внешней службы
#### Scenario: Неполная конфигурация
- **WHEN** конфигурация выбранного бэкенда неполна
- **THEN** система отказывается стартовать с явной ошибкой конфигурации
@@ -0,0 +1,23 @@
# Spec Delta
## MODIFIED Requirements
### Requirement: Выбор бэкенда хранилища
Система SHALL поддерживать выбор бэкенда объектного хранилища параметром конфигурации,
при этом локальная файловая система SHALL быть значением по умолчанию.
#### Scenario: Выбор по умолчанию
- **WHEN** бэкенд хранилища не задан в конфигурации
- **THEN** система хранит и отдаёт блобы из локальной файловой системы с корнем по умолчанию
#### Scenario: Выбор S3-совместимого бэкенда
- **WHEN** в конфигурации задан S3-совместимый бэкенд
- **THEN** система хранит и отдаёт блобы через S3-совместимое хранилище
#### Scenario: Выбор локальной ФС
- **WHEN** в конфигурации задан бэкенд локальной ФС
- **THEN** система хранит и отдаёт блобы из каталога локальной файловой системы
#### Scenario: Неполная конфигурация
- **WHEN** конфигурация выбранного бэкенда неполна
- **THEN** система отказывается стартовать с явной ошибкой конфигурации
@@ -0,0 +1,6 @@
# Tasks
## 1. Дефолты и документация
- [x] 1.1 Сменить значения по умолчанию в `config` (`DB_BACKEND=sqlite`, `SQLITE_PATH=./galo.db`, `STORAGE_BACKEND=fs`, `FS_ROOT=./data`) и обновить тесты конфига; проверка — `go test ./internal/config` зелёный.
- [x] 1.2 Обновить `.env.example`, `project.md`, `README.md`; проверка — запуск без переменных окружения стартует на SQLite+ФС и health показывает `db=ok, fs=ok`.
@@ -0,0 +1,2 @@
schema: spec-driven
created: 2026-10-11