feat: virtual company module, team projects, PWA dishes app, and startup scripts overhaul

- Add company module (3-tier org, CEO planning, parallel departments)
- Add company orchestrator, knowledge extractor, presets, scheduler
- Add company API endpoints, models, and frontend views
- Add 今天吃啥 PWA app (69 dishes, real images, offline support)
- Add team_projects output directory structure
- Add unified manage.ps1 for service lifecycle
- Add Windows startup guide v1.0
- Add TTS troubleshooting doc
- Update frontend (AgentChat UX overhaul, new views)
- Update backend (voice engine fix, multi-tenant, RBAC)
- Remove deprecated startup scripts and old docs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-07-10 22:37:56 +08:00
parent 3483c6b3be
commit f2e65a8fbb
259 changed files with 39239 additions and 3148 deletions

View File

@@ -0,0 +1,213 @@
# (红头)Windows 服务器启动与重启唯一指南1.0 版本)
> 替代旧版,后续只看这一份。
> 仓库路径:`D:\workspace\aiagent`(若你的路径不同,替换下文所有路径即可)
---
## 0. 快速参考卡片
```powershell
cd D:\workspace\aiagent
# 最常用 — 全套重启
powershell -ExecutionPolicy Bypass -File .\scripts\startup\manage.ps1 restart
# 查看服务状态
powershell -ExecutionPolicy Bypass -File .\scripts\startup\manage.ps1 status
# 只改后端代码后(保留 Redis + 前端)
powershell -ExecutionPolicy Bypass -File .\scripts\startup\restart_backend_celery.ps1
```
| 服务 | 端口 | 说明 |
|------|------|------|
| 前端 Vite | 3001 | `http://localhost:3001` |
| 后端 API | 8037/ 8041 | `http://127.0.0.1:8037/docs` |
| Redis | 6379 | `restart_backend_celery.ps1` 会自动守护 |
| Celery Worker | — | Agent 异步执行 |
| Celery Beat | — | 定时任务调度 |
---
## 1. manage.ps1 — 统一管理(推荐)
一条命令管理所有服务,替代原来散落的 start/stop/restart。
```powershell
cd D:\workspace\aiagent
powershell -ExecutionPolicy Bypass -File .\scripts\startup\manage.ps1 <动作>
```
| 动作 | 功能 |
|------|------|
| `status` | 检查所有服务状态(端口 + 健康检查) |
| `start` | 启动全部Redis → API(自动选端口) → Celery → 前端 |
| `stop` | 停止全部服务,显示端口释放情况 |
| `restart` | = stop + start**推荐用于全套重启** |
### 1.1 start 自动处理
- **端口探测**8037 被占用自动切 8041
- **Redis 守护**:不在运行则自动拉起
- **前端代理对齐**:自动设置 `AIAGENT_API_PROXY` 指向实际 API 端口
- **健康检查**:启动后等待最多 30s确认 API `/docs` 和前端端口可达
### 1.2 输出示例
```
== 启动所有服务 ==
>>> 1/5 Redis
[OK] Redis 已启动 (端口 6379)
>>> 2/5 后端 API 端口探测
[OK] 端口 8037 可用
>>> 3/5 后端 API (端口 8037)
[OK] 后端 API 已启动 (PID=12345)
>>> 4/5 Celery Worker + Beat
[OK] Celery Worker 已在新窗口启动 (PID=12346)
[OK] Celery Beat 已在新窗口启动 (PID=12347)
>>> 5/5 前端 Vite (端口 3001)
[OK] 前端 Vite 已启动 (PID=12348)
>>> 健康检查(等待服务就绪,最多 30 秒)
[OK] 所有服务就绪(耗时 12s
═══════════════════════════════════════════
启动完成
═══════════════════════════════════════════
后端文档: http://127.0.0.1:8037/docs
前端页面: http://localhost:3001
Agent对话: http://localhost:3001/agent-chat
```
---
## 2. restart_backend_celery.ps1 — 仅重启后端(保留 Redis + 前端)
适用场景:只改了 Python 代码、.env、依赖、工具实现。
```powershell
powershell -ExecutionPolicy Bypass -File .\scripts\startup\restart_backend_celery.ps1
```
**关键改进1.0 新增):**
- 重启 API + Celery 后**自动检查 Redis 是否在运行**
- Redis 不在则自动拉起(不再出现"重启后登录报 500"
- 不会主动停止 Redis 或前端
---
## 3. 手动应急启动manage.ps1 不可用时)
开 3~5 个终端:
**1) Redis**
```powershell
D:\workspace\aiagent\backend\redis\redis-server.exe --port 6379
```
**2) API**
```powershell
cd D:\workspace\aiagent\backend
.\venv\Scripts\Activate.ps1
python -m uvicorn app.main:app --host 0.0.0.0 --port 8037
```
**3) Celery Worker**
```powershell
cd D:\workspace\aiagent\backend
.\venv\Scripts\Activate.ps1
python -m celery -A app.core.celery_app worker --loglevel=info --pool=threads --concurrency=8
```
**4) 前端**
```powershell
cd D:\workspace\aiagent\frontend
$env:AIAGENT_API_PROXY='http://127.0.0.1:8037'
npx vite --port 3001 --host 0.0.0.0
```
**5) Celery Beat定时任务可选**
```powershell
cd D:\workspace\aiagent\backend
.\venv\Scripts\Activate.ps1
python -m celery -A app.core.celery_app beat --loglevel=info
```
---
## 4. 常见故障速查
### 4.1 登录报 500 / "服务器内部错误"
**根因Redis 未运行。**
`restart_backend_celery.ps1` 旧版只重启 API+Celery不检查 Redis。1.0 版已修复。
**手动修复:**
```powershell
D:\workspace\aiagent\backend\redis\redis-server.exe --port 6379
```
### 4.2 TTS 朗读声音机械不自然
**根因:** 后端 edge-tts CLI 子进程找不到,降级到浏览器机械语音。
**日志特征:**
```
ERROR | Edge TTS 失败:
POST /api/v1/voice/tts - 状态码: 502
```
**已修复:** `voice.py` 改用 Python 库直接调用,不再依赖外部 CLI PATH。
详细排查见 `docs/troubleshooting/TTS朗读声音机械不自然.md`
### 4.3 端口 8037 被僵尸进程占用
**现象:** `netstat` 显示 8037 LISTENING`tasklist` 找不到对应 PID。
**解决:**
- `manage.ps1 start` 会自动探测并切换到 8041
- 必须清理 8037重启 Windows`netsh interface ipv4 show excludedportrange protocol=tcp` 检查是否与 Hyper-V 动态端口冲突
### 4.4 Agent 执行超时 `timeout of 30000ms exceeded`
**优先检查:**
1. Redis 是否在 6379 监听:`netstat -ano | findstr :6379`
2. `.env``REDIS_URL` 是否与 Redis 实际端口一致(应为 `redis://localhost:6379/0`
3. Celery Worker 是否在运行
### 4.5 一键脚本报 PowerShell 解析错误
```powershell
Set-ExecutionPolicy -Scope Process Bypass
```
或将脚本保存为 UTF-8 with BOM 重新执行。
---
## 5. 端口说明
| 服务 | 主端口 | 备用端口 | 启动方式 |
|------|--------|----------|----------|
| 前端 Vite | 3001 | — | manage.ps1 / 手动 |
| 后端 API | 8037 | 8041 | manage.ps1 自动探测 |
| Redis | 6379 | — | manage.ps1 自动守护 |
---
## 6. 访问地址
- 前端:`http://localhost:3001`
- Agent 对话:`http://localhost:3001/agent-chat`
- 后端文档:`http://127.0.0.1:8037/docs`(若切到 8041 则改端口)
- 健康检查:`curl.exe -s -o NUL -w "%{http_code}" http://127.0.0.1:8037/docs`(返回 200 即正常)
---
## 7. 维护规则(强制)
- 所有启动/重启内容只维护本文件
- 建议用 `manage.ps1` 替代旧脚本进行全套操作
- `restart_backend_celery.ps1` 仅用于"只改后端代码"的场景
- 修改启动逻辑后,先更新本文档

View File

@@ -1,245 +0,0 @@
# (红头)Windows 服务器启动与重启唯一指南
本文是 `D:\aaa\aiagent` 在 Windows 本地开发环境下的**唯一启动/重启文档**。
后续只看这一份即可。
---
## 0. 统一结论(先看)
- 推荐端口:
- 前端:`3001`
- 后端 API`8037`(若被占用,一键启动会自动改用备用 **`8041`**
- Redis`6379`
- **一键脚本目录**:均在仓库内 `scripts\startup\`,在根目录 `D:\aaa\aiagent` 下执行时路径为 `.\scripts\startup\*.ps1`(勿写成根目录下的 `.\start_aiagent.ps1`)。
- `backend/.env` 必须与实际 Redis 端口一致:
- 推荐:`REDIS_URL=redis://localhost:6379/0`
- 任何 `.env` / 依赖 / 工具代码变更后,至少重启:
- API + Celery`scripts\startup\restart_backend_celery.ps1`
- 若出现 `timeout of 30000ms exceeded`,优先检查:
1) Redis 是否可连
2) Celery Worker 是否在跑
3) API 与 Worker 是否使用同一 `backend\venv`
---
## 1. 一键启动 / 停止 / 重启
在 PowerShell 中执行(仓库根目录):
```powershell
cd D:\aaa\aiagent
```
### 1.1 一键启动(全套)
```powershell
powershell -ExecutionPolicy Bypass -File .\scripts\startup\start_aiagent.ps1
```
默认目标:
- 前端:`http://localhost:3001`
- 后端文档:优先 `http://127.0.0.1:8037/docs`;若脚本提示已切到 **8041**,则打开 `http://127.0.0.1:8041/docs`
- Redis`127.0.0.1:6379`
一键启动会为每个进程新开 PowerShell 窗口(含 **Celery Worker****Celery Beat**)。若控制台一闪退出,请到该窗口里看报错。
### 1.2 一键停止(全套)
```powershell
powershell -ExecutionPolicy Bypass -File .\scripts\startup\stop_aiagent.ps1
```
### 1.3 仅重启后端 + Celery最常用
```powershell
powershell -ExecutionPolicy Bypass -File .\scripts\startup\restart_backend_celery.ps1
```
适用场景:改了 `.env`、Python 依赖、内置工具实现、Agent 执行逻辑。
说明:该脚本**固定**把 API 起在 **8037**。若本机 8037 被其它程序或异常状态占用,请先 `stop` 全套或释放端口后再执行。
### 1.4 仅重启前端(不动 Redis / 后端)
适用:只改了前端代码或 Vite 配置,需要刷新 dev 进程。
1. 结束占用 **3001** 的进程(任务管理器结束对应 `node`/`pnpm`,或用资源监视器按端口查 PID 后结束)。
2. 确认当前 API 端口(一般为 **8037**;若全套启动时曾提示改用 **8041**,则与之一致)。
3. 新开 PowerShell
```powershell
cd D:\aaa\aiagent\frontend
$env:AIAGENT_API_PROXY='http://127.0.0.1:8037' # 若 API 在 8041改为 ...8041
pnpm dev --port 3001
```
浏览器请优先用 **`http://localhost:3001`** 访问Vite 常只绑 `[::1]`,用 `127.0.0.1:3001` 可能连不上,属正常现象)。
---
## 2. 标准“重启服务器”流程(推荐照抄)
```powershell
cd D:\aaa\aiagent
powershell -ExecutionPolicy Bypass -File .\scripts\startup\stop_aiagent.ps1
powershell -ExecutionPolicy Bypass -File .\scripts\startup\start_aiagent.ps1
```
`start` 输出中出现 **`Port 8037 is occupied, switching to 8041`**,则本次 API 在 **8041**,下文健康检查与文档地址请改用 **8041**(前端新窗口里的 `AIAGENT_API_PROXY` 已指向该端口)。
完成后立刻验证PowerShell 中 `curl` 多为 `Invoke-WebRequest` 别名,建议用 **`curl.exe`**
```powershell
netstat -ano | findstr :6379
netstat -ano | findstr :8037
netstat -ano | findstr :8041
netstat -ano | findstr :3001
curl.exe -s -o NUL -w "%{http_code}" http://127.0.0.1:8037/health
curl.exe -s -o NUL -w "%{http_code}" http://127.0.0.1:8041/health
```
若 API 实际在 **8041**,刚启动后 **1020 秒内** `/health` 可能仍超时,属 uvicorn 拉起过程;前端 `3001` 可先就绪。
---
## 3. 本次故障复盘(学生作业管理助手超时)
### 3.1 现象
- Agent 对话区报错:`发送失败: timeout of 30000ms exceeded`
- 前端可打开,但执行一直超时。
### 3.2 根因
1. `backend/.env` 配置为:
- `REDIS_URL=redis://localhost:6380/0`
2. 实际 Redis 监听在:
- `6379`
3. 导致 Celery 任务队列链路异常(或 Worker 无法稳定消费Agent 执行超时。
### 3.3 修复
1.`backend/.env` 改为:
- `REDIS_URL=redis://localhost:6379/0`
2. 执行:
- `powershell -ExecutionPolicy Bypass -File .\scripts\startup\restart_backend_celery.ps1`
3. 验证:
- `6379/8037/3001` 监听正常
- `/health` 返回 `200`
- Celery worker 进程存在
### 3.4 预防
- 不要混用两套端口约定(`6379``6380`)。
- 每次重启后先做 1 分钟健康检查(端口 + `/health` + 1 条 Agent 测试消息)。
---
## 4. 常见问题与快速处理
### 4.1 执行策略拦截脚本
```powershell
Set-ExecutionPolicy -Scope Process Bypass
```
### 4.2 `start_aiagent.ps1` 报 PowerShell 解析错误
症状:出现 `ParserError`、字符串终止符缺失、`[OK]` 附近报错。
处理:
1. 临时手动启动(见 4.3
2. 将脚本保存为 **UTF-8建议无 BOM/ ASCII 兼容内容**,避免中文引号或异常字符
### 4.3 一键脚本不可用时的手动拉起(应急)
**5** 个终端(与一键启动对齐;若暂不需要定时任务可省略 Beat
1) Redis
```powershell
cd D:\aaa\aiagent\backend\redis
.\redis-server.exe --port 6379
```
2) API
```powershell
cd D:\aaa\aiagent\backend
.\venv\Scripts\Activate.ps1
python -m uvicorn app.main:app --host 0.0.0.0 --port 8037
```
3) Celery
```powershell
cd D:\aaa\aiagent\backend
.\venv\Scripts\Activate.ps1
python -m celery -A app.core.celery_app worker --loglevel=info --pool=threads --concurrency=8
```
4) 前端
```powershell
cd D:\aaa\aiagent\frontend
$env:AIAGENT_API_PROXY='http://127.0.0.1:8037'
pnpm dev --port 3001
```
5) Celery Beat与一键 `start_aiagent.ps1` 对齐;定时任务依赖此项)
```powershell
cd D:\aaa\aiagent\backend
.\venv\Scripts\Activate.ps1
python -m celery -A app.core.celery_app beat --loglevel=info
```
### 4.4 8037「占用」与 netstat 幽灵 PID实践经验
部分 Windows 环境会出现:
- `start_aiagent.ps1` 提示 **8037 被占用**,自动改用 **8041**
- `netstat` 仍显示 `0.0.0.0:8037 LISTENING` 且带某一 **PID**,但 **`tasklist` 查不到该 PID**(或无法 `Stop-Process`)。
此时以 **`start` 脚本打印的实际端口为准**(多为 **8041**),用 **`http://127.0.0.1:8041/docs`** 与对应 `/health` 验证即可。若必须清理 **8037**,可本机执行 `netsh interface ipv4 show excludedportrange protocol=tcp` 查看是否与 Hyper-V / 动态端口保留冲突,或重启 Windows 后再全套启动。
### 4.5 `stop` 已正常但 `start` 报「8037 与 8041 均占用」
曾出现:`stop` 对后端端口打印 **SKIP**,端口检查却仍显示 **LISTEN**,随后 `start` 抛出双端口占用。根因是旧版 `stop_aiagent.ps1`**`ForEach-Object` 内误用 `return`**(会从整个函数提前返回)以及内层 **`$pid` 变量名与 PowerShell 只读自动变量冲突**,导致未真正枚举监听 PID。
**当前仓库内 `scripts\startup\stop_aiagent.ps1` 已按上述问题修复**;若你本地脚本被回退或拷贝了旧版,请与仓库版本对齐后再执行全套重启。
---
## 5. OCR上传图片识别必查项
`backend/.env` 建议:
```ini
TESSERACT_CMD=C:/Program Files/Tesseract-OCR/tesseract.exe
TESSERACT_TESSDATA_DIR=D:/aaa/aiagent/tessdata
```
自检:
```powershell
cd D:\aaa\aiagent\backend
.\venv\Scripts\python scripts\check_ocr_env.py
```
若新增依赖后仍报 OCR 缺失,重启 Celery。
---
## 6. 访问地址
- 前端:`http://localhost:3001`(推荐用 **localhost**,避免与 `[::1]` 绑定不一致)
- 后端 API默认`http://127.0.0.1:8037`
- 后端文档(默认):`http://127.0.0.1:8037/docs`
- 健康检查(默认):`http://127.0.0.1:8037/health`
- 若一键启动提示改用 **8041**:将上述三项中的端口改为 **8041** 即可。
---
## 7. 维护规则(强制)
- 所有 Windows 启动/重启内容只维护本文件。
- 其他旧文档仅保留跳转,不再写重复步骤。
- 修改启动逻辑后,先更新本文件再通知团队。

