a548623ea5
- docker-compose.yml(unified 默认入口)/ docker-compose.moldinsight.yml / docker-compose.inventory.yml 三文件一一对应三种部署模式,profiles 字段保留(--profile 旧命令双保险可用) - 修复两个既有部署隐患:moldinsight-only 场景 celery depends_on 悬空;moldinsight service image 统一为 gemold-backend:latest 与 Dockerfile.celery FROM 对齐(废弃 gemold-moldinsight tag) - gemold_network / uploads_data / html_data 固定 name 命名;inventory-only 不声明卷避免空卷;每文件内 x-base-env anchor 收敛重复 environment(SECRET_KEY/ADMIN_PASSWORD fail-fast 保留) - 文档同步 11 处:DEPLOYMENT §1.1 一键部署总表 + §2 三模式命令、LINUX_SETUP §6/§11、README、OPERATIONS §4、build.sh/.bat 提示、PORT_CONFIG / DEPLOY_PORT / STORAGE_SETUP / frontend/README - STATUS.md 补 2026-09-24 批次日志 验证:三文件 YAML 结构静态校验通过;5 个 service environment 键与拆分前逐一比对零丢失(39/39、34/34、39/39、34/34、20/20) Co-Authored-By: Claude Code <noreply@anthropic.com>
159 lines
5.3 KiB
Markdown
159 lines
5.3 KiB
Markdown
# 存储架构说明
|
||
|
||
> 文档定位:**存储分层与数据流的专题说明文档**。
|
||
> 本文主要解释 geMoldInsight 的存储架构,不作为当前部署入口或当前状态的权威说明。当前部署方式见 [../../DEPLOYMENT.md](../../DEPLOYMENT.md),当前状态见 [../../STATUS.md](../../STATUS.md),总体架构见 [../../ARCHITECTURE.md](../../ARCHITECTURE.md)。
|
||
> 其历史中的“本项目自行拉起 PostgreSQL / MinIO 并通过 `python src/main.py` 启动单体”的部分,**已不再代表当前默认部署方式**。
|
||
|
||
当前默认部署前提是:
|
||
|
||
- PostgreSQL 由服务器已有服务提供
|
||
- Redis 由服务器已有服务提供
|
||
- RustFS / MinIO 兼容对象存储由服务器已有服务提供
|
||
- 项目自身只部署:`moldinsight` / `moldinsight-celery` / `inventory`
|
||
|
||
如需查看当前部署方式,请优先参考:
|
||
- [../../../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)
|
||
|
||
---
|
||
|
||
## 架构概述
|
||
|
||
本项目采用 **RustFS(S3兼容)对象存储** + **PostgreSQL 元数据存储** 的双层存储架构。
|
||
|
||
```text
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ 应用层 (moldinsight / inventory) │
|
||
└──────────────────────┬──────────────────────────────────────┘
|
||
│
|
||
┌──────────────┴──────────────┐
|
||
│ │
|
||
┌───────▼────────┐ ┌─────────▼─────────┐
|
||
│ PostgreSQL │ │ RustFS / S3 │
|
||
│ (元数据) │ │ (对象存储) │
|
||
│ │ │ │
|
||
│ - users │ │ - stp-files │
|
||
│ - stp_files │ │ - geometry │
|
||
│ - geometry_data│ │ - mold-cavities │
|
||
│ - processing │ │ - html-files │
|
||
│ - logs │ │ - user-files │
|
||
└────────────────┘ └──────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## PostgreSQL 数据表(摘要)
|
||
|
||
### 用户管理
|
||
- `users` - 用户信息
|
||
- `roles` / `permissions` - 权限体系
|
||
|
||
### moldinsight 相关
|
||
- `stp_files` - STP 文件元数据
|
||
- `html_files` - HTML 报告元数据
|
||
- `geometry_data` - 几何分析数据
|
||
- `mold_cavity_data` - 模具型腔数据
|
||
- `feature_detections` - 特征检测结果
|
||
- `design_recommendations` - 设计建议
|
||
- `processing_tasks` - 处理任务记录
|
||
- `analysis_metrics` - 分析指标
|
||
|
||
### inventory 相关
|
||
- `products` - 产品/物料
|
||
- `product_materials` - BOM
|
||
- `inventory` - 库存
|
||
- `stock_movements` - 库存流水
|
||
- `purchase_orders` / `sales_orders` - 订单
|
||
- `finance_transactions` - 财务流水
|
||
|
||
---
|
||
|
||
## RustFS / S3 存储桶
|
||
|
||
| 存储桶名称 | 用途 | 存储内容 |
|
||
|---|---|---|
|
||
| `moldinsight-stp-files` | STP/STEP 文件 | 用户上传的原始 3D 模型 |
|
||
| `moldinsight-geometry` | 几何结果 | 几何分析 JSON |
|
||
| `moldinsight-mold-cavities` | 模具结果 | 模具设计 JSON |
|
||
| `moldinsight-html` | HTML 报告 | 生成的 HTML 报告文件 |
|
||
| `moldinsight-user-files` | 用户文件 | 其他附件/用户文件 |
|
||
|
||
---
|
||
|
||
## 当前推荐初始化方式
|
||
|
||
### 1. 准备环境变量
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
nano .env
|
||
```
|
||
|
||
确保以下变量指向**服务器上已存在的真实服务**:
|
||
|
||
```env
|
||
DB_HOST=your-db-host
|
||
DB_PORT=5432
|
||
DB_NAME=moldinsight
|
||
DB_USER=moldinsight
|
||
DB_PASSWORD=change-me
|
||
|
||
REDIS_HOST=your-redis-host
|
||
REDIS_PORT=6379
|
||
REDIS_PASSWORD=
|
||
|
||
RUSTFS_ENDPOINT=http://your-storage-host:9000
|
||
RUSTFS_ACCESS_KEY=change-me
|
||
RUSTFS_SECRET_KEY=change-me
|
||
```
|
||
|
||
### 2. 初始化数据库
|
||
|
||
当前初始化入口参考:
|
||
- [init_db.py](../../../src/shared/database/init_db.py)
|
||
|
||
### 3. 启动项目服务
|
||
|
||
当前推荐通过(按模式对应不同 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/) 入口
|
||
|
||
而不是继续使用历史单体 `python src/main.py` 作为默认方式。
|
||
|
||
---
|
||
|
||
## 监控与维护
|
||
|
||
### 对象存储
|
||
- 检查对象存储服务可达性
|
||
- 定期清理历史产物
|
||
- 配置生命周期策略
|
||
|
||
### PostgreSQL
|
||
- 定期备份
|
||
- 监控连接池与慢查询
|
||
- 保持 Alembic 迁移链一致
|
||
|
||
---
|
||
|
||
## 故障排除
|
||
|
||
### 对象存储连接失败
|
||
- 检查 `RUSTFS_ENDPOINT`
|
||
- 检查 access key / secret key
|
||
- 检查服务端口与网络策略
|
||
|
||
### 数据库连接失败
|
||
- 检查 `DB_HOST` / `DB_PORT`
|
||
- 检查数据库账号密码
|
||
- 检查防火墙与白名单
|
||
|
||
### 文件上传失败
|
||
- 检查对象存储可用性
|
||
- 检查 Celery worker 是否运行
|
||
- 检查 Redis 是否可达
|