数据库契约
TradingCopilot 根据 GORM 持久化模型初始化当前逻辑 schema。生产目标是 PostgreSQL/TimescaleDB,SQLite 主要用于本地开发和测试。
数据边界
主要表
| 领域 | 表 |
|---|---|
| 认证和设置 | admin_users, secrets, app_settings |
| AI | ai_providers, ai_provider_models, agent_roles, prompt_templates |
| 研究团队 | research_teams, research_team_roles |
| 行情 | market_symbols, daily_bars, realtime_quotes, watchlist_items |
| 消息 | message_subscriptions, message_subscription_research_teams, message_subscription_filters, ingested_messages, platform_adapters |
| Telegram 兼容 | telegram_channels, telegram_messages |
| 会议 | meetings, meeting_events, meeting_references, tool_call_logs |
| 唤醒计划 | wake_plans |
| 模拟交易 | risk_configs, paper_accounts, paper_orders, paper_positions, paper_fills, paper_equity_snapshots |
关键关系
| 关系 | 说明 |
|---|---|
| 研究团队 → 团队角色 | 会议运行器按团队加载角色 |
| 研究团队 → 自选列表 | 自选列表按团队隔离 |
| 消息订阅 → 研究团队 | 一个订阅可绑定多个团队 |
| 消息订阅 → 过滤器 | 每个订阅绑定一个可复用过滤器 |
| 摄取消息 → 会议 | meeting 决策可为 message/team 创建会议 |
| 研究团队 → 模拟账户 | 一个账户最多绑定一个团队 |
| 模拟账户 → 风险配置 | 未绑定风险配置时订单执行会拒绝 |
存储说明
- 密钥保存在
secrets.encrypted_value,以加密形式存储。 - 灵活载荷使用 JSON 列,包括角色能力、应用设置、行情、会议载荷和唤醒触发配置。
- 消息相关表名与提供方无关,即使运行时来源是 Telegram 或 RSS/Atom。
ingested_messages.source_message_id是与提供方无关的字符串。message_subscriptions保存轮询状态,例如上次采集时间、下次采集时间和上次采集错误。
重要枚举
| 类型 | 值 |
|---|---|
| 会议状态 | queued, running, completed, failed, cancelled |
| 会议事件 | system, role_message, tool_call, tool_result, conclusion, error |
| 消息过滤决策 | ignore, observe, meeting |
| 唤醒触发类型 | time, indicator, event |
| 唤醒计划状态 | active, paused, fired, cancelled |
| 订单方向 | buy, sell |
| 订单状态 | suggested, pending, filled, rejected, cancelled, expired |
运维注意
- 生产数据库必须纳入备份。
- 升级前先备份数据库和
env/app.env。 - 不要直接在生产数据库手工修改密钥、订单、会议或消息状态。
- 如果必须执行修复 SQL,应先在备份或测试环境复现。
变更检查清单
数据库契约变更时同步:
- GORM 模型。
- 迁移逻辑。
- schema 初始化测试。
- API 和前端展示。
- 本文档。