Files
2026-06-07 20:41:14 +08:00

66 lines
3.0 KiB
Markdown
Raw Permalink 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.
# Work Admin 商城后台项目说明
建设一个商城系统订单与工单管理后台。系统既要兼容第三方课程/商品接口,也要支持平台自营分类和自营商品的售卖流程,并为后续支付能力预留完整订单与支付状态。
## 本地默认登录
- 管理员账号:`root`
- 管理员密码:`123456`
- 该账号仅用于本地开发。生产环境上线前必须修改密码,并禁止在文档或日志中暴露真实密码。
## 技术栈
- 包管理器:`pnpm@10.33.0`
- Monorepo`pnpm-workspace.yaml`workspace 范围为 `packages/*`
- 前端:React、TypeScript、Shadcn Admin 、Tailwind CSS 可按实际使用保留
- 后端:NestJS 11、TypeScript、MySQL、TypeORM
- 参数校验:Zod 或 NestJS DTO 校验管道
- 鉴权:NextAuth.js 或后端自建 Session/JWT,优先选择与 NestJS 后端一致的方案
- 密码哈希:bcrypt 或 argon2
- 密钥加密:Node crypto,用于第三方 `key` 等敏感信息
- 后续异步任务:Redis + BullMQ,可用于订单同步、支付补偿、日志拉取等
## 常用命令
- `pnpm dev`:同时启动前端和后端开发服务。
- `pnpm dev:frontend`:只启动前端,默认 `http://localhost:3000`
- `pnpm dev:backend`:只启动后端,默认 `http://localhost:3001`
- `pnpm lint`:运行前端、后端、共享模块的 ESLint 和 Stylelint。
- `pnpm test`:运行 workspace 测试。
- `pnpm build`:构建前端、后端和共享模块。
## 核心业务原则
### 统一商城模型
本项目不是单纯的第三方课程管理后台,而是商城后台。商品来源需要统一建模:
- `third_party`:第三方接口同步来的分类和商品。下单后需要由服务端调用第三方接口提交信息。
- `self_owned`:平台自己新建的分类和商品。下单后只需要写入本地数据库,不调用第三方下单接口。
建议分类、商品、订单都保留来源字段,例如:
- `source_type`: `third_party``self_owned`
- `external_id`: 第三方分类/商品/订单 ID,自营数据为空
- `provider`: 第三方供应商标识,当前默认可用 `biedawo`
- `fulfillment_type`: `third_party_api``local_only``manual`
### 商品售卖流程
第三方商品:
1. 后台同步第三方分类:`act=getcate`
2. 后台同步第三方课程/商品:`act=getclass`
3. 用户/管理员输入学校、账号、密码、项目 ID 查课:`act=get`
4. 选择课程并创建订单。
5. 如果订单已支付或后台允许先提交,则服务端调用第三方下单:`act=add`
6. 保存第三方请求、脱敏后的响应、第三方订单号和本地订单状态。
自营商品:
1. 后台手动创建分类和商品。
2. 商品可配置价格、上下架状态、库存/限购、交付类型、售后规则等。
3. 用户/管理员创建订单时只写入本地订单、订单明细和交付记录。
4. 不调用第三方 `get``add``orders` 等接口。
5. 后续可由后台人工处理、自动发货或扩展为其他自营交付流程。