chore: initialize application scaffold

This commit is contained in:
2026-08-23 19:55:59 +08:00
parent 36088ce005
commit 6591e3fa1e
36 changed files with 7771 additions and 0 deletions
+25
View File
@@ -0,0 +1,25 @@
# 接口文档
服务根路径:`/api/v1`
## 用户资源
### 获取用户列表
- 请求:`GET /api/v1/users`
- 响应:`200 OK`
```json
[{"id":"uuid","name":"示例用户","email":"demo@example.com","createdAt":"2026-08-23T00:00:00.000Z","updatedAt":"2026-08-23T00:00:00.000Z"}]
```
### 创建用户
- 请求:`POST /api/v1/users`
- 请求体:`name` 为 1 至 50 个字符,`email` 必须为邮箱格式。
- 响应:`201 Created`
- 冲突:邮箱已经存在时返回 `409 Conflict`
```json
{"name":"示例用户","email":"demo@example.com"}
```
+13
View File
@@ -0,0 +1,13 @@
# 架构说明
## 分层职责
用户请求经过 Controller 到达 ServiceService 负责业务规则并调用 RepositoryRepository 仅负责 TypeORM 持久化。Entity 映射数据库表,DTO 校验请求输入。
## 模块扩展
新增领域模块时,在 `apps/api/src/modules` 创建独立目录,并保持 `controller``service``repository``dto``entities` 的职责边界。跨模块调用应通过导出的服务完成,不应直接访问另一模块的 Repository。
## 前端划分
用户端与管理端各自独立构建、部署。页面放在 `pages`,可复用业务单元放在 `components`HTTP 调用应集中到 `api` 目录,避免把网络逻辑散落在页面中。
+25
View File
@@ -0,0 +1,25 @@
# 数据库设计
## PostgreSQL 连接
服务端通过根目录 `.env` 中的 `DATABASE_HOST``DATABASE_PORT``DATABASE_NAME``DATABASE_USER``DATABASE_PASSWORD` 建立连接。生产环境禁止使用 `synchronize` 自动变更结构,应通过迁移文件管理变更。
## users 表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| id | uuid | 主键 | 用户唯一标识 |
| name | varchar(50) | 非空 | 展示名称 |
| email | varchar(120) | 非空、唯一 | 邮箱地址 |
| created_at | timestamp | 非空 | 创建时间 |
| updated_at | timestamp | 非空 | 更新时间 |
```sql
CREATE TABLE users (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
name varchar(50) NOT NULL,
email varchar(120) NOT NULL UNIQUE,
created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
```