chore: initialize monorepo tooling

This commit is contained in:
2026-09-18 15:00:48 +08:00
parent e28140a0b3
commit 55b2b091c2
42 changed files with 1858 additions and 18 deletions

View File

@@ -6,17 +6,17 @@
## 2. 技术选型
| 层 | 选型 | 目的 |
|---|---|---|
| Monorepo | pnpm workspace + Turborepo | 统一脚本、缓存构建、共享包 |
| 小程序 | 原生微信小程序 + TypeScript | 直接使用微信能力,减少跨端框架层 |
| 管理后台 | Next.js + TypeScript | 表单、列表、图片管理和路由生态成熟 |
| API | NestJS + TypeScript | 模块化、依赖注入、权限和校验边界清晰 |
| 数据库 | PostgreSQL | 适合预约、服务、反馈之间的关系 |
| ORM | Prisma | 类型安全、迁移和 schema 管理清晰 |
| 文件存储 | S3 兼容对象存储 | 图片不进入数据库,便于扩容和 CDN |
| 校验 | Zod 或 class-validator统一一种 | API 与前端共享约束 |
| 部署 | Docker Compose 起步,后续迁移托管服务 | 本地与生产环境差异小 |
| 层 | 选型 | 目的 |
| -------- | ------------------------------------- | ------------------------------------ |
| Monorepo | pnpm workspace + Turborepo | 统一脚本、缓存构建、共享包 |
| 小程序 | 原生微信小程序 + TypeScript | 直接使用微信能力,减少跨端框架层 |
| 管理后台 | Next.js + TypeScript | 表单、列表、图片管理和路由生态成熟 |
| API | NestJS + TypeScript | 模块化、依赖注入、权限和校验边界清晰 |
| 数据库 | PostgreSQL | 适合预约、服务、反馈之间的关系 |
| ORM | Prisma | 类型安全、迁移和 schema 管理清晰 |
| 文件存储 | S3 兼容对象存储 | 图片不进入数据库,便于扩容和 CDN |
| 校验 | Zod 或 class-validator统一一种 | API 与前端共享约束 |
| 部署 | Docker Compose 起步,后续迁移托管服务 | 本地与生产环境差异小 |
## 3. 仓库结构

View File

@@ -101,7 +101,7 @@ AdminUser 1 ── n AuditLog
"error": {
"code": "VALIDATION_ERROR",
"message": "请填写有效的联系方式",
"fields": {"phone": "格式不正确"}
"fields": { "phone": "格式不正确" }
},
"requestId": "..."
}

View File

@@ -107,12 +107,12 @@
沿用通用状态,但在餐饮后台显示更容易理解的文案:
| 系统状态 | 页面文案 | 说明 |
|---|---|---|
| pending | 待联系 | 客户刚提交需求 |
| contacted | 沟通中 | 已联系,正在确认菜单或细节 |
| completed | 已完成 | 已完成本次餐饮服务 |
| cancelled | 已取消 | 客户或经营者取消 |
| 系统状态 | 页面文案 | 说明 |
| --------- | -------- | -------------------------- |
| pending | 待联系 | 客户刚提交需求 |
| contacted | 沟通中 | 已联系,正在确认菜单或细节 |
| completed | 已完成 | 已完成本次餐饮服务 |
| cancelled | 已取消 | 客户或经营者取消 |
第一版不增加“已确认”状态,避免在没有支付和排班能力时造成履约承诺。若真实业务需要,可在试用后增加 `confirmed`

View File

@@ -0,0 +1,29 @@
# 可点击低保真原型
## 使用方式
直接在浏览器打开 `prototype/index.html`,无需安装依赖或启动服务。
原型顶部可以切换“客户小程序”和“经营后台”。它使用 `prototype/mock-data.js` 中的虚拟餐饮数据,不连接数据库,也不会保存刷新后的操作。
## 建议演练路径
### 普通套餐
首页 -> 订普通套餐 -> 选择数量 -> 选择自取/配送 -> 提交 -> 我的订单。
### 私厨定制
首页 -> 约私厨 -> 填写日期、人数、地点与联系信息 -> 提交 -> 我的订单。
### 后台处理
经营后台 -> 订单管理 -> 打开未读订单 -> 修改状态 -> 添加标签 -> 填写内部备忘 -> 保存。
## 原型边界
- 微信登录仅模拟,不调用微信 API。
- 图片使用公开示例资源,正式项目必须替换为经营者授权图片。
- 每日菜单维护方式仍待确认,原型只展示固定套餐。
- 原型不包含支付、库存、自动配送判断和订阅消息。
- 所有操作只保存在当前浏览器页面内存中,刷新后恢复虚拟数据。