Files
shop-toy/openspec/project.md
2025-12-25 09:59:38 +08:00

217 lines
6.9 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.

# Project Context
## Purpose
这是一个基于 unibest 模板开发的跨平台电商应用系统,包含三个主要端:
1. **用户端**C端提供商品浏览、购物车、订单管理、会员服务、金融服务等功能
2. **商家端**B端提供商品管理、订单处理、财务管理、贷款协助、店铺设置等功能
3. **银行端**B端提供客户管理、贷款审核、交易记录、提现管理等功能
项目支持多平台部署,包括 H5、iOS、Android 以及多个小程序平台微信、支付宝、百度、字节、快手、QQ、钉钉、小红书等
## Tech Stack
### 核心框架
- **uni-app** 3.0.0 - 跨平台开发框架
- **Vue 3** 3.4.21 - 前端框架
- **TypeScript** 5.8.0 - 类型系统
- **Vite** 5.2.8 - 构建工具
### UI 组件库
- **wot-design-uni** - UI 组件库
- **UnoCSS** 66.0.0 - 原子化 CSS 框架
- **z-paging** 2.8.7 - 分页组件
### 状态管理与路由
- **Pinia** 2.0.36 - 状态管理
- **pinia-plugin-persistedstate** 3.2.1 - 状态持久化
- **vue-router** 4.5.1 - 路由管理
- **vue-i18n** 9.1.9 - 国际化
### HTTP 请求库(支持多种选择)
- **alova** 3.3.3 - 请求库(推荐)
- **简单封装的 http** - 轻量级请求方案
- **vue-query** - 查询状态管理(用于自动生成接口)
### 工具库
- **dayjs** 1.11.10 - 日期处理
- **js-cookie** 3.0.5 - Cookie 操作
### 开发工具
- **pnpm** 10.10.0 - 包管理器
- **ESLint** 9.31.0 - 代码检查
- **Husky** 9.1.7 - Git hooks
- **commitlint** 19.8.1 - 提交信息规范
### Node.js 环境
- **Node.js** >= 20
- **pnpm** >= 9
## Project Conventions
### Code Style
#### 命名约定
- **文件命名**:使用 kebab-case`cart-item.vue`
- **组件命名**:使用 PascalCase`CartItem.vue`
- **变量/函数命名**:使用 camelCase`getCartList`
- **常量命名**:使用 UPPER_SNAKE_CASE`API_BASE_URL`
#### 代码格式化
- 使用 `@uni-helper/eslint-config` 作为 ESLint 配置
- 支持 CSS、LESS、SCSS、HTML 的自动格式化
- Vue SFC 块顺序:`[script, template]``style`
#### 路径别名
- `@/*``./src/*`
- `@img/*``./src/static/images/*`
#### 自动导入
- Vue 和 uni-app API 自动导入
- `src/hooks` 目录下的 hooks 自动导入
- 组件自动导入(支持递归扫描子目录)
### Architecture Patterns
#### 目录结构
```
src/
├── api/ # API 接口定义
├── components/ # 公共组件
├── hooks/ # 组合式函数
├── http/ # HTTP 请求封装
├── layouts/ # 布局组件
├── mock/ # Mock 数据
├── pages/ # 用户端页面
├── pagesMerchant/# 商家端页面
├── pagesBank/ # 银行端页面
├── router/ # 路由配置
├── service/ # 自动生成的服务接口
├── static/ # 静态资源
└── typings/ # 类型定义
```
#### 路由策略
- **约定式路由**:基于文件系统自动生成路由
- **Layout 布局**:支持多布局系统
- **分包优化**:使用 `@uni-ku/bundle-optimizer` 进行分包优化
- **异步导入**:支持模块和组件的异步跨包引用
#### 登录策略
支持两种登录策略(通过 `DEFAULT_NO_NEED_LOGIN` 配置):
1. **默认无需登录策略**DEFAULT_NO_NEED_LOGIN
- 进入任何页面都不需要登录
- 只有黑名单中的页面需要登录
- 适用于大部分 2C 应用(如美团、抖音)
2. **默认需要登录策略**DEFAULT_NEED_LOGIN
- 进入任何页面都需要登录
- 只有白名单中的页面不需要登录
- 适用于 2B 和后台管理类应用
#### 请求拦截
- 统一的请求拦截器(`src/http/interceptor.ts`
- 支持登录拦截
- 支持请求/响应错误处理
### Testing Strategy
当前项目未配置自动化测试框架。建议:
- 使用 Vitest 进行单元测试
- 使用 @vue/test-utils 进行组件测试
- 使用 Playwright 进行端到端测试
### Git Workflow
#### 分支策略
- `main` / `base` - 主分支
- `base-i18n` - 国际化分支
- `base-login` - 登录功能分支
- `base-login-i18n` - 登录+国际化分支
#### 提交规范
使用 Conventional Commits 规范:
- `feat:` - 新功能
- `fix:` - 修复 bug
- `docs:` - 文档更新
- `style:` - 代码格式调整
- `refactor:` - 重构
- `test:` - 测试相关
- `chore:` - 构建/工具相关
#### Git Hooks
- 使用 Husky 管理 Git hooks
- 使用 lint-staged 在提交前自动修复代码
## Domain Context
### 业务领域
#### 用户端C端
- **商品模块**:商品列表、详情、分类、搜索
- **购物车模块**:添加商品、数量调整、结算
- **订单模块**:订单确认、订单列表、订单详情
- **会员模块**:会员卡、会员权益
- **金融模块**:信用额度、结算、核销、贷款申请
#### 商家端B端
- **仪表盘**:数据统计、概览
- **商品管理**:商品列表、编辑
- **订单管理**:订单列表、订单详情
- **财务管理**:财务统计、结算、提现
- **贷款协助**:协助用户申请贷款
- **店铺设置**:店铺信息管理
#### 银行端B端
- **仪表盘**:数据统计
- **客户管理**:客户列表、客户详情、交易记录、提现记录
- **审核管理**:贷款审核列表、审核详情
### 关键概念
- **多端适配**:同一套代码适配 H5、App、小程序
- **角色权限**:用户、商家、银行三种角色
- **金融服务**:信用额度、贷款申请、结算、核销
- **会员体系**:会员卡、会员权益
## Important Constraints
### 技术约束
- **Node.js 版本**:必须 >= 20
- **pnpm 版本**:必须 >= 9
- **包管理器**:强制使用 pnpm通过 `only-allow pnpm`
- **TypeScript**:必须使用 TypeScript 开发
- **平台限制**:不同 UI 框架支持的平台有所不同
### 业务约束
- **多端兼容性**:需要确保在所有目标平台上正常运行
- **性能要求**:分包优化、按需加载、减少包体积
- **安全性**:登录拦截、请求加密、数据验证
### 开发约束
- **代码规范**:必须通过 ESLint 检查
- **提交规范**:必须符合 Conventional Commits 规范
- **文件忽略**:自动生成的文件(如 `src/service/**`)不应提交
## External Dependencies
### 平台依赖
- **DCloudio** - uni-app 官方框架和工具链
- **微信开发者工具** - 微信小程序开发调试
- **HBuilderX** - App 平台打包(可选)
### 第三方服务
- **OpenAPI** - 用于自动生成 API 接口类型和代码
- **Iconify** - 图标库Carbon 图标集)
### 构建依赖
- **@uni-helper** - uni-app 辅助工具集
- **@uni-ku** - uni-app 性能优化工具
- **unplugin-auto-import** - 自动导入插件
### 开发依赖
- **@dcloudio/types** - uni-app 类型定义
- **miniprogram-api-typings** - 小程序 API 类型定义
- **rollup-plugin-visualizer** - 打包分析工具