View File

@@ -1,7 +0,0 @@
# 前后端服务器启动和停止(已合并)
本文件已停止维护。
请改看唯一文档:`(红头)Windows服务器启动与重启唯一指南.md`
路径:`D:\aaa\aiagent\(红头)Windows服务器启动与重启唯一指南.md`

View File

@@ -1,7 +0,0 @@
# 启动注意事项(已合并)
本文件已停止维护。
请改看唯一文档:`(红头)Windows服务器启动与重启唯一指南.md`
路径:`D:\aaa\aiagent\(红头)Windows服务器启动与重启唯一指南.md`

View File

@@ -1,474 +0,0 @@
# Windows 启动指南(已合并)
本文件已停止维护,请只看以下唯一文档:
- `D:\aaa\aiagent\(红头)Windows服务器启动与重启唯一指南.md`
说明:历史内容已合并至上方文档,后续不再在本文件更新。
# Windows 启动指南(已合并)
本文件已停止维护。
请改看唯一文档:`(红头)Windows服务器启动与重启唯一指南.md`
路径:`D:\aaa\aiagent\(红头)Windows服务器启动与重启唯一指南.md`
# Windows 本地启动指南
## 前置要求
### 已安装的软件
- ✅ Python 3.12.7(已安装)
- ✅ Node.js 22.13.0(已安装)
- ✅ npm 10.9.2(已安装)
- ✅ pnpm 10.33.0(已安装)
### 需要安装的软件
- ❌ Redis需要安装但可以选择便携版
## 步骤 1安装 Redis选择一种方式
### 选项 A使用 Docker 运行 Redis推荐最简单
如果你不介意使用 Docker 来运行 Redis其他服务仍在本地运行
1. **安装 Docker Desktop**
- 下载地址https://www.docker.com/products/docker-desktop/
- 安装后启动 Docker Desktop
2. **启动 Redis 容器**
```bash
docker run -d --name redis -p 6380:6379 redis:7-alpine
```
3. **验证 Redis 是否运行**
```bash
docker ps
```
应该能看到 Redis 容器正在运行。
### 选项 B使用 Redis 便携版(快速启动,无需安装)
1. **下载 Redis Windows 便携版**
```bash
cd "D:/aaa/aiagent/backend"
curl -L -o redis.zip "https://github.com/microsoftarchive/redis/releases/download/win-3.2.100/Redis-x64-3.2.100.zip"
```
2. **解压 Redis**
```bash
# Windows PowerShell
Expand-Archive -Path redis.zip -DestinationPath redis
# 或使用解压工具解压
```
3. **启动 Redis 服务器**
```bash
cd redis
./redis-server.exe redis.windows.conf
```
Redis 将在端口 6379 启动。
4. **验证 Redis 是否运行**
```bash
./redis-cli.exe ping
```
应该返回:`PONG`
### 选项 C安装 Redis for Windows作为服务
1. **下载 Redis Windows 版本**
- 从 GitHub 下载https://github.com/microsoftarchive/redis/releases
- 下载 `Redis-x64-3.2.100.msi`
2. **安装 Redis**
- 运行安装程序,按照默认设置安装
- 安装完成后Redis 会作为 Windows 服务运行
3. **修改 Redis 端口(可选)**
- 默认 Redis 运行在 6379 端口
- 如果需要使用 6380 端口(与 docker-compose 配置一致),需要修改配置文件
- 配置文件位置:`C:\Program Files\Redis\redis.windows-service.conf`
- 找到 `port 6379` 改为 `port 6380`
- 重启 Redis 服务
### 选项 D使用 WSL 安装 Redis
如果你有 WSLWindows Subsystem for Linux
```bash
# 在 WSL 中运行
sudo apt update
sudo apt install redis-server
sudo service redis-server start
# 需要配置 Redis 允许远程连接
```
## 步骤 2配置后端环境
### 1. 创建虚拟环境并安装依赖
```bash
cd backend
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
# Windows CMD:
venv\Scripts\activate
# Windows PowerShell:
.\venv\Scripts\Activate.ps1
# Git Bash:
source venv/Scripts/activate
# 安装依赖
pip install -r requirements.txt
```
### 2. 配置环境变量
```bash
# 复制环境变量文件
copy env.example .env
```
编辑 `.env` 文件,确保以下配置正确:
```ini
# 数据库配置已配置为腾讯云MySQL无需修改
DATABASE_URL=mysql+pymysql://root:!Rjb12191@gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com:24936/agent_db?charset=utf8mb4
# Redis配置根据你的Redis安装方式选择
# 如果使用Docker Redis端口6380
REDIS_URL=redis://localhost:6380/0
# 如果使用Windows Redis默认端口6379
# REDIS_URL=redis://localhost:6379/0
# CORS配置
CORS_ORIGINS=http://localhost:3001,http://127.0.0.1:3001,http://localhost:3000,http://127.0.0.1:3000,http://localhost:8038,http://101.43.95.130:8038
# DeepSeek API密钥已有
DEEPSEEK_API_KEY=sk-fdf7cc1c73504e628ec0119b7e11b8cc
DEEPSEEK_BASE_URL=https://api.deepseek.com
```
### 3. 运行数据库迁移
```bash
# 确保虚拟环境已激活
alembic upgrade head
```
### 4. 启动后端服务
```bash
uvicorn app.main:app --host 0.0.0.0 --port 8037 --reload
```
后端服务将在 http://localhost:8037 启动。
### 5. 启动 Celery Worker新终端
```bash
# 在新终端中进入backend目录并激活虚拟环境
cd backend
venv\Scripts\activate
# 启动 Celery Worker
celery -A app.core.celery_app worker --loglevel=info
```
## 步骤 3配置前端环境
### 1. 安装依赖
```bash
cd frontend
pnpm install
```
### 2. 配置 API 地址
编辑 `frontend/vite.config.ts`,确保代理配置正确:
```typescript
export default defineConfig({
server: {
port: 3001,
proxy: {
'/api': {
target: 'http://localhost:8037',
changeOrigin: true,
},
'/ws': {
target: 'ws://localhost:8037',
ws: true,
},
},
},
})
```
### 3. 启动前端服务
```bash
pnpm dev
```
前端服务将在 http://localhost:3001 启动。
注意:访问地址是 http://localhost:3001前端默认使用3001端口。
## 步骤 4验证服务
### 1. 检查服务状态
- **后端API**: http://localhost:8037
- **API文档**: http://localhost:8037/docs
- **前端**: http://localhost:3001
### 2. 测试健康检查
```bash
curl http://localhost:8037/health
```
应该返回:`{"status":"healthy"}`
## 步骤 5创建第一个工作流
1. 访问 http://localhost:3001
2. 注册新用户或使用现有账户登录
3. 点击"创建工作流"进入可视化编辑器
4. 拖拽节点、连接、配置并保存
5. 运行工作流测试
## 常见问题
### 1. Redis 连接失败
**错误信息**
```
redis.exceptions.ConnectionError: Error 10061 connecting to localhost:6380
```
**解决方案**
- 检查 Redis 是否正在运行
- 确认 Redis 端口是否正确
- 检查防火墙是否阻止了 Redis 端口
### 2. 数据库连接失败
**错误信息**
```
pymysql.err.OperationalError: (2003, "Can't connect to MySQL server...")
```
**解决方案**
- 检查网络连接(腾讯云数据库需要互联网访问)
- 确认数据库连接信息正确
- 检查数据库是否允许远程连接
### 3. 前端无法连接后端
**错误信息**
```
Proxy error: Could not proxy request /api/auth/me from localhost:3001 to http://localhost:8037
```
**解决方案**
- 检查后端服务是否正在运行http://localhost:8037
- 检查前端代理配置vite.config.ts
- 检查 CORS 配置(.env 文件中的 CORS_ORIGINS
### 4. Celery 任务不执行
**解决方案**
- 检查 Celery Worker 是否正在运行
- 检查 Redis 连接是否正常
- 查看 Celery Worker 日志
### 5. 端口被占用
**解决方案**
- 检查端口 8037 和 3001 是否被其他程序占用
- 可以修改端口:
- 后端:修改启动命令端口 `--port 8038`
- 前端:修改 `vite.config.ts` 中的 `port`
## 一键启动脚本(推荐)
下面给出一套更稳的 PowerShell 一键启动脚本:
- 自动检查并启动 Redis优先使用 `backend/redis/redis-server.exe`
- 自动拉起后端 API默认 8037若被占用自动切到 8041
- 自动拉起 Celery Worker
- 自动拉起前端(并将前端代理指向实际 API 端口)
### 脚本文件:`start_aiagent.ps1`
> 建议保存到仓库根目录:`D:\aaa\aiagent\start_aiagent.ps1`
```powershell
param(
[int]$ApiPort = 8037,
[int]$FallbackApiPort = 8041,
[int]$FrontendPort = 3001
)
$ErrorActionPreference = "Stop"
$RepoRoot = Split-Path -Parent $MyInvocation.MyCommand.Path
$Backend = Join-Path $RepoRoot "backend"
$Frontend = Join-Path $RepoRoot "frontend"
$RedisDir = Join-Path $Backend "redis"
$RedisExe = Join-Path $RedisDir "redis-server.exe"
$RedisCli = Join-Path $RedisDir "redis-cli.exe"
function Test-PortListening([int]$Port) {
$line = netstat -ano | Select-String ":$Port\s+.*LISTENING" | Select-Object -First 1
return [bool]$line
}
function Ensure-Redis {
if (Test-PortListening 6379) {
Write-Host "[OK] Redis already listening on 6379" -ForegroundColor Green
return
}
if (-not (Test-Path $RedisExe)) {
throw "Redis 可执行文件不存在:$RedisExe"
}
Write-Host "[RUN] Starting Redis on 6379 ..." -ForegroundColor Yellow
Start-Process -FilePath $RedisExe -ArgumentList "--port 6379" -WorkingDirectory $RedisDir | Out-Null
Start-Sleep -Seconds 2
if (-not (Test-PortListening 6379)) {
throw "Redis 启动失败6379 未监听"
}
if (Test-Path $RedisCli) {
& $RedisCli -p 6379 ping | Out-Null
}
Write-Host "[OK] Redis started" -ForegroundColor Green
}
function Resolve-ApiPort {
if (-not (Test-PortListening $ApiPort)) {
return $ApiPort
}
Write-Host "[WARN] Port $ApiPort is occupied, switching to $FallbackApiPort" -ForegroundColor Yellow
if (Test-PortListening $FallbackApiPort) {
throw "端口 $ApiPort 和 $FallbackApiPort 都被占用,请先释放端口"
}
return $FallbackApiPort
}
Write-Host "== AIAgent Windows 一键启动 ==" -ForegroundColor Cyan
Write-Host "Repo: $RepoRoot"
Ensure-Redis
$RealApiPort = Resolve-ApiPort
$ApiBase = "http://127.0.0.1:$RealApiPort"
Write-Host "[RUN] Starting backend API on $RealApiPort ..." -ForegroundColor Yellow
Start-Process powershell -ArgumentList @(
"-NoExit",
"-Command",
"cd '$Backend'; .\venv\Scripts\Activate.ps1; python -m uvicorn app.main:app --host 0.0.0.0 --port $RealApiPort"
)
Write-Host "[RUN] Starting Celery worker ..." -ForegroundColor Yellow
Start-Process powershell -ArgumentList @(
"-NoExit",
"-Command",
"cd '$Backend'; .\venv\Scripts\Activate.ps1; python -m celery -A app.core.celery_app worker --loglevel=info --pool=threads --concurrency=8"
)
Write-Host "[RUN] Starting frontend on $FrontendPort (proxy -> $ApiBase) ..." -ForegroundColor Yellow
Start-Process powershell -ArgumentList @(
"-NoExit",
"-Command",
"`$env:AIAGENT_API_PROXY='$ApiBase'; cd '$Frontend'; pnpm dev --port $FrontendPort"
)
Write-Host ""
Write-Host "[DONE] 启动命令已下发" -ForegroundColor Green
Write-Host "前端: http://localhost:$FrontendPort" -ForegroundColor Cyan
Write-Host "后端: $ApiBase/docs" -ForegroundColor Cyan
Write-Host "Redis: 127.0.0.1:6379" -ForegroundColor Cyan
```
### 运行方式
```powershell
cd D:\aaa\aiagent
powershell -ExecutionPolicy Bypass -File .\start_aiagent.ps1
```
### 可选参数
```powershell
# 指定端口
powershell -ExecutionPolicy Bypass -File .\start_aiagent.ps1 -ApiPort 8037 -FallbackApiPort 8041 -FrontendPort 3001
```
---
## 快速启动脚本(简版)
### Windows CMD 脚本 (`start_all.cmd`)
```batch
@echo off
echo 启动天工智能体平台...
REM 启动后端服务
start cmd /k "cd /d backend && venv\Scripts\activate && uvicorn app.main:app --host 0.0.0.0 --port 8037 --reload"
REM 启动 Celery Worker
start cmd /k "cd /d backend && venv\Scripts\activate && celery -A app.core.celery_app worker --loglevel=info"
REM 启动前端服务
start cmd /k "cd /d frontend && pnpm dev"
echo 服务启动完成!
echo 前端: http://localhost:3001
echo 后端API: http://localhost:8037/docs
```
### PowerShell 脚本 (`start_all.ps1`)
```powershell
Write-Host "启动天工智能体平台..." -ForegroundColor Green
# 启动后端服务
Start-Process powershell -ArgumentList "-NoExit", "-Command", "cd backend; .\venv\Scripts\Activate.ps1; uvicorn app.main:app --host 0.0.0.0 --port 8037 --reload"
# 启动 Celery Worker
Start-Process powershell -ArgumentList "-NoExit", "-Command", "cd backend; .\venv\Scripts\Activate.ps1; celery -A app.core.celery_app worker --loglevel=info"
# 启动前端服务
Start-Process powershell -ArgumentList "-NoExit", "-Command", "cd frontend; pnpm dev"
Write-Host "服务启动完成!" -ForegroundColor Green
Write-Host "前端: http://localhost:3001" -ForegroundColor Yellow
Write-Host "后端API: http://localhost:8037/docs" -ForegroundColor Yellow
```
## 停止服务
### 停止所有服务
1.`Ctrl+C` 停止每个终端中的服务
2. 停止 Redis
- Docker Redis: `docker stop redis`
- Windows Redis 服务: 停止 "Redis" 服务
## 生产环境建议
对于生产环境,建议使用:
1. **Docker Compose**:统一管理和部署所有服务
2. **Nginx**:反向代理和负载均衡
3. **Supervisor**:进程管理
4. **数据库备份**:定期备份腾讯云数据库
---
**文档版本**: 1.1
**最后更新**: 2026-04-09
> 注意:本指南针对 Windows 本地开发环境。生产环境部署请参考 [方案-优化版.md](./方案-优化版.md)。

View File

@@ -1,100 +0,0 @@
# Windows 启动和停止用法(已合并)
本文件已停止维护,请只看以下唯一文档:
- `D:\aaa\aiagent\(红头)Windows服务器启动与重启唯一指南.md`
说明:历史内容已合并至上方文档,后续不再在本文件更新。
# Windows 启动和停止用法(已合并)
本文件已停止维护。
请改看唯一文档:`(红头)Windows服务器启动与重启唯一指南.md`
路径:`D:\aaa\aiagent\(红头)Windows服务器启动与重启唯一指南.md`
# AIAgent Windows 启动和停止用法
## 一键启动
在 PowerShell 中执行:
```powershell
cd D:\aaa\aiagent
powershell -ExecutionPolicy Bypass -File .\start_aiagent.ps1
```
启动后默认访问:
- 前端:`http://localhost:3001`
- 后端文档:`http://127.0.0.1:8037/docs`
- Redis`127.0.0.1:6379`
说明:
-`8037` 被占用,脚本会自动切换到 `8041` 启动后端。
- 前端会自动使用 `AIAGENT_API_PROXY` 指向实际后端端口。
## 启动参数(可选)
```powershell
powershell -ExecutionPolicy Bypass -File .\start_aiagent.ps1 -ApiPort 8037 -FallbackApiPort 8041 -FrontendPort 3001
```
## 一键停止
在 PowerShell 中执行:
```powershell
cd D:\aaa\aiagent
powershell -ExecutionPolicy Bypass -File .\stop_aiagent.ps1
```
会尝试停止以下进程:
- 后端 API`uvicorn app.main:app`
- Celery Worker`celery -A app.core.celery_app worker`
- 前端 dev`vite` / `pnpm dev` / `npm run dev`
- Redis`redis-server`
并检查端口:
- `3001`
- `8037`
- `8041`
- `6379`
## 常见问题
### 1) 执行策略拦截脚本
先执行:
```powershell
Set-ExecutionPolicy -Scope Process Bypass
```
### 2) 发送消息超时30 秒)
优先检查 Redis 和 Worker
```powershell
netstat -ano | findstr :6379
```
确认 Celery Worker 正在运行。
### 3) 8037 端口被占用
先查占用:
```powershell
netstat -ano | findstr :8037
```
再结束对应 PID管理员 PowerShell
```powershell
taskkill /PID <PID> /T /F
```
## 脚本文件位置
- 启动脚本:`D:\aaa\aiagent\start_aiagent.ps1`
- 停止脚本:`D:\aaa\aiagent\stop_aiagent.ps1`

