# Project Context ## Purpose 瓜联丨西瓜产业一体化智能管理平台 - 基于微信小程序的多端ERP系统,专注于西瓜产业的采购管理、供应商管理、交付管理等核心业务流程数字化。项目旨在为西瓜产业链提供高效的数字化管理工具,提升供应链效率和透明度。 ## Tech Stack ### 前端核心 - **React 18.0.0** + **TypeScript 5.1.6** - 现代化前端开发框架 - **Taro 4.1.7** - 多端跨平台解决方案,支持微信小程序、H5、支付宝等平台 - **Zustand 5.0.3** - 轻量级全局状态管理 - **SWR 2.3.6** - 数据获取和缓存策略 ### UI与样式 - **NutUI 3.0.18** - 微信小程序专用React组件库 - **TailwindCSS 4.1** + **PostCSS** - 原子化CSS框架 - **Sass** - CSS预处理器 - **CSS Variables** - 统一主题系统设计 ### 开发工具链 - **pnpm workspace** - 包管理和工作空间 - **Webpack 5.94.0** - 构建工具 - **Babel 7.x** + **SWC** - 代码编译 - **ESLint** + **Prettier** + **Husky** - 代码质量和Git钩子 - **Jest 29.3.1** - 单元测试框架 ### 数据与网络 - **Axios 1.7.4** - HTTP客户端 - **OpenAPI** - API类型定义生成 - **本地存储** - 数据持久化 ## Project Conventions ### Code Style #### 命名规范 - **组件**: PascalCase (如: CustomTabBar, PurchaseSection) - **文件**: kebab-case (如: purchase-order-list.tsx) - **变量/函数**: camelCase (如: getUserInfo, handleSubmit) - **常量**: SCREAMING_SNAKE_CASE (如: API_BASE_URL) - **CSS类**: TailwindCSS原子类 + 自定义kebab-case类 #### 代码组织 ``` src/ ├── pages/ # 页面组件,按业务模块分组 ├── components/ # 通用组件,按功能分组 ├── services/ # API服务层 ├── store/ # 状态管理 ├── utils/ # 工具函数 │ ├── format.ts # 通用格式化工具(日期、距离、金额等) │ ├── amount.ts # 金额处理工具(去除小数后多余零) │ ├── date.ts # 日期处理工具 │ └── ... # 其他工具函数 └── types/ # TypeScript类型定义 ``` #### TypeScript规范 - 启用严格类型检查 - 优先使用interface定义对象结构 - 使用联合类型和泛型提高类型复用性 - 避免使用any类型,必要时使用unknown ### Architecture Patterns #### 分层架构 - **表现层**: React组件 + Taro页面 - **业务层**: 业务逻辑组件 + HOC - **服务层**: API调用 + 数据转换 - **状态层**: Zustand全局状态 + SWR缓存 #### 设计模式 - **HOC模式**: 基础HOC提供全局功能(认证、权限等) - **组合模式**: 组件按功能分层组合 - **策略模式**: 不同角色的业务逻辑策略 - **观察者模式**: SWR数据订阅和更新 #### 模块化设计 - 按业务功能垂直切分模块 - 模块内部高内聚,模块间低耦合 - 统一的导出和依赖管理 ### Testing Strategy - **单元测试**: Jest + React Testing Library,覆盖核心业务逻辑 - **组件测试**: 关键组件的渲染和交互测试 - **API测试**: 服务层接口调用测试 - **端到端测试**: 关键业务流程的集成测试 - **目标覆盖率**: 核心模块80%以上 ### Git Workflow - **主要分支**: master (生产), develop (开发) - **功能分支**: feature/功能名,从develop创建 - **修复分支**: hotfix/问题描述,从master创建 - **提交规范**: Conventional Commits,使用中文提交信息 - **代码审查**: 所有PR必须经过代码审查 ## Domain Context ### 核心业务模块 1. **采购管理**: - 采购单创建、编辑、提交 - 多级审核流程(采购员→审核员→审批员) - 采购历史记录和状态追踪 - 费用计算和价格管理 2. **供应商管理**: - 供应商信息维护 - 供应商资质管理 - 采购历史关联 3. **费用管理**: - 采购费用计算和展示 - 金额格式化处理(去除小数点后多余零) - 多种费用类型的统一处理 4. **交付管理**: - 交付单创建和管理 - 配送状态跟踪 - 交付确认和验收 5. **用户权限**: - 基于角色的访问控制(RBAC) - 功能权限动态分配 - 多角色身份支持 ### 业务流程 - **采购流程**: 需求确认 → 供应商选择 → 采购单创建 → 多级审核 → 执行采购 - **交付流程**: 采购完成 → 交付安排 → 物流跟踪 → 确认收货 ### 数据模型关键概念 - **采购单**: 采购业务的核心实体,包含商品、数量、价格、供应商等信息 - **金额格式**: 统一的金额展示格式(0.00→0, 0.10→0.1, 10.00→10, 10.01→10.01) - **费用计算**: 采购过程中各类费用的计算和展示逻辑 - **角色权限**: 采购员、审核员、审批员等不同角色的操作权限 - **状态流转**: 采购单从创建到完成的完整生命周期管理 ## Important Constraints ### 技术约束 - **微信小程序限制**: 包体积限制、API调用限制、UI组件限制 - **多端兼容**: 必须同时支持微信小程序和H5平台 - **性能要求**: 首屏加载时间 < 3秒,操作响应时间 < 1秒 - **离线支持**: 关键数据本地缓存,支持弱网环境 ### 业务约束 - **数据一致性**: 采购状态、库存数据等关键信息的实时一致性 - **权限控制**: 严格的基于角色的功能访问控制 - **审计追踪**: 所有操作必须可追溯,支持审计需求 - **数据安全**: 敏感业务数据加密存储和传输 ### 合规约束 - **隐私保护**: 遵循数据隐私保护相关法规 - **微信生态**: 符合微信小程序开发规范和审核要求 ## External Dependencies ### 微信生态服务 - **微信登录**: 用户身份认证 - **微信支付**: 支付集成(如需要) - **微信消息推送**: 业务消息通知 ### 核心业务API - **RESTful API**: 后端业务系统接口 - **文件上传服务**: 附件、图片上传 - **PDF生成服务**: 采购单、交付单等文档生成 ### 第三方服务 - **地图服务**: 位置相关功能(如需要) - **统计分析**: 业务数据分析 - **Lottie动画**: 动画效果支持 ### 开发与部署 - **CI/CD平台**: 持续集成和部署 - **代码托管**: Git仓库管理 - **包管理**: npm/pnpm私有仓库(如需要)