feat: 0.2.27 - 抽离数据库基础设施模块

- 新增 ias-db crate,集中管理 PostgreSQL 连接池和 SQLx 迁移
- 迁移 ias-service/migrations 到 ias-db/migrations
- ias-main 改用 ias_db::connect_db(),ias-service 只接 PgPool
- 新增操作日志 HTTP 查询接口 (GET /v1/logs, GET /v1/logs/{id})
- 新增操作日志 Web 前端页面,支持按级别/模块/关键词筛选
- 消息队列关键节点增加操作日志写入
- ias-mail 新增 mark_remote_message_seen,IMAP 已读同步
- 工作流配置加载改为文件级容错 (load_configs_with_warnings)
- ias-context 工具调用说明更新为 query_api_docs + call_http_api
- 新增高德地图地理编码 HTTP 能力配置

模块版本: ias-db 0.1.0, ias-ai 0.1.14, ias-context 0.1.6, ias-http 0.1.15, ias-mail 0.1.16, ias-service 0.1.25, ias-main 0.2.27
This commit is contained in:
2026-07-08 17:44:21 +08:00
parent 7d5140c8d2
commit 7deae286ca
83 changed files with 1440 additions and 107 deletions
@@ -0,0 +1,66 @@
CREATE TABLE ias_long_term_memories (
id BIGSERIAL PRIMARY KEY,
scope_key VARCHAR(768) NOT NULL,
channel VARCHAR(64) NOT NULL,
account_id VARCHAR(255) NOT NULL,
from_user_id VARCHAR(255) NOT NULL,
context_label TEXT,
content TEXT NOT NULL,
metadata TEXT NOT NULL DEFAULT '{}',
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
deleted_at TIMESTAMP
);
CREATE INDEX idx_ias_long_term_memories_scope_updated
ON ias_long_term_memories(scope_key, updated_at DESC)
WHERE deleted_at IS NULL;
CREATE TABLE ias_context_sessions (
id BIGSERIAL PRIMARY KEY,
scope_key VARCHAR(768) NOT NULL,
channel VARCHAR(64) NOT NULL,
account_id VARCHAR(255) NOT NULL,
from_user_id VARCHAR(255) NOT NULL,
context_label TEXT,
started_at TIMESTAMP NOT NULL DEFAULT NOW(),
last_message_at TIMESTAMP NOT NULL DEFAULT NOW(),
ended_at TIMESTAMP,
end_reason VARCHAR(64),
summary TEXT
);
CREATE INDEX idx_ias_context_sessions_active
ON ias_context_sessions(scope_key, started_at DESC)
WHERE ended_at IS NULL;
CREATE INDEX idx_ias_context_sessions_ended
ON ias_context_sessions(scope_key, ended_at DESC)
WHERE ended_at IS NOT NULL;
CREATE TABLE ias_context_messages (
id BIGSERIAL PRIMARY KEY,
session_id BIGINT NOT NULL REFERENCES ias_context_sessions(id) ON DELETE CASCADE,
role VARCHAR(32) NOT NULL,
content TEXT NOT NULL,
tool_call_id VARCHAR(255),
tool_calls TEXT,
created_at TIMESTAMP NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_ias_context_messages_session
ON ias_context_messages(session_id, id);
CREATE TABLE ias_context_summaries (
id BIGSERIAL PRIMARY KEY,
scope_key VARCHAR(768) NOT NULL,
summary_type VARCHAR(32) NOT NULL,
source_session_id BIGINT REFERENCES ias_context_sessions(id) ON DELETE SET NULL,
content TEXT NOT NULL,
started_at TIMESTAMP,
ended_at TIMESTAMP,
created_at TIMESTAMP NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_ias_context_summaries_latest
ON ias_context_summaries(scope_key, summary_type, created_at DESC);