View File

@@ -1,104 +0,0 @@
# 🚀 启动说明
## 使用 Docker Compose 启动(推荐)
### 1. 启动所有服务
```bash
docker-compose -f docker-compose.dev.yml up -d
```
### 2. 查看服务状态
```bash
docker-compose ps
```
### 3. 查看日志
```bash
# 查看所有服务日志
docker-compose logs -f
# 查看特定服务日志
docker-compose logs -f backend
docker-compose logs -f frontend
docker-compose logs -f celery
```
### 4. 停止服务
```bash
docker-compose down
```
### 5. 重启服务
```bash
docker-compose restart
```
## 📍 访问地址
- **前端**: http://localhost:8038
- **后端API**: http://localhost:8037
- **API文档**: http://localhost:8037/docs
- **健康检查**: http://localhost:8037/health
## 🔧 配置说明
### 数据库配置
- **数据库类型**: MySQL腾讯云数据库
- **连接地址**: gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com:24936
- **数据库名**: agent_db
- **字符集**: utf8mb4
### 端口配置
- **前端端口**: 8038容器内3000
- **后端端口**: 8037容器内8000
- **Redis端口**: 6379
## ⚠️ 注意事项
1. **数据库连接**: 确保服务器能够访问腾讯云MySQL数据库
2. **首次启动**: 首次启动可能需要一些时间下载镜像和安装依赖
3. **数据库迁移**: 首次运行需要执行数据库迁移(如果需要)
4. **环境变量**: 数据库连接信息已在docker-compose.dev.yml中配置
## 🐛 常见问题
### 1. 容器启动失败
检查:
- Docker 和 Docker Compose 是否正常运行
- 端口是否被占用8038, 8037, 6379
- 磁盘空间是否充足
### 2. 数据库连接失败
检查:
- 网络是否能够访问腾讯云数据库
- 数据库连接信息是否正确
- 数据库是否已创建
### 3. 前端无法访问后端
检查:
- 后端服务是否正常运行
- 前端配置的API URL是否正确
- CORS配置是否正确
### 4. Celery任务不执行
检查:
- Celery Worker容器是否正常运行
- Redis连接是否正常
- 查看Celery日志`docker-compose logs -f celery`
## 📝 下一步
1. 访问 http://localhost:8037/docs 查看API文档
2. 开始开发功能模块
3. 参考 [方案-优化版.md](./方案-优化版.md) 了解详细技术方案

