Files
geMoldInsight/docs/topics/storage/STORAGE_SETUP.md
T

159 lines
5.3 KiB
Markdown
Raw Normal View History

2026-02-11 22:40:35 +08:00
# 存储架构说明
2026-09-01 18:05:18 +08:00
> 文档定位:**存储分层与数据流的专题说明文档**。
> 本文主要解释 geMoldInsight 的存储架构,不作为当前部署入口或当前状态的权威说明。当前部署方式见 [../../DEPLOYMENT.md](../../DEPLOYMENT.md),当前状态见 [../../STATUS.md](../../STATUS.md),总体架构见 [../../ARCHITECTURE.md](../../ARCHITECTURE.md)。
> 其历史中的“本项目自行拉起 PostgreSQL / MinIO 并通过 `python src/main.py` 启动单体”的部分,**已不再代表当前默认部署方式**。
2026-08-27 14:53:22 +08:00
当前默认部署前提是:
- PostgreSQL 由服务器已有服务提供
- Redis 由服务器已有服务提供
- RustFS / MinIO 兼容对象存储由服务器已有服务提供
- 项目自身只部署:`moldinsight` / `moldinsight-celery` / `inventory`
如需查看当前部署方式,请优先参考:
2026-09-01 18:05:18 +08:00
- [../../../README.md](../../../README.md)
- [../../deployment/LINUX_SETUP.md](../../deployment/LINUX_SETUP.md)
- [../../deployment/DEPLOY_PORT.md](../../deployment/DEPLOY_PORT.md)
- [../../archive/BACKEND_MODULARIZATION_BLUEPRINT.md](../../archive/BACKEND_MODULARIZATION_BLUEPRINT.md)
2026-08-27 14:53:22 +08:00
---
2026-02-11 22:40:35 +08:00
## 架构概述
2026-08-27 14:53:22 +08:00
本项目采用 **RustFS(S3兼容)对象存储** + **PostgreSQL 元数据存储** 的双层存储架构。
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
```text
2026-02-11 22:40:35 +08:00
┌─────────────────────────────────────────────────────────────┐
2026-09-02 18:18:42 +08:00
│ 应用层 (moldinsight / inventory) │
2026-02-11 22:40:35 +08:00
└──────────────────────┬──────────────────────────────────────┘
│
┌──────────────┴──────────────┐
│ │
┌───────▼────────┐ ┌─────────▼─────────┐
2026-08-27 14:53:22 +08:00
│ PostgreSQL │ │ RustFS / S3 │
2026-02-11 22:40:35 +08:00
│ (元数据) │ │ (对象存储) │
│ │ │ │
│ - users │ │ - stp-files │
│ - stp_files │ │ - geometry │
│ - geometry_data│ │ - mold-cavities │
2026-08-27 14:53:22 +08:00
│ - processing │ │ - html-files │
│ - logs │ │ - user-files │
2026-02-11 22:40:35 +08:00
└────────────────┘ └──────────────────┘
```
2026-08-27 14:53:22 +08:00
---
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
## PostgreSQL 数据表(摘要)
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
### 用户管理
- `users` - 用户信息
- `roles` / `permissions` - 权限体系
2026-09-02 18:18:42 +08:00
### moldinsight 相关
2026-08-27 14:53:22 +08:00
- `stp_files` - STP 文件元数据
- `html_files` - HTML 报告元数据
- `geometry_data` - 几何分析数据
- `mold_cavity_data` - 模具型腔数据
- `feature_detections` - 特征检测结果
- `design_recommendations` - 设计建议
2026-02-11 22:40:35 +08:00
- `processing_tasks` - 处理任务记录
2026-08-27 14:53:22 +08:00
- `analysis_metrics` - 分析指标
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
### inventory 相关
- `products` - 产品/物料
- `product_materials` - BOM
- `inventory` - 库存
- `stock_movements` - 库存流水
- `purchase_orders` / `sales_orders` - 订单
- `finance_transactions` - 财务流水
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
---
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
## RustFS / S3 存储桶
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
| 存储桶名称 | 用途 | 存储内容 |
|---|---|---|
| `moldinsight-stp-files` | STP/STEP 文件 | 用户上传的原始 3D 模型 |
| `moldinsight-geometry` | 几何结果 | 几何分析 JSON |
| `moldinsight-mold-cavities` | 模具结果 | 模具设计 JSON |
| `moldinsight-html` | HTML 报告 | 生成的 HTML 报告文件 |
| `moldinsight-user-files` | 用户文件 | 其他附件/用户文件 |
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
---
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
## 当前推荐初始化方式
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
### 1. 准备环境变量
2026-02-11 22:40:35 +08:00
```bash
cp .env.example .env
nano .env
```
2026-08-27 14:53:22 +08:00
确保以下变量指向**服务器上已存在的真实服务**:
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
```env
DB_HOST=your-db-host
DB_PORT=5432
DB_NAME=moldinsight
DB_USER=moldinsight
DB_PASSWORD=change-me
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
REDIS_HOST=your-redis-host
REDIS_PORT=6379
REDIS_PASSWORD=
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
RUSTFS_ENDPOINT=http://your-storage-host:9000
RUSTFS_ACCESS_KEY=change-me
RUSTFS_SECRET_KEY=change-me
2026-02-11 22:40:35 +08:00
```
2026-08-27 14:53:22 +08:00
### 2. 初始化数据库
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
当前初始化入口参考:
2026-09-01 18:05:18 +08:00
- [init_db.py](../../../src/shared/database/init_db.py)
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
### 3. 启动项目服务
2026-02-11 22:40:35 +08:00
当前推荐通过(按模式对应不同 compose 文件):
- `docker compose up -d`([docker-compose.yml](../../../docker-compose.yml),默认 unified)
- `docker compose -f docker-compose.moldinsight.yml up -d`
- `docker compose -f docker-compose.inventory.yml up -d`
- 或直接 [src/entrypoints/](../../../src/entrypoints/) 入口
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
而不是继续使用历史单体 `python src/main.py` 作为默认方式。
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
---
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
## 监控与维护
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
### 对象存储
- 检查对象存储服务可达性
- 定期清理历史产物
- 配置生命周期策略
2026-02-11 22:40:35 +08:00
### PostgreSQL
2026-08-27 14:53:22 +08:00
- 定期备份
- 监控连接池与慢查询
- 保持 Alembic 迁移链一致
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
---
2026-02-11 22:40:35 +08:00
## 故障排除
2026-08-27 14:53:22 +08:00
### 对象存储连接失败
- 检查 `RUSTFS_ENDPOINT`
- 检查 access key / secret key
- 检查服务端口与网络策略
2026-02-11 22:40:35 +08:00
### 数据库连接失败
2026-08-27 14:53:22 +08:00
- 检查 `DB_HOST` / `DB_PORT`
- 检查数据库账号密码
- 检查防火墙与白名单
2026-02-11 22:40:35 +08:00
### 文件上传失败
2026-08-27 14:53:22 +08:00
- 检查对象存储可用性
- 检查 Celery worker 是否运行
- 检查 Redis 是否可达