Add V2 local dev compose

This commit is contained in:
2026-07-06 17:45:24 +08:00
parent e9f3db9ab2
commit 96742de07b
10 changed files with 177 additions and 2 deletions

View File

@@ -27,3 +27,20 @@
- 给用户、团队、交接和评审看的文档统一使用中文。 - 给用户、团队、交接和评审看的文档统一使用中文。
- `extracted/` 里的机器抽取文档可以保留原始语言或工程化表达,优先服务开发检索。 - `extracted/` 里的机器抽取文档可以保留原始语言或工程化表达,优先服务开发检索。
- 旧代码只在领域边界匹配时复用,不把旧的“答疑资产审核模型”硬套到新的“知识库权限问答模型”上。 - 旧代码只在领域边界匹配时复用,不把旧的“答疑资产审核模型”硬套到新的“知识库权限问答模型”上。
## 本地开发启动
阶段二已经提供本地开发编排:
```bash
cd ai_knowledge_base_v2
docker compose -f docker-compose.dev.yml up --build
```
默认访问地址:
- 用户端 H5`http://127.0.0.1:5173/`
- 后端 API`http://127.0.0.1:8100/api/health`
- MySQL`127.0.0.1:3307`
开发阶段 mock 短信验证码为 `123456`

View File

@@ -0,0 +1,7 @@
.env
.venv/
__pycache__/
*.py[cod]
.pytest_cache/
.mypy_cache/
.ruff_cache/

View File

@@ -0,0 +1,15 @@
FROM python:3.12-slim
WORKDIR /app
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8100
CMD ["sh", "-c", "alembic upgrade head && uvicorn app.main:app --host 0.0.0.0 --port 8100"]

View File

@@ -26,6 +26,15 @@
## 本地启动 ## 本地启动
方式一:使用 V2 统一编排。
```bash
cd ai_knowledge_base_v2
docker compose -f docker-compose.dev.yml up --build
```
方式二:本地 Python 直接启动。
```bash ```bash
cd ai_knowledge_base_v2/apps/backend cd ai_knowledge_base_v2/apps/backend
python -m venv .venv python -m venv .venv
@@ -39,7 +48,5 @@ uvicorn app.main:app --reload --host 127.0.0.1 --port 8100
## 下一步 ## 下一步
- 补 Alembic 初始迁移脚本。
- 补聊天会话和消息接口。
- 补管理员登录接口。 - 补管理员登录接口。
- 接入 Redis 替换内存短信验证码和 Token 黑名单。 - 接入 Redis 替换内存短信验证码和 Token 黑名单。

View File

@@ -0,0 +1,5 @@
node_modules/
dist/
.env
.env.local
*.tsbuildinfo

View File

@@ -0,0 +1,12 @@
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
EXPOSE 5173
CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0", "--port", "5173"]

View File

@@ -15,6 +15,15 @@
## 本地启动 ## 本地启动
方式一:使用 V2 统一编排。
```bash
cd ai_knowledge_base_v2
docker compose -f docker-compose.dev.yml up --build
```
方式二:本地 Node 直接启动。
```bash ```bash
cd ai_knowledge_base_v2/apps/user-client cd ai_knowledge_base_v2/apps/user-client
npm install npm install

View File

@@ -0,0 +1,48 @@
# 阶段二记录:本地开发编排
日期2026-07-06
## 本次目标
补齐 V2 本地开发编排,让 MySQL、后端和用户端 H5 可以一起启动,降低后续开发和测试的环境成本。
## 已完成
- 新增 `ai_knowledge_base_v2/docker-compose.dev.yml`
- 新增 MySQL 8.4 服务:
- 容器名:`ai_kb_v2_mysql`
- 数据库:`ai_knowledge_base_v2`
- 用户:`ai_kb`
- 本机端口:`3307`
- 新增后端 Dockerfile
- 启动前执行 `alembic upgrade head`
- 后端端口:`8100`
- 新增用户端 Dockerfile
- Vue H5 dev server 端口:`5173`
- 更新 V2 根目录、后端、用户端 README。
## 默认访问地址
- 用户端 H5`http://127.0.0.1:5173/`
- 后端健康检查:`http://127.0.0.1:8100/api/health`
- MySQL`127.0.0.1:3307`
## 使用方式
```bash
cd ai_knowledge_base_v2
docker compose -f docker-compose.dev.yml up --build
```
## 当前边界
- 当前编排面向本地开发,不是生产部署方案。
- MySQL root 密码和业务密码都是本地开发默认值,生产环境必须更换。
- 后端仍使用 mock 短信验证码 `123456`
- 真实飞书和真实大模型尚未接入。
## 验证记录
- `docker compose -f docker-compose.dev.yml config --quiet` 已通过。
- `git diff --check` 已通过。
- 尝试执行 `docker compose -f docker-compose.dev.yml build backend user-client`Dockerfile 和构建上下文已正常进入构建流程;由于当前环境拉取 Docker Hub 基础镜像速度过慢,等待数分钟后人工中断,未判定为代码构建失败。

View File

@@ -27,3 +27,4 @@
| `2026-07-06-decision-register.md` | 开发决策登记表,集中记录用户明确决策和默认工程决策。 | | `2026-07-06-decision-register.md` | 开发决策登记表,集中记录用户明确决策和默认工程决策。 |
| `2026-07-06-phase2-backend-foundation.md` | 阶段二后端基础工程第一批记录。 | | `2026-07-06-phase2-backend-foundation.md` | 阶段二后端基础工程第一批记录。 |
| `2026-07-06-phase2-user-client.md` | 阶段二用户端 Vue 3 H5 第一批记录。 | | `2026-07-06-phase2-user-client.md` | 阶段二用户端 Vue 3 H5 第一批记录。 |
| `2026-07-06-phase2-dev-compose.md` | 阶段二本地开发编排记录。 |

View File

@@ -0,0 +1,54 @@
services:
mysql:
image: mysql:8.4
container_name: ai_kb_v2_mysql
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: ai_knowledge_base_v2
MYSQL_USER: ai_kb
MYSQL_PASSWORD: ai_kb
TZ: Asia/Shanghai
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
ports:
- "3307:3306"
volumes:
- ai_kb_v2_mysql_data:/var/lib/mysql
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uai_kb -pai_kb --silent"]
interval: 5s
timeout: 5s
retries: 20
backend:
build:
context: ./apps/backend
container_name: ai_kb_v2_backend
environment:
APP_ENV: docker
DEBUG: "true"
DATABASE_URL: mysql+pymysql://ai_kb:ai_kb@mysql:3306/ai_knowledge_base_v2?charset=utf8mb4
JWT_SECRET_KEY: local-dev-secret-change-before-production
MOCK_SMS_ENABLED: "true"
MOCK_SMS_CODE: "123456"
AUTO_CREATE_TABLES: "false"
ports:
- "8100:8100"
depends_on:
mysql:
condition: service_healthy
user-client:
build:
context: ./apps/user-client
container_name: ai_kb_v2_user_client
environment:
VITE_API_BASE_URL: http://127.0.0.1:8100/api
ports:
- "5173:5173"
depends_on:
- backend
volumes:
ai_kb_v2_mysql_data: