# saas **Repository Path**: boranli_admin/saas ## Basic Information - **Project Name**: saas - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-06 - **Last Updated**: 2026-07-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SaaS Platform Demo 这是一个可部署演示的多租户 SaaS 项目,重点用于验证常见中间件是否真正参与业务链路,而不是只启动容器。 当前核心链路: - PostgreSQL:保存租户、用户、商品、上传文件记录。 - Redis:缓存 Dashboard 商品统计,并保存 WebSocket 在线用户。 - RabbitMQ:商品创建、更新、删除和通知发送都会发布业务事件。 - WebSocket:ws-gateway 消费 RabbitMQ 业务事件并实时推送到 Dashboard。 - MinIO:商品图片和文件上传进入 MinIO,前端通过 upload-service 代理读取文件。 ## 快速部署 本地打包: ```powershell cd D:\workspace\saas .\scripts\pack.ps1 scp D:\workspace\saas-platform.tar.gz root@SERVER_IP:/opt/ ``` 服务器部署: ```bash cd /opt rm -rf saas tar xzf saas-platform.tar.gz cd saas # 如果服务器磁盘紧张,先清理旧 Docker 镜像和中间层 docker system prune -af docker compose down docker compose up -d --build ``` 查看状态: ```bash docker compose ps docker compose logs --tail=100 product-service ws-gateway upload-service frontend ``` ## 访问地址 - 前端:http://SERVER_IP:3000 - RabbitMQ 控制台:http://SERVER_IP:15672 - MinIO 控制台:http://SERVER_IP:9001 默认账号: ```text SaaS 登录: tenant domain: demo email: admin@demo.com password: demo123456 RabbitMQ: user: saas password: saas_password MinIO: user: minioadmin password: minioadmin ``` ## 一键验收 部署后运行: ```bash cd /opt/saas chmod +x scripts/verify-deploy.sh BASE_URL=http://SERVER_IP:3000 ./scripts/verify-deploy.sh ``` 脚本会验证: - 各服务 health endpoint 正常。 - demo 账号可以登录。 - Dashboard 商品统计可读取。 - 创建商品后 PostgreSQL 有数据。 - 更新商品接口可用。 - 商品/通知事件进入 RabbitMQ,并且 ws-gateway 正在消费 `business_event`。 - Redis 出现 Dashboard 缓存 key。 - 文件上传进入 MinIO,并可通过前端入口下载。 如果脚本出现 `[FAIL]`,把完整输出和对应服务日志发给排查: ```bash docker compose logs --tail=200 product-service ws-gateway upload-service frontend ``` ## 页面演示流程 1. 打开 `http://SERVER_IP:3000`。 2. 使用 `demo / admin@demo.com / demo123456` 登录。 3. 打开 Dashboard,保持页面不关。 4. 打开 Products。 5. 新增商品并选择图片。 6. 返回 Dashboard,实时事件流应出现 `product.created`。 7. 在 Products 中调整库存或上下架,Dashboard 应收到更新事件。 8. 在 Dashboard 点击 `Send to RabbitMQ`,实时事件流应收到通知。 9. 在 Dashboard 上传文件,MinIO 控制台应看到 `saas-uploads` bucket 中出现对象。 ## 服务端口 | Service | Port | | --- | --- | | Frontend / Nginx | 3000 | | Auth Service | 3001 | | Product Service | 3002 | | Upload Service | 3003 | | WebSocket Gateway | 3004 | | PostgreSQL | 5432 | | Redis | 6379 | | RabbitMQ | 5672 / 15672 | | MinIO | 9000 / 9001 | ## 常用检查命令 ```bash curl http://localhost:3001/health curl http://localhost:3002/health curl http://localhost:3003/health curl http://localhost:3004/health docker compose exec redis redis-cli keys '*dashboard*' docker compose exec redis redis-cli keys '*online*' docker compose exec rabbitmq rabbitmqctl list_queues name messages consumers docker compose exec postgres psql -U saas -d saas_platform -c "select count(*) from products;" docker compose exec minio sh -lc "find /data -maxdepth 3 -type f | head" ``` ## 本地开发 ```bash npm install npm run build ``` 本地如果没有 PostgreSQL/Redis/RabbitMQ/MinIO,也可以用内存数据库启动服务做基础联调: ```bash set USE_MEMORY_DB=true set DATABASE_URL=memory://local npm run dev:auth npm run dev:product npm run dev:upload npm run dev:ws npm run dev:frontend ``` 完整中间件链路以 Docker Compose 部署后的 `scripts/verify-deploy.sh` 验收结果为准。