feat: chat language display, disabled EntitySelect items, dev scripts
Chat language: - Added language_code field to TelegramChat model + migration - Saved from message.from.language_code on webhook/polling - Displayed as badge on bot chat cards and target receiver items - Resolved from DB in target API response (works for existing receivers) - Shown in chat picker dropdown (desc includes language) EntitySelect improvements: - Tracker-target link selector shows all targets, already-linked ones appear disabled with "Already linked" hint - Receiver chat picker shows already-added chats as disabled Dev scripts: - scripts/restart-backend.sh and restart-frontend.sh - Updated .claude/docs/dev-servers.md to reference scripts
This commit is contained in:
@@ -173,6 +173,14 @@ async def migrate_schema(engine: AsyncEngine) -> None:
|
||||
)
|
||||
logger.info("Added shared column to %s table", state_table)
|
||||
|
||||
# Add language_code to telegram_chat if missing
|
||||
if await _has_table(conn, "telegram_chat"):
|
||||
if not await _has_column(conn, "telegram_chat", "language_code"):
|
||||
await conn.execute(
|
||||
text("ALTER TABLE telegram_chat ADD COLUMN language_code TEXT DEFAULT ''")
|
||||
)
|
||||
logger.info("Added language_code column to telegram_chat table")
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Legacy tracker_target migration (pre-Phase 1)
|
||||
|
||||
@@ -95,6 +95,7 @@ class TelegramChat(SQLModel, table=True):
|
||||
title: str = Field(default="")
|
||||
chat_type: str = Field(default="private")
|
||||
username: str = Field(default="")
|
||||
language_code: str = Field(default="")
|
||||
discovered_at: datetime = Field(default_factory=_utcnow)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user