Files
smart-project-pricing/瑞小美系统技术栈标准与字符标准1月17日.md
2026-01-31 21:33:06 +08:00

191 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 瑞小美系统技术栈标准与字符标准
## 技术栈
### 后端
| 技术 | 版本/说明 |
| --- | --- |
| **语言** | Python 3.11 |
| **框架** | FastAPI |
| **ORM** | SQLAlchemy |
| **数据库** | MySQL 8.0 |
| **认证** | OAuth |
### 前端
| 类别 | 首选技术 | 说明 |
| --- | --- | --- |
| **语言** | TypeScript | 类型安全,提升代码质量 |
| **框架** | Vue 3 | 统一前端框架 |
| **构建工具** | Vite | 快速开发体验 |
| **包管理器** | pnpm | 高效、节省空间 |
| **UI组件库** | Element Plus / Ant Design Vue | 企业级UI |
| **CSS方案** | Tailwind CSS | 可与组件库共存 |
| **HTTP客户端** | Axios | 统一请求库 |
| **状态管理** | Pinia | 按需使用 |
| **代码规范** | ESLint | 必须配置 |
### 前端(特殊场景可选)
| 技术 | 适用场景 |
| --- | --- |
| **qiankun** | 微前端架构整合 |
| **Uni-app** | 小程序/跨平台开发 |
| **Turborepo** | Monorepo管理 |
| **React/Next.js** | 仅用于遗留系统维护 |
### 基础设施
| 技术 | 说明 |
| --- | --- |
| **容器化** | Docker + Docker Compose |
| **反向代理** | Nginx独立 Docker 容器部署) |
| **网络** | Docker Bridge Network |
| **SSL** | Let's Encrypt (Certbot),在主机申请后挂载到容器 |
---
## 部署规范
### 基本原则
| 规范 | 说明 |
| --- | --- |
| **容器化部署** | 所有服务必须部署在 Docker 容器中,不可在容器外部署 |
| **前后端分离** | 前后端必须分离部署在不同 Docker 容器中,互相独立、解耦 |
| **服务编排** | 必须使用 Docker Compose 管理多服务与依赖关系 |
| **统一入口** | 必须通过 Nginx 反向代理提供统一入口,后端不直接暴露公网 |
| **热重载** | 开发环境必须启用代码热重载HMR/auto-reload |
### Nginx 配置规范
| 规范 | 说明 |
| --- | --- |
| **独立部署** | Nginx 部署在独立 Docker 容器中 |
| **路由转发** | 根据不同子域名转发到对应的 Docker 容器 |
| **SSL 终止** | 仅在 Nginx 层配置 SSL 证书 |
| **端口暴露** | 仅 Nginx 容器暴露 80/443 端口,其他服务端口绑定 127.0.0.1 |
### 镜像源配置
| 类型 | 首选镜像 | 备用镜像 |
| --- | --- | --- |
| **Docker Registry** | 阿里云:`https://kjphlxn2.mirror.aliyuncs.com` | DaoCloud`https://docker.m.daocloud.io`<br>轩辕镜像:`https://docker.xuanyuan.me` |
| **APT 源** | 阿里云:`http://mirrors.aliyun.com/debian/` | - |
| **通用镜像站** | 阿里云:`https://developer.aliyun.com/mirror` | - |
### 镜像版本规范
| 规范 | 说明 |
| --- | --- |
| **禁用 latest** | ACR 镜像加速器已停止同步 latest 标签 |
| **指定版本号** | 必须使用具体版本号,如 `python:3.11.9-slim` |
### 健康检查
| 规范 | 说明 |
| --- | --- |
| **必须配置** | 所有服务容器必须配置健康检查 |
| **检查端点** | 后端服务应提供 `/health``/api/health` 端点 |
| **检查间隔** | 建议 30 秒检查一次 |
| **超时设置** | 建议 10 秒超时3 次重试 |
健康检查配置示例:
```yaml
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
```
### 日志管理
| 规范 | 说明 |
| --- | --- |
| **日志格式** | 统一使用 JSON 格式,便于收集分析 |
| **日志轮转** | 必须配置日志轮转,避免磁盘撑满 |
| **日志驱动** | Docker 容器使用 `json-file` 驱动并限制大小 |
日志配置示例:
```yaml
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
```
### 资源限制
| 规范 | 说明 |
| --- | --- |
| **内存限制** | 所有容器应设置内存上限,防止单个服务耗尽资源 |
| **CPU 限制** | 根据服务负载合理分配 CPU 配额 |
| **建议配置** | 前端容器 256M-512M后端容器 512M-1G |
资源限制配置示例:
```yaml
deploy:
resources:
limits:
cpus: '1'
memory: 512M
reservations:
cpus: '0.25'
memory: 128M
```
### 网络隔离
| 规范 | 说明 |
| --- | --- |
| **自定义网络** | 不同项目使用独立 Docker 网络,避免容器间意外通信 |
| **内部通信** | 容器间使用容器名通信,不使用硬编码 IP |
| **网络命名** | 网络名称格式:`项目名_network`,如 `scrm_network` |
| **DNS 刷新** | 后端容器重启后,需执行 `docker exec nginx_proxy nginx -s reload` 刷新 nginx DNS 缓存 |
网络配置示例:
```yaml
networks:
scrm_network:
driver: bridge
```
### 敏感信息管理
| 规范 | 说明 |
| --- | --- |
| **禁止硬编码** | 密码、密钥等敏感信息禁止硬编码到代码或镜像中 |
| **环境变量** | 使用环境变量传递配置,通过 `.env` 文件管理 |
| **文件权限** | `.env` 文件权限设置为 600禁止提交到 Git |
| **生产环境** | 生产环境使用 Docker Secrets 管理敏感数据 |
环境变量配置示例:
```yaml
env_file:
- .env
environment:
- DATABASE_URL=${DATABASE_URL}
- SECRET_KEY=${SECRET_KEY}
```
---
## 字符标准
| 项目 | 标准 |
| --- | --- |
| **字符编码** | UTF-8 |
| **数据库字符集** | utf8mb4 (支持 emoji 表情) |
| **数据库排序规则** | utf8mb4_unicode_ci |
| **API 响应** | JSON (UTF-8 编码) |
| **日期格式** | ISO 8601 (YYYY-MM-DDTHH:mm:ss) |
| **时区** | Asia/Shanghai (UTC+8) |