View File

@@ -0,0 +1,79 @@
# TTS 朗读声音机械/不自然 — 排查与修复
## 现象
AgentChat 页面点击朗读,声音机械不自然,不像微软神经网络语音。
## 根因
有两种可能,依序排查:
### 1. edge-tts 子进程找不到(最常见)
`voice.py``_edge_tts_synthesize` 原本通过 `subprocess` 调用 `edge-tts` CLI但服务器若在新 PowerShell 窗口启动PATH 可能不包含 venv/Scripts导致调用失败。后端返回 502前端 `useTTS.ts` 静默降级到浏览器 `SpeechSynthesis`(声音机械)。
**日志特征:**
```
ERROR | Edge TTS 失败:
POST /api/v1/voice/tts - 状态码: 502
```
**修复:** 已改用 edge-tts Python 库直接调用,不再依赖 CLI 子进程。
```python
# voice.py — _edge_tts_synthesize()
import edge_tts
communicate = edge_tts.Communicate(text, voice, rate=rate_str)
await communicate.save(output_path)
```
### 2. Redis 未运行
登录接口依赖 Redis 存储 refresh_token。Redis 挂掉时登录报 500但更隐蔽的是 TTS 接口需要认证Redis 超时会导致请求堆积。
**日志特征:**
```
Redis连接失败: Timeout connecting to server
redis.exceptions.TimeoutError: Timeout connecting to server
```
**修复:** 确保 Redis 在 6379 端口运行:
```bash
/d/workspace/aiagent/backend/redis/redis-server.exe --port 6379
```
> 注意:`restart_backend_celery.ps1` 只重启 API+Celery不重启 Redis 和前端。全停后再启请用 `start_aiagent.ps1` 或手动启动 Redis。
## 验证方法
```bash
# 1. 确认后端 TTS 正常
TOKEN=$(curl -s -X POST http://127.0.0.1:8041/api/v1/auth/login \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "username=admin&password=123456" | python -c "import sys,json; print(json.load(sys.stdin)['access_token'])")
curl -s -X POST http://127.0.0.1:8041/api/v1/voice/tts \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"text":"你好测试","voice":"xiaoxiao","speed":1.0}'
# 应返回: {"audio_url":"/api/v1/voice/audio/xxx.mp3",...}
# 2. 确认音频文件可下载
curl -s -o /dev/null -w "HTTP: %{http_code}" http://127.0.0.1:8041/api/v1/voice/audio/xxx.mp3
# 应返回: HTTP: 200
```
## 端口说明
| 服务 | 主端口 | 备用端口 | 说明 |
|------|--------|----------|------|
| 后端 API | 8037 | 8041 | 8037 被僵尸进程占用时换 8041 |
| 前端 Vite | 3001 | — | `AIAGENT_API_PROXY` 需指向实际后端端口 |
| Redis | 6379 | — | `restart_backend_celery.ps1` 不会启动它 |
## 为什么不能加微软情感 SSML
`<mstts:express-as>` 是 Azure 认知服务付费功能,免费的 Edge TTSedge-tts 库底层使用的微软 Edge 浏览器朗读接口)**不支持**该标签。强行注入 SSML 会直接导致 `NoAudioReceived` 错误。
`zh-CN-XiaoxiaoNeural` 本身已是神经网络语音,不加 express-as 也能正常发音。若需更强情感表现力,只能接入 Azure Speech Services需付费订阅和 API Key

