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:
@@ -44,6 +44,7 @@ backend-go/
|
||||
├── config/ # Configuration management
|
||||
│ └── config.go # Config loading (.env, config.yaml, env vars)
|
||||
├── controllers/ # HTTP request handlers
|
||||
│ ├── aftersales_controller.go # Aftersales orders: create, query, submit, confirm, qrcode
|
||||
│ ├── auth_controller.go # Auth: login, profile, password change
|
||||
│ ├── companies_controller.go # Company CRUD
|
||||
│ ├── employees_controller.go # Employee serials: generate, query, update, revoke, qrcode
|
||||
@@ -55,12 +56,13 @@ backend-go/
|
||||
├── logger/ # Structured logging
|
||||
│ └── logger.go # Zap logger wrapper
|
||||
├── middleware/ # Middleware
|
||||
│ └── auth.go # JWT auth, Admin permission check
|
||||
│ └── auth.go # JWT auth, Admin / Technician permission checks
|
||||
├── models/ # Data models and DTOs
|
||||
│ └── models.go # User, Company, Serial, EmployeeSerial and DTOs
|
||||
│ └── models.go # User, Company, Serial, EmployeeSerial, AftersalesOrder and DTOs
|
||||
├── routes/ # Route configuration
|
||||
│ └── routes.go # API route registration
|
||||
├── services/ # Business logic layer
|
||||
│ ├── aftersales_service.go # Aftersales orders: create, list, update, submit, customer confirm, qrcode
|
||||
│ ├── auth_service.go # Auth: validate user, generate token, password management
|
||||
│ ├── companies_service.go # Company CRUD
|
||||
│ ├── employees_service.go # Employee serials: generate, query, update, revoke, qrcode
|
||||
@@ -87,6 +89,9 @@ backend-go/
|
||||
- **Serials**: `POST /api/serials/generate`, `POST /api/serials/generate-with-prefix`, `POST /api/serials/:serialNumber/qrcode`, `GET /api/serials/:serialNumber/query`, `GET /api/serials`, `PATCH /api/serials/:serialNumber`, `PUT /api/serials/:serialNumber`, `POST /api/serials/:serialNumber/revoke`
|
||||
- **Companies**: `GET /api/companies/stats/overview`, `GET /api/companies`, `GET /api/companies/:companyName`, `POST /api/companies`, `PATCH /api/companies/:companyName`, `PUT /api/companies/:companyName`, `POST /api/companies/:companyName/revoke`, `DELETE /api/companies/:companyName/serials/:serialNumber`, `DELETE /api/companies/:companyName`
|
||||
- **Employee Serials**: `POST /api/employee-serials/generate`, `POST /api/employee-serials/:serialNumber/qrcode`, `GET /api/employee-serials/:serialNumber/query`, `GET /api/employee-serials`, `PATCH /api/employee-serials/:serialNumber`, `PUT /api/employee-serials/:serialNumber`, `POST /api/employee-serials/:serialNumber/revoke`
|
||||
- **Aftersales** (公开): `GET /api/aftersales/:serialNumber/query`, `POST /api/aftersales/:serialNumber/confirm`
|
||||
- **Aftersales** (技术员+管理员): `POST /api/aftersales`, `GET /api/aftersales`, `GET /api/aftersales/:serialNumber`, `PATCH /api/aftersales/:serialNumber`, `POST /api/aftersales/:serialNumber/qrcode`, `POST /api/aftersales/:serialNumber/submit`
|
||||
- **Aftersales** (仅管理员): `POST /api/aftersales/:serialNumber/reassign`, `POST /api/aftersales/:serialNumber/force-close`, `DELETE /api/aftersales/:serialNumber`
|
||||
|
||||
### Import Organization
|
||||
Standard imports followed by third-party imports, then project imports (sorted alphabetically):
|
||||
@@ -219,6 +224,7 @@ After modifying Swagger annotations, run `make swagger`.
|
||||
### Middleware
|
||||
- **JWTAuthMiddleware**: Validates JWT tokens, sets user in context
|
||||
- **AdminMiddleware**: Checks if user has admin role
|
||||
- **TechnicianMiddleware**: Allows admin and technician roles (used for aftersales endpoints)
|
||||
- Access current user: `user, ok := GetCurrentUser(ctx)`
|
||||
|
||||
### Git Hooks
|
||||
|
||||
Reference in New Issue
Block a user