chore: initialize monorepo tooling
This commit is contained in:
@@ -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. 仓库结构
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@ AdminUser 1 ── n AuditLog
|
||||
"error": {
|
||||
"code": "VALIDATION_ERROR",
|
||||
"message": "请填写有效的联系方式",
|
||||
"fields": {"phone": "格式不正确"}
|
||||
"fields": { "phone": "格式不正确" }
|
||||
},
|
||||
"requestId": "..."
|
||||
}
|
||||
|
||||
@@ -107,12 +107,12 @@
|
||||
|
||||
沿用通用状态,但在餐饮后台显示更容易理解的文案:
|
||||
|
||||
| 系统状态 | 页面文案 | 说明 |
|
||||
|---|---|---|
|
||||
| pending | 待联系 | 客户刚提交需求 |
|
||||
| contacted | 沟通中 | 已联系,正在确认菜单或细节 |
|
||||
| completed | 已完成 | 已完成本次餐饮服务 |
|
||||
| cancelled | 已取消 | 客户或经营者取消 |
|
||||
| 系统状态 | 页面文案 | 说明 |
|
||||
| --------- | -------- | -------------------------- |
|
||||
| pending | 待联系 | 客户刚提交需求 |
|
||||
| contacted | 沟通中 | 已联系,正在确认菜单或细节 |
|
||||
| completed | 已完成 | 已完成本次餐饮服务 |
|
||||
| cancelled | 已取消 | 客户或经营者取消 |
|
||||
|
||||
第一版不增加“已确认”状态,避免在没有支付和排班能力时造成履约承诺。若真实业务需要,可在试用后增加 `confirmed`。
|
||||
|
||||
|
||||
29
docs/08-clickable-prototype.md
Normal file
29
docs/08-clickable-prototype.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# 可点击低保真原型
|
||||
|
||||
## 使用方式
|
||||
|
||||
直接在浏览器打开 `prototype/index.html`,无需安装依赖或启动服务。
|
||||
|
||||
原型顶部可以切换“客户小程序”和“经营后台”。它使用 `prototype/mock-data.js` 中的虚拟餐饮数据,不连接数据库,也不会保存刷新后的操作。
|
||||
|
||||
## 建议演练路径
|
||||
|
||||
### 普通套餐
|
||||
|
||||
首页 -> 订普通套餐 -> 选择数量 -> 选择自取/配送 -> 提交 -> 我的订单。
|
||||
|
||||
### 私厨定制
|
||||
|
||||
首页 -> 约私厨 -> 填写日期、人数、地点与联系信息 -> 提交 -> 我的订单。
|
||||
|
||||
### 后台处理
|
||||
|
||||
经营后台 -> 订单管理 -> 打开未读订单 -> 修改状态 -> 添加标签 -> 填写内部备忘 -> 保存。
|
||||
|
||||
## 原型边界
|
||||
|
||||
- 微信登录仅模拟,不调用微信 API。
|
||||
- 图片使用公开示例资源,正式项目必须替换为经营者授权图片。
|
||||
- 每日菜单维护方式仍待确认,原型只展示固定套餐。
|
||||
- 原型不包含支付、库存、自动配送判断和订阅消息。
|
||||
- 所有操作只保存在当前浏览器页面内存中,刷新后恢复虚拟数据。
|
||||
Reference in New Issue
Block a user