View File

@@ -1,104 +0,0 @@
# 产品经理
> 所属公司:瑞来兹软件技术有限公司
> 更新日期2026-05-04
---
## 一、角色定义
产品经理Product Manager是产品的所有者负责从需求发现到产品上线的全生命周期管理在用户价值与商业价值之间寻找最优解。
---
## 二、主要职责
### 2.1 需求管理
- 收集并分析用户反馈、业务需求、市场趋势
- 撰写 BRD商业需求文档和 PRD产品需求文档
- 维护产品 Backlog持续进行需求优先级排序
- 组织需求评审会,协同技术、设计、测试对齐需求
### 2.2 产品规划
- 制定产品路线图Roadmap明确版本迭代节奏
- 定义产品核心指标KPI/OKR跟踪产品数据表现
- 竞品分析与市场调研,输出竞品分析报告
- 参与公司战略规划,对齐产品方向与业务目标
### 2.3 功能设计
- 输出产品原型(低保真/高保真)、交互流程图
- 编写用户故事User Story和验收标准AC
- 与 UX/UI 设计师协作完成界面设计
- 定义功能边界、异常状态、权限模型
### 2.4 项目推进
- 参与 Sprint Planning、每日站会、Sprint Review
- 在开发过程中澄清需求细节,及时调整方案
- 组织 UAT用户验收测试确认上线条件
- 版本发布后撰写 Release Notes组织功能宣讲
### 2.5 数据分析与迭代
- 上线后跟踪产品数据DAU、留存率、转化率等
- 通过 A/B 测试验证功能假设
- 收集用户反馈,驱动下一轮产品迭代
- 定期输出产品月报/季报
---
## 三、常用平台与工具
| 分类 | 工具 | 用途 |
|------|------|------|
| **原型设计** | Axure RP | 高保真原型、复杂交互 |
| | Figma | UI 协作设计、原型演示 |
| | 墨刀Mockplus | 快速原型、团队协作 |
| | Sketch | Mac 端 UI 设计 |
| **项目管理** | Jira | 需求跟踪、Sprint 管理 |
| | 禅道 | 国产项目管理、Bug 跟踪 |
| | Trello | 轻量看板管理 |
| | Notion | 文档协作、知识库 |
| | Confluence | 需求文档 Wiki |
| | PingCode | 国产研发管理平台 |
| **文档协作** | 飞书文档 | 内部协作与文档 |
| | 语雀 | 知识库与文档 |
| | 石墨文档 | 在线协同编辑 |
| | Google Docs | 国际团队协作 |
| **数据分析** | 神策数据 | 用户行为分析 |
| | GrowingIO | 无埋点数据分析 |
| | Google Analytics | Web 流量分析 |
| | 友盟+ | 移动端数据统计 |
| | Metabase / Superset | BI 自助分析 |
| **沟通协作** | 飞书 / 钉钉 / 企业微信 | 即时通讯 |
| | Slack | 国际团队通讯 |
| | Zoom / 腾讯会议 | 视频会议 |
| **思维导图** | XMind | 需求梳理、功能拆解 |
| | ProcessOn | 流程图、脑图在线 |
| | Draw.io | 架构图、流程图 |
---
## 四、能力模型
| 能力 | 要求 |
|------|------|
| 需求洞察 | 能从模糊业务诉求中提炼可执行需求 |
| 逻辑思维 | 严谨的功能边界与异常流梳理 |
| 数据分析 | SQL 查询、指标体系搭建、A/B 实验设计 |
| 沟通协调 | 跨部门(技术/设计/运营/销售)高效沟通 |
| 技术理解 | 了解前后端基础、API 概念、数据库基础 |
| 商业思维 | 理解商业模式、ROI 评估、定价策略 |
---
## 五、产出物清单
| 产出物 | 交付节点 |
|--------|----------|
| 竞品分析报告 | 产品立项前 |
| BRD商业需求文档 | 立项阶段 |
| PRD产品需求文档 | 需求评审前 |
| 产品原型 | 需求评审前 |
| 用户故事地图 | Sprint 规划前 |
| 产品路线图 | 季度/年度规划 |
| 产品数据月报 | 每月 |
| Release Notes | 每个版本发布 |

