feat(health): 添加 erp-health 健康管理模块骨架
新建 erp-health 原生 Rust crate,覆盖设计规格中定义的 5 大业务域: - 16 个 SeaORM Entity(患者/家属/标签/医生/健康档案/体征/化验单/预约/排班/随访/咨询等) - 16 表数据库迁移(含索引、外键、默认值、可回滚) - 40+ API 路由骨架(患者管理/健康数据/预约排班/随访/咨询/医生管理) - 12 个权限声明(health.patient/health-data/appointment/follow-up/consultation/doctor 各 .list/.manage) - DTO / Service / Handler / Event 四层架构,Service 使用 todo!() 占位 - erp-server 集成:模块注册 + AppState FromRef 桥接 + 路由挂载 同步更新 CLAUDE.md 项目进度、wiki 知识库、设计规格文档。
This commit is contained in:
@@ -1,138 +1,104 @@
|
||||
# infrastructure (开发环境)
|
||||
---
|
||||
title: 开发环境
|
||||
updated: 2026-04-23
|
||||
status: stable
|
||||
tags: [infrastructure, dev-environment, windows, postgresql]
|
||||
---
|
||||
|
||||
## 设计思想
|
||||
# 开发环境
|
||||
|
||||
开发环境在 **Windows** 宿主机直接运行所有服务:
|
||||
- PostgreSQL 通过 Windows 原生安装运行
|
||||
- Redis 7+ 通过 Windows 原生安装运行(可选,缺省时限流降级为 fail-open)
|
||||
- 后端 Rust 服务通过 `cargo run` 快速重启
|
||||
- 前端 Vite 热更新直接在宿主机
|
||||
- PowerShell 脚本 (`dev.ps1`) 提供一键启动/停止
|
||||
> 从 [[index]] 导航。关联: [[erp-server]] [[database]] [[frontend]] [[testing]]
|
||||
>
|
||||
> **本页是连接信息、启动命令、登录凭据的单一真相源。** 其他页面引用此处。
|
||||
|
||||
> Docker Compose 配置保留在 `docker/` 目录下,可供需要容器化环境的场景使用,但日常开发不依赖 Docker。
|
||||
## 1. 设计决策
|
||||
|
||||
## 本机环境实际配置
|
||||
- **Windows 原生运行** — PostgreSQL/Redis/Rust/Node 直接在宿主机,不用 Docker
|
||||
- **一键启动** — `dev.ps1` 管理前后端生命周期
|
||||
- **环境变量优先** — 敏感配置通过 `ERP__` 前缀环境变量覆盖 TOML
|
||||
|
||||
> **重要:以下为当前开发机的实际配置,以本文件为准。**
|
||||
## 2. 关键文件 + 连接信息
|
||||
|
||||
| 组件 | 安装路径 | 配置 |
|
||||
|------|---------|------|
|
||||
| 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/ |
|
||||
### 核心文件
|
||||
|
||||
### 数据库连接
|
||||
| 文件 | 职责 |
|
||||
|------|------|
|
||||
| `dev.ps1` | 一键启动/停止(自动清理端口 5174-5189) |
|
||||
| `crates/erp-server/config/default.toml` | 默认配置模板 |
|
||||
| `docker/docker-compose.yml` | 可选 Docker 配置 |
|
||||
|
||||
### 服务连接
|
||||
|
||||
| 服务 | 地址 | 用途 |
|
||||
|------|------|------|
|
||||
| PostgreSQL 18 | `postgres://postgres:123123@localhost:5432/erp` | 主数据库 |
|
||||
| Redis 7 | `redis://:redis_KBCYJk@129.204.154.246:6379` (云端) | 缓存 + 限流 |
|
||||
| 后端 API | `http://localhost:3000/api/v1` | Axum 服务 |
|
||||
| 前端 SPA | `http://localhost:5174` | Vite 开发服务器 |
|
||||
|
||||
### 登录凭据
|
||||
|
||||
```
|
||||
用户: postgres
|
||||
密码: 123123
|
||||
数据库: erp
|
||||
连接串: postgres://postgres:123123@localhost:5432/erp
|
||||
用户名: admin 密码: Admin@2026
|
||||
```
|
||||
|
||||
psql 路径: `D:\postgreSQL\bin\psql.exe -U postgres -h localhost -d erp`
|
||||
psql: `D:\postgreSQL\bin\psql.exe -U postgres -h localhost -d erp`
|
||||
|
||||
### 后端启动命令
|
||||
### 必须设置的环境变量
|
||||
|
||||
后端**必须**从 `crates/erp-server/` 目录启动(需要读取 `config/default.toml`),或通过环境变量覆盖:
|
||||
| 变量 | 开发值 |
|
||||
|------|--------|
|
||||
| `ERP__DATABASE__URL` | `postgres://postgres:123123@localhost:5432/erp` |
|
||||
| `ERP__JWT__SECRET` | `dev-secret-key-change-in-prod` |
|
||||
| `ERP__AUTH__SUPER_ADMIN_PASSWORD` | `Admin@2026` |
|
||||
| `ERP__REDIS__URL` | `redis://:redis_KBCYJk@129.204.154.246:6379` |
|
||||
|
||||
> 所有四个在 `default.toml` 中为 `__MUST_SET_VIA_ENV__` 占位符
|
||||
|
||||
### 集成契约
|
||||
|
||||
| 方向 | 模块 | 触发时机 |
|
||||
|------|------|---------|
|
||||
| 提供 → | [[erp-server]] | 数据库/Redis 连接 |
|
||||
| 提供 → | [[frontend]] | Vite 代理目标 |
|
||||
| 提供 → | [[testing]] | 测试环境配置 |
|
||||
|
||||
## 3. 代码逻辑
|
||||
|
||||
### 一键启动(推荐)
|
||||
|
||||
```powershell
|
||||
# 方式一:从 crates/erp-server 目录启动(使用 default.toml + 环境变量覆盖)
|
||||
.\dev.ps1 # 启动后端 + 前端
|
||||
.\dev.ps1 -Status # 查看端口状态
|
||||
.\dev.ps1 -Stop # 停止所有服务
|
||||
.\dev.ps1 -Restart # 重启所有服务
|
||||
```
|
||||
|
||||
### 手动启动
|
||||
|
||||
```powershell
|
||||
# 后端(必须从 crates/erp-server 目录)
|
||||
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
|
||||
# 前端
|
||||
cd apps/web && pnpm install && pnpm dev
|
||||
```
|
||||
|
||||
### 登录凭据
|
||||
⚡ **不变量**: 后端必须从 `crates/erp-server/` 目录启动或通过环境变量覆盖所有配置
|
||||
⚡ **不变量**: Vite 固定端口 5174(`--strictPort`),前端代理 `/api` → 后端 3000
|
||||
|
||||
```
|
||||
用户名: admin
|
||||
密码: Admin@2026
|
||||
```
|
||||
## 4. 活跃问题 + 陷阱
|
||||
|
||||
## 服务端口
|
||||
⚠️ Redis 不可达时限流自动降级为 fail-open(放行所有请求)
|
||||
⚠️ Docker Compose 配置保留在 `docker/` 下但日常开发不依赖
|
||||
⚠️ 首次 `cargo run` 编译整个 workspace 较慢(含 wasmtime),后续增量快
|
||||
|
||||
| 服务 | 端口 | 用途 |
|
||||
|------|------|------|
|
||||
| PostgreSQL 18 | 5432 | 主数据库 |
|
||||
| Redis 7+ | 6379 (云端) | 缓存 + 限流 |
|
||||
| erp-server (Axum) | 3000 | 后端 API |
|
||||
| Vite dev server | 5174 | 前端 SPA(固定端口,--strictPort) |
|
||||
## 5. 变更记录
|
||||
|
||||
### 连接信息(配置文件版本)
|
||||
```
|
||||
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"}'
|
||||
```
|
||||
| 2026-04-23 | 重构为 5 节结构,确立为连接信息的单一真相源 |
|
||||
|
||||
Reference in New Issue
Block a user