refactor(core): restructure conversation, channel and message domains

- Rename chat module to conversation with flow-based architecture
- Move channelidentities into channel/identities subpackage
- Add channel/route for routing logic
- Add message service with event hub
- Add MCP providers: container, directory, schedule
- Refactor Feishu/Telegram adapters with directory and stream support
- Add platform management page and channel badges in web UI
- Update database schema for conversations, messages and channel routes
- Add @memoh/shared package for cross-package type definitions
This commit is contained in:
BBQ
2026-02-12 15:33:09 +08:00
parent 75e2ef0467
commit ca5c6a1866
243 changed files with 21463 additions and 10485 deletions
+118
View File
@@ -0,0 +1,118 @@
-- name: CreateMessage :one
INSERT INTO bot_history_messages (
bot_id,
route_id,
sender_channel_identity_id,
sender_account_user_id,
channel_type,
source_message_id,
source_reply_to_message_id,
role,
content,
metadata
)
VALUES (
sqlc.arg(bot_id),
sqlc.narg(route_id)::uuid,
sqlc.narg(sender_channel_identity_id)::uuid,
sqlc.narg(sender_user_id)::uuid,
sqlc.narg(platform)::text,
sqlc.narg(external_message_id)::text,
sqlc.narg(source_reply_to_message_id)::text,
sqlc.arg(role),
sqlc.arg(content),
sqlc.arg(metadata)
)
RETURNING
id,
bot_id,
route_id,
sender_channel_identity_id,
sender_account_user_id AS sender_user_id,
channel_type AS platform,
source_message_id AS external_message_id,
source_reply_to_message_id,
role,
content,
metadata,
created_at;
-- name: ListMessages :many
SELECT
id,
bot_id,
route_id,
sender_channel_identity_id,
sender_account_user_id AS sender_user_id,
channel_type AS platform,
source_message_id AS external_message_id,
source_reply_to_message_id,
role,
content,
metadata,
created_at
FROM bot_history_messages
WHERE bot_id = sqlc.arg(bot_id)
ORDER BY created_at ASC;
-- name: ListMessagesSince :many
SELECT
id,
bot_id,
route_id,
sender_channel_identity_id,
sender_account_user_id AS sender_user_id,
channel_type AS platform,
source_message_id AS external_message_id,
source_reply_to_message_id,
role,
content,
metadata,
created_at
FROM bot_history_messages
WHERE bot_id = sqlc.arg(bot_id)
AND created_at >= sqlc.arg(created_at)
ORDER BY created_at ASC;
-- name: ListMessagesBefore :many
SELECT
id,
bot_id,
route_id,
sender_channel_identity_id,
sender_account_user_id AS sender_user_id,
channel_type AS platform,
source_message_id AS external_message_id,
source_reply_to_message_id,
role,
content,
metadata,
created_at
FROM bot_history_messages
WHERE bot_id = sqlc.arg(bot_id)
AND created_at < sqlc.arg(created_at)
ORDER BY created_at DESC
LIMIT sqlc.arg(max_count);
-- name: ListMessagesLatest :many
SELECT
id,
bot_id,
route_id,
sender_channel_identity_id,
sender_account_user_id AS sender_user_id,
channel_type AS platform,
source_message_id AS external_message_id,
source_reply_to_message_id,
role,
content,
metadata,
created_at
FROM bot_history_messages
WHERE bot_id = sqlc.arg(bot_id)
ORDER BY created_at DESC
LIMIT sqlc.arg(max_count);
-- name: DeleteMessagesByBot :exec
DELETE FROM bot_history_messages
WHERE bot_id = sqlc.arg(bot_id);