View File

@@ -1,153 +0,0 @@
# 开发
> 所属公司:瑞来兹软件技术有限公司
> 更新日期2026-05-04
---
## 一、角色定义
开发工程师Developer是产品的建造者负责将需求和设计转化为可运行的软件系统涵盖前端、后端、移动端、数据等多个方向。
---
## 二、主要职责
### 2.1 编码实现
- 根据 PRD 和技术方案完成功能开发
- 编写高质量、可维护、可测试的代码
- 遵循编码规范和团队约定的设计模式
- 实现 API 接口、数据库操作、业务逻辑
- 前端页面还原、交互实现、状态管理
### 2.2 代码质量
- 编写单元测试Jest/JUnit/pytest保证核心逻辑覆盖率
- 代码自测,确保提测质量
- 参与 Code Review互相审查代码质量
- 使用 SonarQube / ESLint 等工具确保代码规范
- 重构遗留代码,消除技术债务
### 2.3 技术方案
- 参与技术方案评审,评估实现可行性
- 编写模块级别的详细设计文档
- 评估需求实现工时Story Point / 人天)
- 对复杂功能进行技术预研Spike
### 2.4 协作与交付
- 参与 Sprint 规划、每日站会、评审会
- 与测试工程师协作定位和修复 Bug
- 与产品经理澄清需求实现细节
- 配合运维完成服务上线、灰度发布
- 编写上线 Checklist 和技术 Release Notes
### 2.5 学习与成长
- 持续学习新技术、新框架
- 参与技术分享,沉淀团队知识
- 阅读优秀开源项目源码
- 初级工程师接受高级/架构师指导
---
## 三、常用平台与工具
### 3.1 后端开发
| 分类 | 工具 | 用途 |
|------|------|------|
| **语言与框架** | Go + Gin / Kratos | 微服务开发 |
| | Java + Spring Boot / Spring Cloud | 企业级后端 |
| | Python + FastAPI / Django | 快速开发 / AI 服务 |
| | Node.js + Nest.js / Express | BFF 层 / 轻量服务 |
| | Rust | 高性能系统 |
| **数据库** | MySQL / PostgreSQL | 关系型数据 |
| | Redis | 缓存、队列、锁 |
| | MongoDB | 文档存储 |
| | Elasticsearch | 全文搜索 |
| **消息队列** | Kafka / RocketMQ / RabbitMQ | 异步解耦 |
| **IDE** | VS Code / IntelliJ IDEA / GoLand | 开发环境 |
| **API 工具** | Postman / Apifox / Apipost | 接口调试 |
| | Swagger / OpenAPI | API 文档 |
### 3.2 前端开发
| 分类 | 工具 | 用途 |
|------|------|------|
| **框架** | React + Next.js | Web 前端 |
| | Vue 3 + Nuxt | Web 前端 |
| | TypeScript | 类型安全 |
| **UI 库** | Ant Design / Element Plus | 中后台组件 |
| | Tailwind CSS | 原子化 CSS |
| | Shadcn/ui | 可定制组件 |
| **构建工具** | Vite / Webpack / Turbopack | 构建打包 |
| **状态管理** | Zustand / Pinia / Redux | 状态管理 |
| **测试** | Vitest / Playwright / Cypress | 单元/端到端测试 |
| **IDE** | VS Code / Cursor | 开发环境 |
| **调试** | Chrome DevTools / React DevTools | 调试工具 |
### 3.3 移动端开发
| 分类 | 工具 | 用途 |
|------|------|------|
| **平台** | Swift + SwiftUIiOS | iOS 原生 |
| | Kotlin + Jetpack ComposeAndroid | Android 原生 |
| | Flutter / React Native | 跨端开发 |
| **测试** | XCTestiOS/ EspressoAndroid | 单元/UI 测试 |
| **分发** | TestFlight / Firebase App Distribution | 测试分发 |
| **性能** | InstrumentsiOS/ Android Profiler | 性能分析 |
### 3.4 通用工具
| 工具 | 用途 |
|------|------|
| Git + GitHub / GitLab / Gitee | 版本控制 |
| Docker | 容器化开发环境 |
| VS Code / JetBrains 系列 | IDE |
| Tmux / iTerm2 / Windows Terminal | 终端 |
| Figma查看模式 | 设计稿查看 |
| Raycast / Alfred | 效率工具 |
---
## 四、开发流程
```
需求理解 → 技术方案 → 编码实现 → 自测 → 代码评审 → 提测 → 修复Bug → 上线
│ │ │ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
PRD阅读 设计文档 分支开发 单元测试 PR/MR 提测单 Bug修复 发布清单
```
---
## 五、能力模型
| 级别 | 能力要求 |
|------|----------|
| **初级** | 独立完成明确需求的功能开发、Bug 修复 |
| **中级** | 独立负责模块设计与实现、指导初级工程师 |
| **高级** | 主导子系统设计、跨模块优化、Code Review 把控 |
| **资深** | 领域专家、技术难题攻关、架构设计参与 |
| 通用能力 | 要求 |
|----------|------|
| 编程语言 | 精通至少一门语言及其生态 |
| 数据结构与算法 | 常见数据结构、算法复杂度分析 |
| 设计模式 | 常用 23 种模式,能合理应用 |
| 数据库 | SQL 编写、索引优化、慢查询分析 |
| Linux | 命令行操作、脚本编写、服务部署 |
| Git | 分支管理、冲突解决、Git Flow |
| 调试能力 | 日志分析、断点调试、性能 Profiling |
---
## 六、产出物清单
| 产出物 | 交付节点 |
|--------|----------|
| 技术方案/详细设计 | 编码前 |
| 功能代码(含单测) | Sprint 结束 |
| API 接口文档更新 | 接口变更时 |
| 自测报告 | 提测时 |
| Code Review 记录 | 每个 PR/MR |
| 上线 Checklist | 发布前 |
| 技术分享文档 | 不定期 |

