# 工作日志 — 2026-05-19

---

## 今天完成的工作

### 🖥️ 服务器部署（8核32G 蜂驰云 120.53.227.155）

**基础环境：**
- 数据盘挂载 /data，9 个子目录
- Docker 29.1.3（镜像源：tencentyun + daocloud）
- Node.js 22.22.2 / pnpm 11.1.3 / Python 3.11.15 / Git
- deploy 用户创建

**核心服务（Docker 自启）：**
- MySQL 8.0.46 → 127.0.0.1:3306（innodb_buffer_pool_size=8G）
- Redis 7 → 127.0.0.1:6379（noeviction）
- Qdrant → 127.0.0.1:6333（zhixi_chunks, 1024d Cosine）

**后端部署：**
- NestJS 部署到 /opt/zhixi/backend，systemd 自启
- Nginx + Let's Encrypt → `https://api.longde.cloud`
- DNS 从 4核4G 切换到 8核32G
- Gitea Runner 安装注册（systemd 自启）

### 🗄️ 数据库

- 33 张表全部就位（3 个 migration 执行完成）
- ID 类型已是 String(cuid)，无需迁移
- 新增：KnowledgeSource / KnowledgeChunk / ImportCandidate / BackupJob / MembershipPlan

### 🔧 后端开发

**新增 NestJS 模块：**
- `src/modules/knowledge-source/` — 资料来源 CRUD + 自动生成 DocumentImport
- `src/modules/import-candidate/` — 候选知识点管理 + 接受时自动生成 KnowledgeItem
- `src/modules/rag/` — 内部 RAG API（7 个端点，@Public 绕过 JWT）

**增强模块：**
- DocumentImport — 支持 claim/heartbeat/stale recovery
- UploadedFile — sha256 去重

### 🐍 Python RAG Worker

`rag-worker/` 目录（10 个文件）：
- `main.py` — 主循环（轮询→认领→执行→心跳）
- `parser.py` — 文档解析（PDF/DOCX/TXT/MD/CSV/XLSX + OCR）
- `chunker.py` — 512 token + 64 overlap + 中文分句保护
- `embedder.py` — bge-m3 via 硅基流动（batch 50）
- `indexer.py` — Qdrant upsert + 检索 + 软删除
- `candidate_generator.py` — DeepSeek 生成候选知识点
- `pipelines/import_pipeline.py` — 完整导入流程编排
- `api_client.py` — 与 NestJS 内部 API 通信
- `config.py` / `requirements.txt`

### 🔑 AI Provider

- DeepSeek 官方 Key ✅
- 硅基流动 Key ✅（bge-m3 / bge-reranker-v2-m3 / Qwen3-VL-32B-Instruct / Qwen3-VL-32B-Thinking）
- 百度 OCR ⏳ 待开通

### 📄 文档更新

- 知识库设计.MD — 完善版（25 节，32 项决策）
- 服务器与数据库部署方案.MD — 完整版（13 节）
- 执行计划与任务清单.MD — 更新进度标记
- 凭据配置/蜂驰云服务器凭据.md — 填入实际密钥
- 凭据配置/轻量云服务器凭据.md — 更新角色 + HTTPS 状态

---

## 服务器连接信息

| 服务器 | IP | SSH |
|--------|-----|-----|
| 4核4G 轻量云 | 81.70.187.179 | `ssh -i WangDL.pem ubuntu@81.70.187.179` |
| 8核32G 蜂驰云 | 120.53.227.155 | `ssh -i zhixi.pem ubuntu@120.53.227.155` |

SSH 密钥位置：`startup-plan/凭据配置/WangDL.pem` 和 `zhixi.pem`

---

## 8核32G 上运行的服务

| 服务 | 管理方式 | 命令 |
|------|---------|------|
| NestJS API | systemd | `sudo systemctl restart zhixi-api` |
| Gitea Runner | systemd | `sudo systemctl restart gitea-runner` |
| MySQL | Docker | `docker restart mysql` |
| Redis | Docker | `docker restart redis` |
| Qdrant | Docker | `docker restart qdrant` |
| Nginx | systemd | `sudo systemctl restart nginx` |

**日志位置：**
- NestJS: `/data/logs/nestjs.log` / `nestjs-error.log`
- Nginx: `/var/log/nginx/`
- Docker: `docker logs <container>`

**代码位置：**
- `/opt/zhixi/backend/` — NestJS（git 仓库）
- `/opt/zhixi/rag-worker/` — Python Worker（待部署）
- `/opt/zhixi/env/.env.production` — 环境变量
- `/opt/zhixi/runner/` — Gitea Runner

---

## 明天继续

1. **Python Worker 部署到 8核32G**（最高优先）
   ```bash
   ssh -i zhixi.pem ubuntu@120.53.227.155
   cd /opt/zhixi/backend
   git pull
   cd rag-worker
   pip3.11 install -r requirements.txt
   # 创建 systemd service 启动 main.py
   ```

2. **COS Bucket 创建**（腾讯云控制台）
3. **百度 OCR 开通**
4. **4核4G 安装 gitea-runner-web**
5. **编写 CI/CD workflow 文件**

---

## 5月20日继续工作的准备

**换电脑后需要：**
1. 将 `startup-plan/凭据配置/` 目录下的 `zhixi.pem` 和 `WangDL.pem` 复制到新电脑
2. 将 `api-server/` 仓库 clone 到新电脑（或直接通过 VS Code Remote SSH 在服务器上开发）
3. 所有设计文档在 `startup-plan/技术设计/` 下，已推送到 Gitea
4. Gitea 地址：`https://git.longde.cloud`，账号 wangdl

**关键凭据文件（已在 .gitignore，不会推送）：**
- `凭据配置/蜂驰云服务器凭据.md` — 所有 8核32G 密码/密钥
- `凭据配置/轻量云服务器凭据.md` — 4核4G + Gitea 账号
- `凭据配置/zhixi.pem` / `WangDL.pem` — SSH 密钥
