Files
erp/wiki/infrastructure.md
iven 841766b168
Some checks failed
CI / rust-check (push) Has been cancelled
CI / rust-test (push) Has been cancelled
CI / frontend-build (push) Has been cancelled
CI / security-audit (push) Has been cancelled
fix(用户管理): 修复用户列表页面加载失败问题
修复用户列表页面加载失败导致测试超时的问题,确保页面元素正确渲染
2026-04-19 08:46:28 +08:00

139 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# infrastructure (开发环境)
## 设计思想
开发环境在 **Windows** 宿主机直接运行所有服务:
- PostgreSQL 通过 Windows 原生安装运行
- Redis 7+ 通过 Windows 原生安装运行(可选,缺省时限流降级为 fail-open
- 后端 Rust 服务通过 `cargo run` 快速重启
- 前端 Vite 热更新直接在宿主机
- PowerShell 脚本 (`dev.ps1`) 提供一键启动/停止
> Docker Compose 配置保留在 `docker/` 目录下,可供需要容器化环境的场景使用,但日常开发不依赖 Docker。
## 本机环境实际配置
> **重要:以下为当前开发机的实际配置,以本文件为准。**
| 组件 | 安装路径 | 配置 |
|------|---------|------|
| PostgreSQL 18 | `D:\postgreSQL\` | 服务名 `postgresql-x64-18`, 端口 5432 |
| Redis | 云端实例 | `redis://:redis_KBCYJk@129.204.154.246:6379`, 限流中间件已正常工作 |
| Rust | stable (cargo in PATH) | workspace 根目录编译 |
| Node.js + pnpm | in PATH | apps/web/ |
### 数据库连接
```
用户: postgres
密码: 123123
数据库: erp
连接串: postgres://postgres:123123@localhost:5432/erp
```
psql 路径: `D:\postgreSQL\bin\psql.exe -U postgres -h localhost -d erp`
### 后端启动命令
后端**必须**从 `crates/erp-server/` 目录启动(需要读取 `config/default.toml`),或通过环境变量覆盖:
```powershell
# 方式一:从 crates/erp-server 目录启动(使用 default.toml + 环境变量覆盖)
cd crates/erp-server
$env:ERP__DATABASE__URL = "postgres://postgres:123123@localhost:5432/erp"
$env:ERP__JWT__SECRET = "dev-secret-key-change-in-prod"
$env:ERP__AUTH__SUPER_ADMIN_PASSWORD = "Admin@2026"
cargo run -p erp-server
# 方式二:一键启动脚本(推荐)
.\dev.ps1
```
### 登录凭据
```
用户名: admin
密码: Admin@2026
```
## 服务端口
| 服务 | 端口 | 用途 |
|------|------|------|
| PostgreSQL 18 | 5432 | 主数据库 |
| Redis 7+ | 6379 (云端) | 缓存 + 限流 |
| erp-server (Axum) | 3000 | 后端 API |
| Vite dev server | 5174 | 前端 SPA固定端口--strictPort |
### 连接信息(配置文件版本)
```
PostgreSQL: postgres://postgres:123123@localhost:5432/erp
Redis: redis://:redis_KBCYJk@129.204.154.246:6379 (云端实例)
```
## 一键启动
```powershell
.\dev.ps1 # 启动后端 + 前端(自动清理旧进程 5174-5189
.\dev.ps1 -Status # 查看端口状态
.\dev.ps1 -Stop # 停止所有服务
.\dev.ps1 -Restart # 重启所有服务
```
> `dev.ps1` 会在启动前清理端口 5174-5189 范围内所有残留进程,并使用 `--strictPort` 确保 Vite 固定在 5174 端口。
### 环境变量
必须通过环境变量设置的值(`default.toml` 中为占位符):
| 变量 | 说明 | 开发值 |
|------|------|--------|
| `ERP__DATABASE__URL` | 数据库连接串 | `postgres://postgres:123123@localhost:5432/erp` |
| `ERP__JWT__SECRET` | JWT 签名密钥 | 自定义字符串 |
| `ERP__AUTH__SUPER_ADMIN_PASSWORD` | admin 初始密码 | `Admin@2026` |
| `ERP__REDIS__URL` | Redis 连接串 | `redis://:redis_KBCYJk@129.204.154.246:6379` |
> 所有四个变量在 `default.toml` 中都是 `__MUST_SET_VIA_ENV__` 占位符,**必须**通过环境变量设置,否则服务拒绝启动。
## 关联模块
- **[[erp-server]]** — 连接 PostgreSQL 和 Redis
- **[[database]]** — 迁移在 PostgreSQL 中执行
- **[[frontend]]** — Vite 代理 API 到后端
- **[[testing]]** — 测试环境详细指南
## 关键文件
| 文件 | 职责 |
|------|------|
| `dev.ps1` | 一键启动/停止脚本(自动清理端口 5174-5189 |
| `docker/docker-compose.yml` | 可选的 Docker Compose 配置 |
| `crates/erp-server/config/default.toml` | 默认配置模板(密钥为占位符) |
| `D:\postgreSQL\bin\psql.exe` | PostgreSQL 客户端 |
## 常用命令
```powershell
# 一键启动(推荐)
.\dev.ps1
# 手动启动后端(从 crates/erp-server 目录)
cd crates/erp-server
$env:ERP__DATABASE__URL="postgres://postgres:123123@localhost:5432/erp"
$env:ERP__JWT__SECRET="dev-secret"
$env:ERP__AUTH__SUPER_ADMIN_PASSWORD="Admin@2026"
cargo run -p erp-server
# 手动启动前端(固定端口)
cd apps/web && pnpm dev -- --strictPort
# 连接数据库
D:\postgreSQL\bin\psql.exe -U postgres -h localhost -d erp
# 健康检查
curl http://localhost:3000/api/v1/health
# 登录测试
curl -s http://localhost:3000/api/v1/auth/login -H "Content-Type: application/json" -d '{"username":"admin","password":"Admin@2026"}'
```