Files
ReporterStationManagementSy…/pmdocs/adr/2026-08-01-001-技术栈选型.md
T
2026-08-01 23:09:49 +08:00

61 lines
2.7 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.
# ADR-RSMS-001:技术栈选型
> ADR 编号:ADR-001
> 状态:已决策(代码已先行,补录)
> 日期:2026-07-31
> 项目:RSMS
## 背景
项目启动时需要确定前端框架、后端框架和数据库选型。项目为内部管理后台,初期规模可控,但需考虑 37 个站点、约 500 名记者的数据增长。
## 选项
### 前端
| 选项 | 优点 | 缺点 |
|---|---|---|
| A. React + Vite + TypeScript | 生态成熟、类型安全、Vite 热重载快、团队熟悉度高 | 学习曲线存在(对新手) |
| B. Vue + Vite + TypeScript | 上手快、单文件组件直观 | 团队 React 经验更丰富 |
| C. 原生 HTML + JS | 无依赖 | 不可维护 |
### 后端
| 选项 | 优点 | 缺点 |
|---|---|---|
| A. Express.js + Node.js | 轻量、路由灵活、JSON 原生、团队熟悉 | 需自行处理结构化代码 |
| B. Spring Boot (Java) | 生态完善、企业级 | 需要 JDK 环境、启动慢 |
| C. Django (Python) | 快速开发、内置 ORM | GIL 限制并发、对团队熟悉度低 |
### 数据库
| 选项 | 优点 | 缺点 |
|---|---|---|
| A. SQLite(WAL 模式) | 零配置、文件级、无服务进程、适合本地开发 | 并发写入受限(当前规模可接受) |
| B. PostgreSQL | 关系型权威、功能强大、并发好 | 需要安装运行、增加运维成本 |
| C. JSON 文件 | 零配置 | 无查询能力、无法处理关联 |
## 决策
- **前端**React + Vite + TypeScript(选项 A
- **后端**Express.js + Node.js(选项 A
- **数据库**SQLiteWAL 模式)(选项 A
## 理由
1. **React + Vite**:团队已有 React 经验;Vite 提供极快的热重载体验;TypeScript 提供编译期类型检查,减少运行时错误;Recharts 作为数据可视化方案与 React 生态无缝集成。
2. **Express.js**:轻量、路由直观;JSON 作为 API 响应格式零序列化成本;`node --watch` 支持开发热重载;无额外配置。
3. **SQLite**:零运维成本,文件即数据库;WAL 模式支持读写并发(读不阻塞写);数据文件可随 Git 管理(需注意 .gitignore);当前规模(37 站 x 500 人)完全在 SQLite 处理能力内。
## 升级路径
| 组件 | 升级触发条件 | 目标方案 |
|---|---|---|
| 数据库 | 并发写入成为瓶颈(预估 > 100 并发写入/秒) | 迁移至 PostgreSQL |
| 后端 | 业务逻辑复杂度增加 | 考虑 NestJS 或 DDD 架构重构 |
| 前端 | 页面数量 > 30 或团队 > 5 人 | 引入 React Router、状态管理(Redux Toolkit |
## 风险
- SQLite 在极高并发写入场景下可能成为瓶颈(当前评估:低风险)
- 前后端均使用 JS/TS,技术栈统一,全栈可复用类型定义(未来引入 tRPC 可进一步增强类型安全)