Files
InsightReply/docs/ARCHITECTURE.md
zs 8cf6cb944b
Some checks failed
Extension Build & Release / build (push) Failing after 1m5s
Backend Deploy (Go + Docker) / deploy (push) Failing after 1m40s
Web Console Deploy (Vue 3 + Vite) / deploy (push) Has been cancelled
feat: 部署初版测试
2026-03-02 21:25:21 +08:00

10 KiB
Raw Permalink Blame History

InsightReply 系统架构 (Architecture Overview)

本文档描述 InsightReply 的整体技术架构、各组件职责与数据流。


一、架构全景图

┌─────────────────────────────────────────────────────────────────┐
│                      用户浏览器 (Chrome / Edge)                   │
│  ┌─────────────────────────────────────────────────────────┐    │
│  │              X (Twitter) 页面                            │    │
│  │  ┌──────────────┐    ┌──────────────────────────────┐   │    │
│  │  │ Content       │    │ InsightReply Sidebar         │   │    │
│  │  │ Script        │───▶│ (Shadow DOM 隔离)            │   │    │
│  │  │ - DOM 感知     │    │ - 策略选择                    │   │    │
│  │  │ - 按钮注入     │    │ - 评论展示                    │   │    │
│  │  │ - 数据提取     │    │ - 一键复制                    │   │    │
│  │  └──────────────┘    └──────────┬───────────────────┘   │    │
│  └───────────────────────────────────┼─────────────────────┘    │
│                                      │ chrome.runtime           │
│  ┌───────────────────────────────────┼─────────────────────┐    │
│  │          Background Service Worker                       │    │
│  │          - 消息中转                                       │    │
│  │          - JWT Token 管理                                │    │
│  │          - API 请求代理                                   │    │
│  └───────────────────────────────────┼─────────────────────┘    │
└──────────────────────────────────────┼──────────────────────────┘
                                       │ HTTPS
                                       ▼
┌──────────────────────────────────────────────────────────────────┐
│                    Nginx / Caddy (TLS 终结)                       │
└──────────────────────────────────────┬───────────────────────────┘
                                       │
                                       ▼
┌──────────────────────────────────────────────────────────────────┐
│                   Go 后端服务 (Docker Container)                  │
│                                                                  │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────────┐    │
│  │ Handler  │─▶│ Service  │─▶│Repository│─▶│ PostgreSQL   │    │
│  │ (HTTP)   │  │ (BizLogic│  │ (GORM)   │  │ (Tailscale)  │    │
│  └──────────┘  └────┬─────┘  └──────────┘  └──────────────┘    │
│                     │                                            │
│                     ▼                                            │
│            ┌──────────────┐                                      │
│            │ LLM Gateway  │──▶ OpenAI / Claude / DeepSeek       │
│            │ (Timeout +   │                                      │
│            │  Breaker +   │                                      │
│            │  Retry)      │                                      │
│            └──────────────┘                                      │
│                                                                  │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │ Radar Scheduler (定时任务)                                │   │
│  │ - Asynq (Redis Queue)                                    │   │
│  │ - Nitter Scraper                                         │   │
│  │ - 热度计算引擎                                            │   │
│  └──────────────────────────────────────────────────────────┘   │
└──────────────────────────────────────────────────────────────────┘

二、分层架构 (Clean Architecture)

cmd/server/main.go          ← 入口:配置加载、依赖注入、路由注册
│
├── internal/handler/       ← 表现层HTTP 请求解析 → 调用 Service → 返回 JSON
│   ├── ai_handler.go
│   ├── user_handler.go
│   └── common.go           ← 统一 Response 工具函数
│
├── internal/service/       ← 业务层核心逻辑LLM 调用、热度计算、权限校验)
│   ├── ai_service.go
│   └── user_service.go
│
├── internal/repository/    ← 数据层:封装所有 SQL / GORM 操作
│   └── user_repository.go
│
├── internal/model/         ← 数据模型Go struct 定义
│   └── user.go
│
├── config/                 ← 配置读取(环境变量 → 结构体)
├── pkg/                    ← 跨模块共享工具包
└── prompts/                ← Prompt 模板文件 (规划中)

调用链规则Handler → Service → Repository,严禁跨层调用。


三、数据流

3.1 核心链路:用户生成评论

sequenceDiagram
    participant U as 用户 (X 页面)
    participant CS as Content Script
    participant BG as Background SW
    participant API as Go 后端
    participant LLM as OpenAI

    U->>CS: 点击 Insight 按钮
    CS->>CS: 提取推文 DOM 数据
    CS->>BG: chrome.runtime.sendMessage
    BG->>API: POST /ai/generate (带 JWT)
    API->>API: 验证 Token + Rate Limit
    API->>LLM: ChatCompletion (含 Prompt)
    LLM-->>API: 生成结果
    API-->>BG: JSON 响应 (10 条候选)
    BG-->>CS: sendResponse
    CS->>U: Sidebar 展示评论
    U->>U: 选择 → 一键复制 → 粘贴发布

3.2 雷达链路:后台监控推文 (规划中)

sequenceDiagram
    participant SCH as Scheduler
    participant Q as Asynq (Redis)
    participant SC as Scraper Worker
    participant NIT as Nitter 实例
    participant DB as PostgreSQL

    SCH->>Q: 定时投放抓取任务
    Q->>SC: 消费任务
    SC->>SC: Jitter 延迟 (1-5s)
    SC->>NIT: HTTP GET (指纹轮换)
    alt 正常响应
        NIT-->>SC: HTML
        SC->>SC: goquery 解析
        SC->>DB: Batch UPSERT tweets
        SC->>DB: 计算 heat_score
    else 429/503
        SC->>SC: 触发 Circuit Breaker
        SC->>Q: 指数退避后重新入队
    end

四、部署架构

                    Internet
                       │
              ┌────────┴────────┐
              │  Nginx / Caddy  │ ← TLS + 反代 → :8080
              └────────┬────────┘
                       │
    ┌──────────────────┼──────────────────┐
    │          Oracle ARM VPS              │
    │          144.24.60.0                 │
    │                                      │
    │  ┌────────────────────────────┐      │
    │  │ Docker                     │      │
    │  │  ├── insight-reply-server  │      │
    │  │  └── (未来: redis)         │      │
    │  └────────────────────────────┘      │
    │                                      │
    └──────────────────┼──────────────────┘
                       │ Tailscale VPN
                       ▼
              ┌────────────────┐
              │  PostgreSQL    │
              │  100.64.0.5    │
              └────────────────┘

五、技术栈一览

层级 技术 版本
前端插件 Vue 3 + Composition API 3.5
样式 Tailwind CSS v4
打包 Vite + CRXJS 7.x
后端 Go (chi router) 1.24
ORM GORM + pgx 1.31
数据库 PostgreSQL 15+
LLM OpenAI (go-openai) GPT-4o Mini
任务队列 (规划) Asynq (Redis) -
容器 Docker + Docker Compose 24.x
CI/CD Gitea Actions -
VPN Tailscale -