Files
one-pipe-system/openspec/project.md
sexygoat 222e5bb11a Initial commit: One Pipe System
完整的管理系统,包含账户管理、卡片管理、套餐管理、财务管理等功能模块。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-22 16:35:33 +08:00

183 lines
7.4 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
物联网管理后台系统 (Internet of Things Admin),用于运营平台和代理商管理。
主要目标:
- 提供运营人员和代理商的统一管理平台
- 管理物联网卡(号卡)的全生命周期
- 处理代理商体系的分佣和财务管理
- 提供设备和网卡的资产管理能力
- 支持批量操作和数据导入导出
## Tech Stack
- **前端框架**: Vue 3.5+ (Composition API)
- **编程语言**: TypeScript 5.6+
- **构建工具**: Vite 6.1+
- **UI 组件库**: Element Plus 2.8+
- **状态管理**: Pinia 3.0+ (with persistedstate plugin)
- **路由管理**: Vue Router 4.4+
- **HTTP 客户端**: Axios 1.7+
- **图表可视化**: ECharts 5.4+
- **富文本编辑器**: WangEditor 5.1+ / md-editor-v3
- **Excel 处理**: XLSX 0.18+
- **工具库**: VueUse 11.0+, crypto-js, file-saver, qrcode.vue
## Project Conventions
### Code Style
- **代码规范**: ESLint 9.x + Prettier 3.x
- **样式规范**: Stylelint 16.x (SCSS, Vue)
- **提交规范**: Commitizen + cz-git (conventional commits)
- **Git Hooks**: Husky + lint-staged (自动格式化和检查)
- **命名约定**:
- 组件: PascalCase (如 `ArtBarChart.vue`)
- 文件: camelCase 或 kebab-case
- API 文件: 以 `Api` 结尾 (如 `menuApi.ts`, `usersApi.ts`)
### Architecture Patterns
- **组件架构**: 基于 Vue 3 Composition API
- **状态管理**: Pinia stores支持持久化
- **路由守卫**: 基于角色的权限控制
- **API 模块化**: 按业务模块组织 API (modules 目录)
- **样式方案**: SCSS + CSS Variables (支持主题切换light/dark/system)
- **布局模式**: 支持多种布局 (vertical/horizontal/mixed/dual_column)
### Testing Strategy
- **单元测试**: Vitest + @vue/test-utils
- 优先测试:工具函数、复杂业务逻辑、状态管理
- 覆盖率目标:核心模块 > 80%
- **E2E 测试**: Playwright (待引入)
- 优先场景:登录流程、关键业务流程(充值、分配等)
- **代码检查**: pre-commit 时自动运行 ESLint 和 Stylelint
- **类型检查**: TypeScript strict mode构建时进行类型检查
### Git Workflow
- **分支策略**: GitHub Flow (简化版)
- `master`: 主分支,始终保持可部署状态
- `feature/*`: 功能分支,从 master 创建
- `fix/*`: 修复分支,从 master 创建
- `hotfix/*`: 紧急修复,从 master 创建
- **提交规范**: Conventional Commits
- `feat`: 新功能
- `fix`: 修复 bug
- `docs`: 文档更新
- `style`: 代码格式调整
- `refactor`: 重构
- `perf`: 性能优化
- `test`: 测试相关
- `chore`: 构建/工具链更新
- **代码审查**: 建议 PR review 后合并
## Domain Context
### 业务领域
物联网卡管理系统,面向运营人员和代理商。
### 核心概念
- **平台角色**: 区分不同账号职责(运营/管理员等)
- **客户角色**: 决定客户的能力边界
- **代理商体系**: 多级代理商管理,支持分佣
- **企业客户**: 只能登录企业端的客户账号
- **号卡/网卡**: 物联网SIM卡通过 ICCID 标识
- **套餐**: 流量套餐,可分配给代理商
- **设备**: 与网卡绑定的物联网设备
- **佣金模板**: 预设的分佣规则,方便分配产品时使用
### 主要业务模块
#### 1. 账号管理
- **平台角色**: 用以区分不同账号职责
- **平台账号**: 管理平台/运营账号
- **客户角色**: 决定客户能力边界
- **代理商管理**: 创建代理商及管理特定代理商账号
- **企业客户管理**: 创建企业管理账号(只能登录企业端,依赖客户角色)
- **客户账号管理**: 管理客户(代理商+企业客户)的账号,支持解绑手机等操作
#### 2. 账户管理
- **客户账户**: 查看账号下全部客户账号的佣金情况及提现情况
- **佣金提现**: 管理全部的提现申请
- **佣金提现设置**: 设置提现参数(生效最新一条)
- **我的账户**: 获取当前登录账号的佣金相关数据
#### 3. 我的设置
- **收款商户设置**: 设置支付参数
- **开发能力管理**: 获取开发能力对接参数及管理
- **分佣模板**: 创建及管理分佣模板,方便给代理分配产品时设置分佣规则
#### 4. 商品管理
- **号卡管理**: 新增管理号卡商品,管理基础信息
- **号卡分配**: 为特定代理分配号卡商品,同时设置佣金模式
- **套餐系列管理**: 新增及管理套餐系列
- **套餐管理**: 新增及管理套餐(只能看到自己的/管理员可以看到全部)
- **套餐分配**: 为直级代理分配套餐同时设置佣金模式
#### 5. 资产管理
- **单卡信息**:
- 通过 ICCID 查询单卡相关信息
- 支持操作:套餐充值、停复机、流量详情、更改过期时间、转新卡、停复机记录、往期订单、增减流量、变更钱包余额、充值支付密码、续充、设备操作
- **网卡管理**: 查询网卡信息,提供相关批量操作入口
- **设备管理**: 查看设备信息,提供相关操作入口,查看/修改设备卡信息,设备相关操作
- **资产分配**:
- 为特定代理分配网卡,只支持批量操作
- 批量分配分为两种:设备批量分配、网卡批量分配
- 网卡批量分配时,若网卡有设备信息,会把该卡所属设备及网卡都分配过去
- **换卡申请**: 管理客户提交的换卡申请,处理换卡申请,填充新的 ICCID
#### 6. 批量操作
- **网卡导入**: 批量导入 ICCID查看导入任务情况
- **设备导入**: 批量导入设备及 ICCID 关系,查看导入任务情况
- **线下批量充值**: 查看批量充值记录,提供批量充值 Excel 导入
- **换卡通知**: 可单独/批量新建换卡通知,查看换卡通知记录
#### 7. 登录模块
- 用以登录平台(根据账号属性做权限控制)
## Important Constraints
### 技术约束
- Node.js 版本要求: >= 20.19.0
- 浏览器兼容性: 现代浏览器Chrome、Firefox、Safari、Edge
- 构建输出: ES Module
### 业务约束
- **权限控制**: 严格的基于角色的访问控制 (RBAC)
- **数据隔离**: 代理商只能查看自己及下级的数据
- **佣金计算**: 需要准确的佣金计算和分配逻辑
- **批量操作**: 需要异步任务处理机制,防止超时
- **ICCID 唯一性**: 物联网卡的 ICCID 必须唯一
### 安全约束
- 敏感操作需要二次确认
- 财务相关操作需要审计日志
- 密码需要加密存储和传输
## External Dependencies
### 后端 API
- 主要通过 Axios 与后端 RESTful API 交互
- API 基础路径配置在环境变量中
- API 文档托管在 Apifox (详见 `docs/部分API.md`)
- **API 模块划分**:
- `账号相关`: 账号 CRUD、角色分配
- `权限`: 权限 CRUD、权限树
- `平台账号`: 平台账号管理、密码修改、启用/禁用
- `角色`: 角色 CRUD、权限分配、状态管理
- `认证`: 登录、登出、Token 刷新、用户信息
- **请求/响应约定**:
- 统一使用 RESTful 风格
- 分页列表返回: `ModelXxxPageResult`
- 详情返回: `ModelXxxResponse`
- 创建请求: `ModelCreateXxxRequest`
- 更新请求: `ModelUpdateXxxParams`
### 第三方服务
- **支付服务**: 收款商户设置中配置
- **短信服务**: 用于手机验证码
- **物联网卡供应商 API**: 用于卡片操作(停复机、充值等)
### UI 依赖
- Element Plus Icons
- 自定义图标字体 (iconfont)
- ECharts 图表库