# InsightReply 🚀

InsightReply 是一款专为独立开发者与数字游民设计的 **AI 驱动 X (Twitter) 自动化营销套件**。
它通过高可用爬虫监控社媒热点，利用大语言模型（如 Gemini、OpenAI）提取互动风格，并自动在浏览器拓展层或管理后台生成极具转化率的爆款回复。

---

## 🗂️ 核心架构

InsightReply 采用现代化解耦的三端架构：

1. **`/server` (后端主脑)**
   - 核心语言：Golang 1.22 + GORM + Chi Router
   - 数据库：PostgreSQL 14+
   - 功能模块：Nitter 高可用爬虫引擎、多模态 AI 接入层、策略派发与遥测统计引擎。
2. **`/web` (SaaS 管理控制台)**
   - 核心选型：Vue 3 + Vite + Tailwind **Apple Pro Max 玻璃态美学**
   - 功能模块：数据指标大盘、策略雷达、生成表现记录。
3. **`/extension` (Chrome 浏览器助手)**
   - 核心选型：CRXJS + Vue 3 + **macOS Settings 交互规范**
   - 功能模块：
     - **Spatial Sidebar**: 侵入 X 原生界面，全玻璃态侧边栏一键触发 AI 分析。
     - **Pro Dashboard**: 类似 macOS 系统设置的后台管理，极简高效。
     - **Magic Toggle**: `Cmd + Shift + I` 全局快捷键秒开侧边栏。

---

## 🛠️ 本地开发指南 (Local Development)

### 1. 启动 PostgreSQL 数据库
> **注意**：本项目已禁用 Go 服务自动迁移。请使用本项目支持的 MCP 服务 (`InsightReply_PostgreSQL`) 或手动执行 `docs/schema.sql` 来同步数据库结构。

### 2. 配置与启动后端 (Go Server)
```bash
cd server

# 复制环境变量模板并填入真实的 Key (特别是数据库与大模型 Key)
cp .env.example .env

# 获取依赖并运行
go mod tidy
go run cmd/server/main.go
# 默认后端将运行在 http://localhost:8080
```

### 3. 配置与启动 Web 后台控制台 (Vue)
```bash
cd web
npm install

# 确保 web/.env 中的 VITE_API_BASE_URL=http://localhost:8080/api/v1
# (本地环境直连，已配置完成)
npm run dev
# 访问 http://localhost:5173
```

### 4. 配置与编译 Chrome 扩展 (Extension)
```bash
cd extension
npm install

# 确保 extension/.env 中的 VITE_API_BASE_URL=http://localhost:8080/api/v1 
npm run dev
```
打开 Chrome -> `chrome://extensions/` -> 开启「开发者模式」 -> 点击「加载已解压的扩展程序」 -> 选择 `extension/dist` 目录进入调试。

---

## 🚀 生产部署指南 (Production Deployment)

本系统采用原生 **Docker Compose 后端 + 本地 Caddy 高性能网关反代 + 自动化 Gitea Actions CI/CD**。

### 0. 准备与环境变量隔离
1. **对于 `/web`**：生产环境已自动配置为相对路径：`VITE_API_BASE_URL=/api/v1`。无需变动。
2. **对于 `/extension`**：修改 `extension/.env.production`，写入**你服务器真实的 Caddy HTTPS 域名绝对路径**：
```env
# extension/.env.production
VITE_API_BASE_URL=https://insight.buildapp.eu.org/api/v1
```

### 1. 服务器环境准备
服务器需提前安装 `docker`, `docker-compose`, 与 `caddy`。

### 2. 部署后端 Docker (包含日志持久化映射)
在服务器的 `/var/admin/InsightReply/server` 目录下放置你真实的 `.env` 配置文件。随后执行启动指令，后端将在 Docker 隔离网内暴露出 `8009` 端口供本地宿主机 Caddy 本地调用。

```bash
cd /var/admin/InsightReply/server
# 生产环境使用 docker compose (V2)
docker compose up -d --build --remove-orphans
```
> 此时应用将以 `network_mode: host` 模式运行，全局运行日志将自动映射并写入宿主机的 `/app/logs/InsightReply.log` 内以供探查。

### 3. Caddyfile 反向代理与 SSL 自动签发
在宿主机中编辑 `/etc/caddy/Caddyfile`，配置以下动静分离策略：

```caddyfile
# 将此处替换为您的真实商用域名
insight.buildapp.eu.org {
    
    # [后端路由] 代理所有 API 请求到 Go Docker 的透传端口
    handle /api/* {
        reverse_proxy insight.buildapp.eu.org
    }

    # [前端路由] 静态托管来自 CI/CD 发行的 Vue 3 制品，并支持 SPA 默认寻址
    handle {
        root * /var/admin/InsightReply/web
        try_files {path} {path}/ /index.html
        file_server
    }
}
```
配置完成后使用 `caddy reload` 重载规则并等待几十秒完成 Let's Encrypt 等机构的安全加密证书签发。

### 4. 配置自动化 CI/CD
所有的部署流水线配置均存放在 `.gitea/workflows` 目录下，支持推送 `main` 分支时利用 Rsync 执行秒级增量部署及无缝重启。
