Files
dingding_hrm/docs/03-tech-stack.md
T

55 lines
2.4 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.
# 技术栈(Tech Stack)
> “用什么”的统一速查表。选型与理由在此集中维护;“怎么把它们搭起来”见 [架构设计](04-architecture.md)。
## 一、技术栈一览
| 维度 | 选型 | 状态 | 理由 / 说明 |
| --- | --- | --- | --- |
| 前端框架 | 无,原生 HTML/CSS/JavaScript | 已定 | 降低构建复杂度,由 Gin 直接托管 |
| UI 样式方案 | 手写 CSS | 已定 | MVP 页面数量少,避免引入组件库 |
| 状态管理 | 浏览器内存状态 + URL 查询参数 | 已定 | 站点、部门、筛选条件简单可控 |
| 后端 | Go + Gin | 已定 | 用户指定;路由、中间件和静态文件托管成熟 |
| 数据库 | SQLite | 已定 | 本地单体应用,无需独立数据库服务 |
| SQLite 驱动 | `modernc.org/sqlite` 优先 | 待验证 | 纯 Go,Windows 构建更简单;如遇兼容问题再评估 `mattn/go-sqlite3` |
| 鉴权方式 | MVP 无账号 | 已定 | 默认本地或受信内网运行 |
| 钉钉 API 客户端 | Go `net/http` | 已定 | 标准库足够,便于测试和超时控制 |
| 部署方式 | 单个 Go 进程 + SQLite 文件 + 静态文件 | 已定 | 简单可复制 |
| 测试 | `go test ./...` | 已定 | 覆盖服务层、数据层、handler |
## 二、决策记录与演进
- 不引入前端框架:当前页面是管理工具界面,原生 DOM 和 fetch 足够完成 MVP。
- 使用 Gin 托管前端:避免前后端两个开发服务器和 CORS 配置。
- SQLite 作为唯一持久化:站点配置、token、部门、人员、同步日志都入库。
- 不引入 ORM:优先使用 `database/sql` 和小型 repository,避免隐藏 SQL 行为。
- 定时任务 V2 再做:MVP 先实现手动同步和 token 按需刷新。
## 三、构建与运行命令
当前尚未初始化代码,以下是目标命令:
| 用途 | 命令 |
| --- | --- |
| 初始化依赖 | `go mod tidy` |
| 本地开发 | `go run .` |
| 构建 | `go build ./...` |
| 测试 | `go test ./...` |
| 格式化 | `gofmt -w .` |
Windows PowerShell:
```powershell
go mod tidy
go run .
go test ./...
go build ./...
```
## 四、依赖纪律
- 新增第三方依赖前,先说明用途、替代方案和维护成本。
- 不允许引入 Vue、React、Element Plus、Vite、Webpack 等前端框架或构建链。
- 不允许同一职责并存两套路由、数据库访问或状态管理方案。
- 钉钉 SDK 不是默认选择;除非标准 HTTP 封装无法满足需求。