INSERT INTO ias_upgrade_logs (
    version,
    released_at,
    title,
    description,
    changes,
    modules
) VALUES (
    '0.2.27',
    '2026-07-08T00:00:00+08:00',
    '抽离数据库基础设施模块',
    '新增 ias-db 模块集中负责数据库连接和 SQLx 迁移执行，并将原 ias-service/migrations 整体迁移到 ias-db/migrations。同时新增操作日志查询接口与前端页面，邮件远程已读同步，以及多处改进。',
    '[
        "新增 ias-db crate，集中负责 PostgreSQL 连接池创建、DATABASE_URL 读取和 SQLx 迁移执行。",
        "将原 ias-service/migrations 整体迁移到 ias-db/migrations，迁移嵌入和变更监听由 ias-db/build.rs 负责。",
        "ias-main 改为直接调用 ias_db::connect_db()，ias-service 只接收已建立的 PgPool 并运行服务，数据库生命周期边界更清晰。",
        "新增操作日志 HTTP 查询接口 GET /v1/logs 和 GET /v1/logs/{id}，支持按级别、模块和关键词筛选，API 文档新增 logs 功能分组。",
        "新增操作日志 Web 前端页面，支持按级别、模块和关键词筛选查看日志，便于排障和审计。",
        "消息队列关键节点增加操作日志写入：LLM 响应、渠道消息接收、上下文记录错误、消息发送失败等场景自动记录到 ias_operation_logs。",
        "ias-mail 新增 mark_remote_message_seen 函数，通过 IMAP 设置邮件已读并验证服务器确认，抽取 connect_imap_session 复用连接逻辑。",
        "工作流配置加载改为文件级容错：ias-ai 新增 load_configs_with_warnings，返回 LoadedFlowConfigs 包含 warnings 信息，单个 YAML 配置损坏时不会导致所有 HTTP 能力为空。",
        "ias-context 工具调用说明中的能力引用路径从已废弃的 record_tool_call_instruction 更新为 query_api_docs + call_http_api，并新增单元测试验证。",
        "新增高德地图地理编码/逆地理编码 HTTP 能力配置文件 tools/amap_geocode.yaml。",
        "数据库无结构变化；已验证 cargo fmt --check 和 cargo check。"
    ]'::jsonb,
    '{
        "ias-common": "0.1.2",
        "ias-ai": "0.1.14",
        "ias-wechat": "0.1.1",
        "ias-context": "0.1.6",
        "ias-http": "0.1.15",
        "ias-mail": "0.1.16",
        "ias-db": "0.1.0",
        "ias-service": "0.1.25",
        "ias-main": "0.2.27"
    }'::jsonb
) ON CONFLICT (version) DO UPDATE SET
    released_at = EXCLUDED.released_at,
    title = EXCLUDED.title,
    description = EXCLUDED.description,
    changes = EXCLUDED.changes,
    modules = EXCLUDED.modules;
