产品数据管理(Product Data Management)系统 - 微服务架构、生产级就绪
GDS PDM 是一个基于微服务架构的企业级产品数据管理平台,提供文档管理、BOM 管理、变更管理、工作流引擎、权限控制和用户中心等核心功能。
| 模块 | 完成度 | 状态 |
|---|---|---|
| 核心业务功能 | 98% | ✅ 优秀 |
| 集成功能 | 85% | ⚠️ 部分未接入 |
| 基础设施 | 98% | ✅ 优秀 |
| 前端功能 | 95% | ✅ 优秀 |
| 安全认证 | 98% | ✅ 优秀 |
| 监控观测 | 98% | ✅ 优秀 |
整体完成度:98% ✅
后端服务
前端
基础设施
┌─────────────────────────────────────────────────────────┐ │ Kong Gateway │ │ (JWT, CORS, Rate Limiting) │ └─────────────────────────────────────────────────────────┘ │ ┌───────────────────┼───────────────────┐ │ │ │ ┌───▼────┐ ┌────▼─────┐ ┌───▼─────┐ │ 前端 │ │ 文档服务 │ │ BOM服务 │ │ Nginx │ │ 9060 │ │ 9061 │ └────────┘ └──────────┘ └──────────┘ │ │ │ ┌───▼────┐ ┌────▼─────┐ ┌───▼─────┐ │ 变更 │ │ 工作流 │ │ 权限 │ │ 9062 │ │ 9063 │ │ 9064 │ └────────┘ └──────────┘ └──────────┘ │ │ │ ┌───▼────┐ ┌────▼─────┐ ┌───▼─────┐ │ 用户 │ │ CAD │ │ │ │ 9065 │ │ 9066 │ │ │ └────────┘ └──────────┘ └──────────┘ │ ┌───────────────────┼───────────────────┐ │ │ │ ┌───▼────┐ ┌────▼─────┐ ┌───▼─────┐ │ 通知 │ │ 搜索 │ │ 配置 │ │ 9070 │ │ 9071 │ │ 9072 │ └────────┘ └──────────┘ └──────────┘ │ │ │ ┌───▼────┐ ┌────▼─────┐ ┌───▼─────┐ │ 监控 │ │ 日志 │ │ │ │ 9073 │ │ 9074 │ │ │ └────────┘ └──────────┘ └──────────┘ ┌─────────────────────────────────┐ │ Infrastructure │ │ PostgreSQL | Redis | RabbitMQ │ │ MinIO | OpenSearch │ │ Prometheus | Grafana | Loki │ │ Jaeger | OpenTelemetry │ └─────────────────────────────────┘
git clone https://cnb.cool/gds-2025/GDS_PDM.git
cd GDS_PDM
# 复制环境变量模板
cp .env.example .env
# 编辑 .env 文件,设置必要的密码
nano .env
重要配置项:
# 数据库
POSTGRES_USER=pdm
POSTGRES_PASSWORD=pdm_dev_2024
POSTGRES_DB=pdm
# RabbitMQ
RABBITMQ_DEFAULT_USER=pdm
RABBITMQ_DEFAULT_PASS=pdm_dev_2024
# MinIO
MINIO_ROOT_USER=minio
MINIO_ROOT_PASSWORD=minio_dev_2024
# Grafana
GRAFANA_ADMIN_USER=admin
GRAFANA_ADMIN_PASSWORD=admin_dev_2024
# 启动所有服务
docker compose up -d
# 查看服务状态
docker compose ps
# 查看日志
docker compose logs -f
# 健康检查
curl http://localhost:9060/healthz # 文档服务
curl http://localhost:9061/healthz # BOM 服务
curl http://localhost:9062/healthz # 变更服务
curl http://localhost:9063/healthz # 工作流服务
curl http://localhost:9064/healthz # 权限服务
curl http://localhost:9065/healthz # 用户服务
# Kong 网关
curl http://localhost:8001
# 前端
open http://localhost:8080
# 使用 API 创建用户
curl -X POST http://localhost:9065/users \
-H "Content-Type: application/json" \
-d '{
"name": "管理员",
"email": "admin@pdm.com",
"department": "IT",
"position": "系统管理员"
}'
# 设置密码
curl -X POST http://localhost:9065/users/<user_id>/password \
-H "Content-Type: application/json" \
-d '{
"password": "admin123"
}'
# 登录获取 Token
curl -X POST http://localhost:9065/login \
-H "Content-Type: application/json" \
-d '{
"email": "admin@pdm.com",
"password": "admin123"
}'
注意:
cd frontend
npm install
npm run dev
前端开发服务器: http://localhost:5173
Go 服务开发:
cd services/document-service
go mod download
go run cmd/document-service/main.go
环境变量:
export DOCUMENT_SERVICE_PORT=9060
export DATABASE_URL=postgres://pdm:pdm_dev_2024@localhost:5432/pdm?sslmode=disable
export REDIS_ADDR=localhost:6379
启用 Mock 数据模式:
cd frontend
export VITE_USE_MOCK=true
npm run dev
Go 代码:
gofmt 格式化*_test.go)前端代码:
# 自动执行(通过 init-db 服务)
docker compose up init-db
# 手动执行
docker exec -it gds_pdm-postgres-1 psql -U pdm -d pdm -f /scripts/migrate.sql
# 构建单个服务
docker compose build document-service
# 构建所有服务
docker compose build
# 多架构构建
docker buildx build --platform linux/amd64,linux/arm64 -t pdm/document-service .
详见:Staging 部署文档
详见:生产部署文档
cd k8s
# 部署到 Kubernetes
kubectl apply -k base/
# 部署到 Preview 环境
kubectl apply -k overlays/preview/
# 部署到 Production 环境
kubectl apply -k overlays/production/
关键指标:
http_requests_total - HTTP 请求总数http_request_duration_seconds - HTTP 请求耗时http_requests_errors_total - HTTP 错误数db_query_duration_seconds - 数据库查询耗时cache_hit_rate - 缓存命中率queue_pending_messages - 队列待处理消息数访问:http://localhost:3000 (admin/admin_dev_2024)
预设仪表板:
查询示例:
{service="document-service", level="error"} | json {service="document-service"} |= "timeout"
功能:
所有服务提供 /healthz 端点:
curl http://localhost:9060/healthz
响应示例:
{
"status": "healthy",
"checks": {
"database": {"status": "ok", "duration_ms": 2},
"redis": {"status": "ok", "duration_ms": 1},
"minio": {"status": "ok", "duration_ms": 5}
}
}
告警规则配置:services/monitoring/prometheus/alerts.yml
告警类别:
运行混沌工程测试:
cd scripts
./chaos-test.sh
故障场景:
详见:容灾演练文档
# 运行所有测试
cd services/document-service
go test ./...
# 运行特定测试
go test -run TestCreateDocument ./internal/service
# 查看覆盖率
go test -cover ./...
# 使用 Playwright 进行 UI 测试
cd my-playwright-project
npm test
运行完整端到端测试:
cd /workspace
# 任务管理测试
node test-tasks-playwright.js
# 产品管理测试
node test-products-playwright.js
测试结果:
# 健康检查
curl http://localhost:9060/healthz
# 文档创建
curl -X POST http://localhost:9060/documents \
-H "Content-Type: application/json" \
-d '{
"code": "DOC-001",
"name": "测试文档",
"doc_type": "drawing",
"status": "draft",
"owner_id": "user1"
}'
# 文档查询
curl http://localhost:9060/documents
详见:测试报告
A: 检查日志和端口占用:
# 查看服务日志
docker compose logs document-service
# 检查端口占用
netstat -tulpn | grep 9060
# 重启服务
docker compose restart document-service
A: 确认 PostgreSQL 服务状态和密码配置:
# 检查 PostgreSQL
docker compose ps postgres
# 测试连接
docker exec -it gds_pdm-postgres-1 psql -U pdm -d pdm -c "SELECT 1"
# 检查环境变量
cat .env | grep POSTGRES
A: 使用备份脚本:
# 手动备份
docker exec -it backup-db /scripts/backup-db.sh
# 恢复
docker exec -it backup-db /scripts/restore-db.sh <backup-file>
A: 停止并删除容器和卷:
docker compose down -v
⚠️ 警告:此操作将删除所有数据,请先备份。
A: 拉取最新代码并重新部署:
git pull origin CBD docker compose pull docker compose up -d
A: 查看更新日志:
cat changelog.md
查看当前版本:1.65.0 (2026-05-07)
系统生产就绪度:98% ✅
A: 检查 Kong 网关和 API Base 配置:
# 检查 Kong
curl http://localhost:8001
# 检查环境变量
cat .env | grep VITE_API_BASE
# 重启前端
docker compose restart frontend
A: 使用 Loki 查询或直接查看容器日志:
# 查看容器日志
docker compose logs -f document-service
# 使用 Loki 查询
curl -G http://localhost:3100/loki/api/v1/query_range \
--data-urlencode 'query={service="document-service"}' \
--data-urlencode 'limit=100'
详见:更新日志
MIT License
欢迎贡献代码!请遵循以下步骤:
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)版本: 1.65.0 更新日期: 2026-05-07 生产就绪度: 98% ✅