Files
Mdeical_Sur_Report/docs/installation.md
admin b346b7e194 Add HTTPS demo entry for microphone access
- Add a self-signed HTTPS Nginx entrypoint on Docker port 4443 so browser microphone APIs can run in demo mode.

- Keep the existing HTTP port 4002 unchanged while exposing container port 443 and generating the demo certificate during image build.

- Update CORS defaults and Compose environment for the HTTPS frontend origin.

- Clarify the report editor microphone message with localhost, HTTPS, and browser trusted-origin demo options.

- Document the browser HTTP microphone limitation, HTTPS demo URL, and Chrome/Edge insecure-origin workaround in README and docs.
2026-05-02 03:34:31 +08:00

233 lines
5.6 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.
# 安装与初始设置
本文档面向第一次接手项目的开发者,目标是把系统从源码启动到可登录、可保存报告。部署细节见 [部署运行](./deployment.md),业务和架构背景见 [文档入口](./README.md)。
## 前置要求
- Node.js 20 或更高版本。
- npm。
- Docker 与 Docker Compose用于一键启动 PostgreSQL、API 和前端。
- Linux/macOS shell 环境Windows 建议使用 WSL。
确认工具可用:
```bash
node --version
npm --version
docker --version
docker compose version
```
## 端口规划
本项目已避开常见默认端口:
| 用途 | 本地/宿主机端口 | 说明 |
| --- | --- | --- |
| Vite 前端开发服务 | `3001` | 仅 `npm run dev` 使用 |
| NestJS API 本地服务 | `3100` | `npm run server:dev` 默认监听 |
| Docker API 暴露端口 | `3002` | 宿主机访问 Compose API |
| Docker 前端入口 | `4002` | 推荐的整套系统访问入口 |
| Docker 前端 HTTPS 演示入口 | `4443` | 自签名证书入口,推荐用于麦克风听写 |
| Docker PostgreSQL | `5433` | 宿主机访问 Compose 数据库 |
如果这些端口被占用,优先修改 `.env``docker-compose.yaml` 和对应文档,避免回退到 `3000` 等默认端口。
## 推荐方式Docker 一键启动
第一次启动:
```bash
npm install
docker compose up -d --build
```
启动后访问:
```text
http://localhost:4002
https://localhost:4443
```
健康检查:
```bash
curl http://localhost:4002/api/health
curl http://localhost:3002/api/health
```
当前 Compose 会启动:
- `tuwen_web`Nginx 托管前端,宿主机端口 `4002`;同时提供自签名 HTTPS 演示入口 `4443`
- `tuwen_api`NestJS API容器内监听 `3100`,宿主机端口 `3002`
- `tuwen_db`PostgreSQL 16宿主机端口 `5433`
查看状态:
```bash
docker compose ps
```
停止:
```bash
docker compose down
```
连数据卷一起清理会删除数据库和上传文件,只在确认不需要当前数据时使用:
```bash
docker compose down -v
```
## 本地开发方式
如果希望前端热更新、后端直接跑在本机,可以按下面启动。
安装依赖并创建环境变量:
```bash
npm install
cp .env.example .env
```
先准备 PostgreSQL。可以复用 Compose 的数据库:
```bash
docker compose up -d db
```
生成 Prisma Client、执行迁移和 seed
```bash
npm run prisma:generate
npm run prisma:migrate
npm run prisma:seed
```
启动后端 API
```bash
npm run server:dev
```
API 默认地址:
```text
http://localhost:3100/api/health
```
另开一个终端启动前端开发服务:
```bash
npm run dev
```
前端开发地址:
```text
http://localhost:3001
```
开发模式下Vite 会把 `/api` 代理到 `VITE_API_PROXY_TARGET`,默认是 `http://localhost:3100`。如果你想用本机 Vite 前端连接 Docker Compose API`.env` 中的目标改成:
```bash
VITE_API_PROXY_TARGET="http://localhost:3002"
```
## 默认账号
默认数据由后端 seed 写入:
| 用户ID | 密码 | 角色 |
| --- | --- | --- |
| `admin` | `123456` | 超级管理员 |
| `manager` | `123456` | 管理员 |
| `0001` | `123456` | 医生 |
登录后建议先进入“系统设置”确认 AI Provider、讯飞语音配置、默认模板和抽帧策略。当前 demo mode 已内置演示用 AI 与语音配置;正式生产部署前必须替换或移除这些演示凭据,后续通过后端 Settings API 或正式密钥管理流程维护。
## 初次验收
完成启动后建议按顺序验证:
1. 打开 `http://localhost:4002`、语音演示地址 `https://localhost:4443` 或本地开发地址 `http://localhost:3001`
2. 使用 `admin / 123456` 登录。
3. 进入工作台,确认统计卡片能正常加载。
4. 进入“系统设置”,确认全局配置可保存。
5. 使用医生账号 `0001 / 123456` 新建报告并保存草稿。
6. 进入“报告管理”,确认能看到刚保存的报告。
命令行验证:
```bash
npm run lint
npm run test
npm run build
```
后端、权限或关键流程变更后再运行:
```bash
npm run server:build
npm run test:e2e
```
## 常见问题
### 保存草稿提示后端不可用
先检查当前访问入口和 API 健康检查:
```bash
curl http://localhost:4002/api/health
curl http://localhost:3002/api/health
docker compose ps
```
Docker 方式应访问 `http://localhost:4002`。本地开发方式应确保 `npm run server:dev` 正在运行,并且 `VITE_API_PROXY_TARGET` 指向 `http://localhost:3100`
### 端口被占用
检查占用:
```bash
ss -ltnp | grep -E ':3001|:3002|:3100|:4002|:4443|:5433'
```
本项目不应使用 `3000` 作为默认 API 端口。如果必须改端口,同步修改 `.env``docker-compose.yaml``vite.config.ts` 或 Nginx upstream并更新文档。
### 数据库连接失败
如果使用 Compose 数据库,确认 `tuwen_db` 正常运行:
```bash
docker compose ps db
```
本地默认连接串在 `.env.example` 中:
```text
postgresql://surclaw:surclaw_dev_password@localhost:5433/surclaw?schema=public
```
修改数据库配置后重新运行:
```bash
npm run prisma:generate
npm run prisma:migrate
npm run prisma:seed
```
### AI 或讯飞提示未配置
AI 对话和讯飞语音均通过后端代理读取系统设置。使用超级管理员进入“系统设置”,填写并保存 AI Provider、模型名称和讯飞 APPID/APIKey/APISecret。普通用户读取设置时不会拿到真实密钥。
### 前端页面像旧版本
Docker 重建后浏览器可能仍缓存旧 bundle。先强制刷新页面仍异常时重新构建
```bash
docker compose up -d --build
```