View File

@@ -1,130 +0,0 @@
# 架构师
> 所属公司:瑞来兹软件技术有限公司
> 更新日期2026-05-04
---
## 一、角色定义
架构师Architect是技术方向的掌舵者负责系统架构设计、技术选型、非功能需求保障性能/安全/可扩展性),并在关键决策上提供技术判断力。按领域可细分为:系统架构师、应用架构师、数据架构师、安全架构师、解决方案架构师。
---
## 二、主要职责
### 2.1 架构设计
- 设计系统整体架构(微服务/单体/混合),产出架构图
- 定义模块边界、服务拆分、接口契约API 设计)
- 制定技术选型标准(语言、框架、中间件、数据库)
- 设计数据架构:数据模型、分库分表策略、读写分离
- 设计部署架构K8s 集群规划、网络拓扑、容灾方案
### 2.2 技术规范
- 制定编码规范、分支管理策略Git Flow / Trunk-Based
- 定义 API 设计规范RESTful / GraphQL / gRPC
- 建立技术雷达Tech Radar跟踪新兴技术
- 制定安全编码规范OWASP Top 10 防护)
- 编写架构决策记录ADR
### 2.3 非功能需求保障
- 性能优化:系统吞吐量、响应时间、并发能力
- 高可用设计:多活/主备、故障转移、降级熔断
- 安全架构认证授权OAuth2.0/OIDC、数据加密、审计日志
- 可扩展性水平扩展策略、CQRS、事件驱动
- 可观测性日志、指标、链路追踪OpenTelemetry
### 2.4 技术评审与治理
- 主持技术方案评审会,评估方案可行性
- 核心模块代码审查,确保架构一致性
- 识别技术债务,制定偿还计划
- 参与技术委员会,制定长期技术战略
### 2.5 团队赋能
- 指导高级开发工程师,提升团队技术水位
- 定期组织技术分享会Tech Talk
- 编写架构文档,降低系统认知负荷
- 帮助团队攻克技术难题(攻关)
---
## 三、常用平台与工具
| 分类 | 工具 | 用途 |
|------|------|------|
| **架构设计** | Draw.io | 架构图、流程图、网络拓扑 |
| | PlantUML | 代码生成 UML 图 |
| | C4 Model / Structurizr | 分层架构可视化 |
| | Excalidraw | 手绘风格架构草图 |
| | ArchiMate | 企业架构建模 |
| **技术文档** | Confluence / Notion | 架构文档协作 |
| | ADR Tools | 架构决策记录管理 |
| | Markdown + Git | 轻量文档版本管理 |
| **中间件与基础设施** | Kubernetes (K8s) | 容器编排 |
| | Istio / Linkerd | 服务网格 |
| | Nacos / Consul | 服务注册与配置 |
| | Redis | 缓存 / 分布式锁 |
| | Kafka / RocketMQ / RabbitMQ | 消息队列 |
| | Nginx / APISIX / Kong | API 网关 |
| | Elasticsearch | 搜索与分析引擎 |
| **数据库** | MySQL / PostgreSQL | 关系型数据库 |
| | MongoDB | 文档型 NoSQL |
| | TiDB / CockroachDB | 分布式 SQL |
| | ClickHouse / Doris | OLAP 分析 |
| **监控与可观测** | Prometheus + Grafana | 监控与可视化 |
| | ELKElasticsearch + Logstash + Kibana | 日志管理 |
| | SkyWalking / Jaeger / Zipkin | 链路追踪 |
| | Sentry | 错误追踪 |
| **CI/CD** | Jenkins / GitLab CI / GitHub Actions | 流水线 |
| | ArgoCD | GitOps 部署 |
| | Docker / Containerd | 容器化 |
| **安全** | SonarQube | 代码安全扫描 |
| | Vault | 密钥管理 |
| | OWASP ZAP | 安全测试 |
---
## 四、架构设计原则
```
1. KISSKeep It Simple, Stupid—— 简单优于复杂
2. YAGNIYou Aren't Gonna Need It—— 不为未来过度设计
3. 高内聚低耦合 —— 模块内紧密关联,模块间松散依赖
4. 关注点分离Separation of Concerns
5. 面向失败设计Design for Failure
6. 无状态优先 —— 有状态服务需特殊设计
7. 数据一致性权衡 —— CAP 取舍、最终一致性
8. API First —— 先定义接口,再实现
9. 12-Factor App —— 云原生应用方法论
10. 安全左移Shift Left on Security
```
---
## 五、能力模型
| 能力 | 要求 |
|------|------|
| 系统设计 | 分布式系统、微服务、领域驱动设计DDD |
| 技术广度 | 多语言/多框架/多数据库经验 |
| 抽象思维 | 从业务需求抽象架构模型 |
| 决策能力 | 技术选型与权衡Trade-off分析 |
| 沟通表达 | 能用图/文档清晰传达架构意图 |
| 业务理解 | 理解业务战略,支撑业务扩展 |
| 领导力 | 技术驱动,不依赖职级 |
---
## 六、产出物清单
| 产出物 | 交付节点 |
|--------|----------|
| 系统架构设计文档 | 项目启动阶段 |
| 技术选型报告 | 方案评审 |
| API 设计规范 | 编码前 |
| 数据库 ER 图与表设计 | 编码前 |
| 部署架构图 | 上线前 |
| 架构评审记录 | 每次评审 |
| ADR架构决策记录 | 关键决策时 |
| 性能压测报告 | 上线前 |
| 技术雷达 | 季度 |

View File

