feat(bot): модель данных, миграции Alembic, FSM в БД, TTL-чистка
- app/db/models.py: 13 таблиц (ARCHITECTURE §2.10); перечисления — VARCHAR + CHECK, JSON → JSONB на Postgres, BIGINT/INTEGER-ключи для SQLite - миграция 0001 (автогенерация + ручная чистка: импорт sa.Text, дубли CHECK) - миграции применяются при старте бота программно (app.db.migrate), script_location из пакета - SqlStorage: FSM aiogram поверх fsm_state — состояние переживает рестарт (перенесено из #4) - cleanup_loop: истёкшие черновики, снимки контейнеров и попытки входа старше суток - тесты: upgrade/downgrade, дрейф моделей и миграций, CHECK, CASCADE, FSM, чистка Refs #5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -42,6 +42,13 @@ class LLMSettings(BaseSettings):
|
||||
temperature: float = Field(default=0.0, ge=0, le=2)
|
||||
|
||||
|
||||
class DatabaseSettings(BaseSettings):
|
||||
model_config = SettingsConfigDict(**_ENV, env_prefix="DATABASE_")
|
||||
|
||||
# Compose sets a PostgreSQL URL; the default lets the bot run locally without Docker.
|
||||
url: str = "sqlite+aiosqlite:///./tgit.db"
|
||||
|
||||
|
||||
class RuntimeSettings(BaseSettings):
|
||||
model_config = _ENV
|
||||
|
||||
@@ -59,5 +66,6 @@ class Settings(BaseSettings):
|
||||
|
||||
telegram: TelegramSettings = Field(default_factory=TelegramSettings)
|
||||
access: AccessSettings = Field(default_factory=AccessSettings)
|
||||
database: DatabaseSettings = Field(default_factory=DatabaseSettings)
|
||||
llm: LLMSettings = Field(default_factory=LLMSettings)
|
||||
runtime: RuntimeSettings = Field(default_factory=RuntimeSettings)
|
||||
|
||||
Reference in New Issue
Block a user