feat(feishu): 添加飞书入站事件inbox和混合数据库协调功能 - 实现飞书入站事件持久化inbox机制,支持状态管理、租约锁定和重试退避 - 添加混合数据库基线协调工具,确保平台PostgreSQL结构安全对齐 - 增加运行组件心跳检测和readiness就绪检查机制 - 实现app_ticket事件的安全轮换和验证处理 - 添加生产环境运行编排和fail-closed安全机制 - 支持webhook快速确认和长连接独立进程处理 - 完善个人数据擦除时的待处理事件清理功能 ```
27 lines
1018 B
Python
27 lines
1018 B
Python
from pathlib import Path
|
|
|
|
from alembic.config import Config
|
|
from alembic.script import ScriptDirectory
|
|
from sqlalchemy import inspect, text
|
|
from sqlalchemy.engine import Connection
|
|
|
|
|
|
def expected_alembic_heads(project_root: Path | None = None) -> tuple[str, ...]:
|
|
"""Return the repository's configured Alembic heads."""
|
|
|
|
root = project_root or Path(__file__).resolve().parents[3]
|
|
config = Config(str(root / "alembic.ini"))
|
|
config.set_main_option("script_location", str(root / "alembic"))
|
|
return tuple(sorted(ScriptDirectory.from_config(config).get_heads()))
|
|
|
|
|
|
def current_alembic_revisions(connection: Connection) -> tuple[str, ...] | None:
|
|
"""Return database revisions, or ``None`` when it was never versioned."""
|
|
|
|
if "alembic_version" not in inspect(connection).get_table_names():
|
|
return None
|
|
revisions = connection.execute(
|
|
text("SELECT version_num FROM alembic_version ORDER BY version_num")
|
|
).scalars()
|
|
return tuple(str(revision) for revision in revisions)
|