Change aftersales serial to YYMMNN monthly sequence
User-requested format: zjbf-sh-260501 (26=year, 05=month, 01=monthly seq). Sequence resets each month and skips soft-deleted entries to avoid reuse. Also documents aftersales API and new technician role in AGENTS.md / README. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -29,6 +29,7 @@ backend-go/
|
||||
├── config/ # 配置管理
|
||||
│ └── config.go # 配置加载和解析(支持 .env 文件和环境变量)
|
||||
├── controllers/ # 控制器层,处理 HTTP 请求
|
||||
│ ├── aftersales_controller.go # 售后工单接口
|
||||
│ ├── auth_controller.go # 认证相关接口
|
||||
│ ├── companies_controller.go # 企业管理接口
|
||||
│ ├── employees_controller.go # 员工赋码接口
|
||||
@@ -43,12 +44,13 @@ backend-go/
|
||||
├── logger/ # 日志管理
|
||||
│ └── logger.go # 结构化日志(使用 Zap)
|
||||
├── middleware/ # 中间件层
|
||||
│ └── auth.go # JWT 认证和权限检查
|
||||
│ └── auth.go # JWT 认证、管理员/技术员权限检查
|
||||
├── models/ # 数据模型和 DTO
|
||||
│ └── models.go # User、Company、Serial 等模型定义
|
||||
│ └── models.go # User、Company、Serial、AftersalesOrder 等模型定义
|
||||
├── routes/ # 路由配置
|
||||
│ └── routes.go # API 路由注册
|
||||
├── services/ # 业务逻辑层
|
||||
│ ├── aftersales_service.go # 售后工单业务逻辑
|
||||
│ ├── auth_service.go # 认证业务逻辑
|
||||
│ ├── companies_service.go # 企业管理业务逻辑
|
||||
│ ├── employees_service.go # 员工赋码业务逻辑
|
||||
@@ -292,6 +294,30 @@ swag init -g main.go
|
||||
- 包含部门(department)和员工姓名(employeeName)信息
|
||||
- 序列号格式: `EMP26xxxxxx`(EMP + 年份后两位 + 6位随机字符)
|
||||
|
||||
### 售后工单
|
||||
|
||||
| 方法 | 路径 | 描述 | 需要认证 | 角色 |
|
||||
| ------ | --------------------------------------------- | -------------------------- | -------- | --------------- |
|
||||
| GET | `/api/aftersales/:serialNumber/query` | 公开查询工单(脱敏) | 否 | 任何 |
|
||||
| POST | `/api/aftersales/:serialNumber/confirm` | 客户授权/未授权确认 | 否 | 任何 |
|
||||
| POST | `/api/aftersales` | 创建售后工单 | 是 | 管理员/技术员 |
|
||||
| GET | `/api/aftersales` | 工单列表(支持筛选) | 是 | 管理员/技术员 |
|
||||
| GET | `/api/aftersales/:serialNumber` | 工单详情 | 是 | 管理员/技术员 |
|
||||
| PATCH | `/api/aftersales/:serialNumber` | 更新工单(仅负责人或管理员)| 是 | 管理员/技术员 |
|
||||
| POST | `/api/aftersales/:serialNumber/qrcode` | 生成工单二维码 | 是 | 管理员/技术员 |
|
||||
| POST | `/api/aftersales/:serialNumber/submit` | 提交客户确认 | 是 | 管理员/技术员 |
|
||||
| POST | `/api/aftersales/:serialNumber/reassign` | 重新分配技术员 | 是 | 管理员 |
|
||||
| POST | `/api/aftersales/:serialNumber/force-close` | 强制关闭工单 | 是 | 管理员 |
|
||||
| DELETE | `/api/aftersales/:serialNumber` | 删除工单 | 是 | 管理员 |
|
||||
|
||||
**售后工单特点**:
|
||||
- 工单号格式: `zjbf-sh-YYMMNN`(年份后 2 位 + 月份 2 位 + 当月序号至少 2 位,例:`zjbf-sh-260501`)
|
||||
- 序号按月重置,软删除工单不释放编号(避免回收造成混淆)
|
||||
- 二维码扫码后客户输入手机号后 4 位进行身份校验
|
||||
- 客户确认接口每分钟同一工单最多 5 次请求
|
||||
- 工单状态机: `created` → `pending_confirmation` → `closed` / `rejected`,被退回后可重新提交
|
||||
- 公开查询不返回手机号(脱敏)
|
||||
|
||||
## 测试
|
||||
|
||||
### 运行所有测试
|
||||
|
||||
Reference in New Issue
Block a user