@@ -1,162 +0,0 @@
# 测试
> 所属公司:瑞来兹软件技术有限公司
> 更新日期2026-05-04
---
## 一、角色定义
测试工程师QA Engineer是产品质量的守门员通过功能测试、自动化测试、性能测试、安全测试等手段保障软件交付质量降低线上故障风险。
---
## 二、主要职责
### 2.1 测试规划
- 参与需求评审,从测试角度提出可测性建议
- 编写测试计划,明确测试范围、策略、资源
- 设计测试用例(功能、异常、边界、兼容性)
- 评估测试工作量,规划测试排期
- 定义测试准入/准出标准
### 2.2 功能测试
- 执行冒烟测试Smoke Test验证提测版本可用性
- 执行全量测试用例,记录测试结果
- 发现 Bug 并提交到缺陷管理平台,清晰描述复现步骤
- 回归测试:验证 Bug 修复,确保无新增问题
- 探索性测试:发现用例未覆盖的缺陷
### 2.3 自动化测试
- 搭建自动化测试框架Selenium / Playwright / Appium
- 编写接口自动化测试脚本pytest / JMeter / Postman
- 编写 UI 自动化测试脚本
- 集成到 CI/CD 流水线,实现自动化回归
- 维护自动化用例,保证脚本稳定性
### 2.4 性能测试
- 制定性能测试方案,确定压测场景与指标
- 使用 JMeter / Locust / k6 进行压力测试
- 分析性能瓶颈CPU/内存/IO/数据库慢查询)
- 输出性能测试报告,给出优化建议
- 生产环境容量评估与容量规划
### 2.5 安全测试
- 执行安全扫描OWASP Top 10
- SQL 注入、XSS、CSRF 等常见漏洞检测
- API 接口权限验证、敏感数据泄露检查
- 配合第三方安全公司进行渗透测试
### 2.6 质量度量
- 统计缺陷密度、Bug 修复率、Bug 严重程度分布
- 分析线上故障,推动故障复盘
- 建立质量大盘,可视化质量趋势
- 推动质量左移,提升提测质量
---
## 三、常用平台与工具
| 分类 | 工具 | 用途 |
|------|------|------|
| **缺陷管理** | Jira | Bug 跟踪与管理 |
| | 禅道 | 国产缺陷管理 |
| | 飞书项目 | Bug 跟踪 |
| | Bugzilla / Mantis | 开源缺陷管理 |
| **测试管理** | TestRail | 测试用例管理 |
| | XrayJira 插件) | 测试管理+Jira集成 |
| | TestLink | 开源测试管理 |
| | PingCode | 测试用例与计划 |
| **接口测试** | Postman / Apifox | 手动接口调试 |
| | REST Assured | Java 接口自动化 |
| | pytest + requests | Python 接口自动化 |
| | JMeter | 接口压力测试 |
| **UI 自动化** | Selenium | Web 自动化 |
| | Playwright | 新一代 Web 自动化 |
| | Cypress | 前端 E2E 测试 |
| | Appium | 移动端自动化 |
| | Airtest | 移动端/游戏自动化 |
| **性能测试** | JMeter | 接口压力测试 |
| | Locust | Python 性能测试 |
| | k6 | 云原生性能测试 |
| | Gatling | Scala 性能测试 |
| | wrk / ab | 轻量 HTTP 压测 |
| **安全测试** | OWASP ZAP | Web 安全扫描 |
| | Burp Suite | 渗透测试 |
| | SQLMap | SQL 注入检测 |
| | Nmap | 端口扫描 |
| **抓包与调试** | Charles / Fiddler | HTTP 抓包 |
| | Proxyman | Mac 代理调试 |
| | Whistle | 跨平台抓包 |
| **数据库** | Navicat / DBeaver | 数据库管理 |
| | RedisInsight | Redis 可视化 |
| **CI/CD 集成** | Jenkins / GitLab CI / GitHub Actions | 自动化测试流水线 |
| | Allure | 测试报告可视化 |
---
## 四、测试流程
```
需求评审 → 测试计划 → 用例设计 → 用例评审 → 冒烟测试 → 功能测试 → 回归测试 → 验收测试 → 上线
│ │ │ │ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
提出可测 测试策略 用例库 团队评审 版本准入 执行用例 Bug验证 UAT参与 测试报告
性建议 资源排期 TestRail 对齐标准 快速验证 Bug提交 全量回归 验收签字 质量评估
```
---
## 五、测试策略分层(测试金字塔)
```
〰 ╲
E2E ╲ 少量端到端测试(全链路验证)
╱──────────────╲
集成测试 ╲ 中量集成测试模块联调、API
╱──────────────────╲
单元测试 ╲ 大量单元测试(函数/类级别)
╱──────────────────────────╲
成本 ⬆️ 速度 ⬇️
```
- **单元测试**:占 70%开发编写CI 自动运行
- **接口/集成测试**:占 20%,测试+开发共同维护
- **UI/E2E 测试**:占 10%,覆盖核心业务主流程
---
## 六、能力模型
| 级别 | 能力要求 |
|------|----------|
| **初级** | 执行功能测试,编写测试用例,提交 Bug |
| **中级** | 独立负责模块测试,编写接口自动化脚本,性能测试执行 |
| **高级** | 搭建自动化框架,主导性能/安全测试,制定测试策略 |
| **资深** | 全链路质量体系搭建,测试左移/右移,团队赋能 |
| 通用能力 | 要求 |
|----------|------|
| 测试方法论 | 黑盒/白盒/灰盒、等价类、边界值、场景法 |
| 编程能力 | Python/Java 至少一种,能写自动化脚本 |
| SQL | 复杂查询、数据验证、造数据 |
| Linux | 查看日志、部署服务、排查问题 |
| 网络协议 | HTTP/HTTPS、TCP/IP、抓包分析 |
| 业务理解 | 深度理解业务场景,设计有效用例 |
| 细心与耐心 | 不放过任何一个异常现象 |
---
## 七、产出物清单
| 产出物 | 交付节点 |
|--------|----------|
| 测试计划 | 需求评审后 |
| 测试用例 | 编码阶段 |
| 冒烟测试报告 | 提测后 |
| Bug 报告 | 测试过程中 |
| 功能测试报告 | 测试完成 |
| 性能测试报告 | 性能测试后 |
| 安全测试报告 | 安全测试后 |
| 自动化测试脚本 | 持续维护 |
| 质量月报 | 每月 |

View File

@@ -1,117 +0,0 @@
# 规划
> 所属公司:瑞来兹软件技术有限公司
> 更新日期2026-05-04
---
## 一、角色定义
规划岗位(含项目规划师、敏捷教练、技术规划等角色)负责项目的整体规划、资源调度和过程管控,确保项目按时、按质、按预算交付。
---
## 二、主要职责
### 2.1 项目规划
- 制定项目章程Project Charter明确项目范围、目标、干系人
- 编制 WBS工作分解结构拆解可执行的任务单元
- 制定项目排期(甘特图),确定关键路径与里程碑
- 评估项目风险,制定风险应对预案
- 编制项目预算,跟踪成本与投入产出比
### 2.2 资源管理
- 协调跨部门资源(研发、测试、设计、运维)
- 制定人力投入计划,避免资源冲突
- 管理外部供应商与外包团队
- 项目物料与软硬件资源的采购跟进
### 2.3 进度管控
- 主持项目例会(周会/日站会),跟踪任务进度
- 使用燃尽图Burndown Chart监控 Sprint 健康度
- 识别并解决阻塞项Blocker及时升级风险
- 变更管理:评估变更影响,走 CRChange Request流程
### 2.4 质量与交付
- 定义 DoDDefinition of Done确保交付标准
- 组织阶段评审(需求评审、设计评审、代码评审)
- 管理 UAT 测试与验收交付
- 项目结项归档文档、复盘总结Retrospective
### 2.5 敏捷实践
- 担任 Scrum Master推动敏捷转型
- 引导 Sprint Planning、Daily Standup、Sprint Review、Retro
- 度量团队敏捷成熟度,持续优化流程
- 培训团队敏捷/精益方法论
---
## 三、常用平台与工具
| 分类 | 工具 | 用途 |
|------|------|------|
| **项目管理** | Jira | Sprint 管理、任务跟踪、报表 |
| | Microsoft Project | 专业项目排期、甘特图 |
| | Asana | 轻量团队任务管理 |
| | Monday.com | 可视化项目管理 |
| | 禅道 | 国产全流程项目管理 |
| | PingCode | 研发项目管理 |
| | 飞书项目 | 飞书生态项目管理 |
| | Teambition | 钉钉生态项目管理 |
| | Worktile | 国产协作与项目管理 |
| | OmniPlan | Mac 端专业甘特图 |
| **文档与知识库** | Confluence | 项目文档 Wiki |
| | Notion | 项目知识库 |
| | 语雀 | 团队知识沉淀 |
| **进度可视化** | 甘特图Excel/Project | 里程碑计划 |
| | 燃尽图Burndown | Sprint 进度跟踪 |
| | Miro / MURAL | 线上白板、Retro 回顾 |
| **沟通协作** | 飞书 / 钉钉 / 企业微信 | 日常沟通 |
| | Slack | 国际团队 |
| | Zoom / 腾讯会议 | 远程会议 |
| **文档处理** | Office 365 / WPS | 文档、表格、演示 |
| | Google Workspace | 在线协作 |
| **时间管理** | Toggl / Clockify | 工时记录 |
| | RescueTime | 时间分析 |
---
## 四、关键流程
```
项目立项 → 需求评审 → 方案设计 → Sprint规划 → 开发实施 → 测试验证 → UAT → 上线发布 → 结项复盘
│ │ │ │ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
立项书 PRD评审 技术方案 Sprint 每日站会 Bug跟踪 验收报告 发布清单 复盘报告
评审 Backlog
```
---
## 五、能力模型
| 能力 | 要求 |
|------|------|
| 项目管理 | PMP/PRINCE2/ACP 方法论、敏捷/瀑布混合 |
| 风险管理 | 风险识别、概率评估、应对策略 |
| 沟通协调 | 干系人管理、冲突解决、向上汇报 |
| 时间管理 | 多项目并行管理、关键路径分析 |
| 工具使用 | Jira/Project/甘特图等专业工具 |
| 业务理解 | 快速理解行业背景与业务逻辑 |
| 数据分析 | 项目度量指标、报表输出 |
---
## 六、产出物清单
| 产出物 | 交付节点 |
|--------|----------|
| 项目章程 | 立项阶段 |
| WBS 工作分解 | 规划阶段 |
| 项目排期(甘特图) | 规划阶段 |
| 风险管理计划 | 规划阶段 |
| 项目周报 | 每周 |
| Sprint 燃尽图 | 每个 Sprint |
| 阶段评审报告 | 里程碑节点 |
| 变更申请单CR | 需求变更时 |
| 项目复盘报告 | 结项 |