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
|
|
|
|
|
2026-09-24 15:28:13 +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 是否可达
|