refactor: remove company management APIs
This commit is contained in:
@@ -17,7 +17,7 @@ make test # Run all integration tests (./test
|
||||
go test -v ./services/... # Run service layer unit tests
|
||||
go test -v ./tests/... # Run integration tests
|
||||
go test -v -run TestAuthService_ValidateUser_Success ./services/... # Single test
|
||||
go test -v ./services/... -run TestSerialsService # Run test prefix
|
||||
go test -v ./services/... -run TestEmployeeSerialsService # Run test prefix
|
||||
make test-coverage # Generate coverage report
|
||||
```
|
||||
|
||||
@@ -46,10 +46,11 @@ backend-go/
|
||||
├── 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
|
||||
│ ├── dashboard_controller.go # Dashboard work-order statistics
|
||||
│ ├── employees_controller.go # Employee permission codes: generate, query, update, revoke, qrcode
|
||||
│ ├── helper.go # Helper functions (GetCurrentUser, BindJSON, Response)
|
||||
│ ├── serials_controller.go # Company serials: generate, query, update, revoke, qrcode
|
||||
│ ├── product_traces_controller.go # Product traceability
|
||||
│ ├── project_orders_controller.go # Project work orders
|
||||
│ └── users_controller.go # Employee master data / backend account management
|
||||
├── database/ # Database connection and migrations
|
||||
│ └── database.go # GORM init, AutoMigrate
|
||||
@@ -59,17 +60,18 @@ backend-go/
|
||||
├── middleware/ # Middleware
|
||||
│ └── auth.go # JWT auth, Admin / Technician permission checks
|
||||
├── models/ # Data models and DTOs
|
||||
│ └── models.go # User, Company, Serial, EmployeeSerial, AftersalesOrder and DTOs
|
||||
│ └── models.go # User, Company, EmployeeSerial, ProductTrace, AftersalesOrder, ProjectOrder 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
|
||||
│ ├── serials_service.go # Company serials: generate, query, update, revoke, qrcode
|
||||
│ ├── dashboard_service.go # Dashboard work-order statistics
|
||||
│ ├── employees_service.go # Employee permission codes: generate, query, update, revoke, qrcode
|
||||
│ ├── product_traces_service.go # Product traceability
|
||||
│ ├── project_orders_service.go # Project work orders
|
||||
│ ├── aftersales_service_test.go # Aftersales unit tests
|
||||
│ ├── services_test.go # Auth / Serials / Employees / Companies unit tests
|
||||
│ ├── services_test.go # Auth / employee permission-code unit tests
|
||||
│ ├── users_service.go # Employee CRUD, role management, password reset (admin)
|
||||
│ └── users_service_test.go # Employee/user account unit tests
|
||||
├── tests/ # Integration tests
|
||||
@@ -90,12 +92,15 @@ backend-go/
|
||||
|
||||
### API Surface (Current)
|
||||
- **Auth**: `POST /api/auth/login`, `POST /api/auth/logout`, `GET /api/auth/profile`, `PUT /api/auth/profile`, `POST /api/auth/change-password`
|
||||
- **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`
|
||||
- **Dashboard**: `GET /api/dashboard/stats`
|
||||
- **Employee Permission Codes**: `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`, `DELETE /api/employee-serials/:serialNumber`
|
||||
- **Product Traces**: `GET /api/product-traces/:serialNumber/query`, `POST /api/product-traces`, `GET /api/product-traces`, `GET /api/product-traces/:serialNumber`, `PATCH /api/product-traces/:serialNumber`, `POST /api/product-traces/:serialNumber/qrcode`, `POST /api/product-traces/:serialNumber/wechat-qrcode`, `POST /api/product-traces/:serialNumber/revoke`, `DELETE /api/product-traces/:serialNumber`
|
||||
- **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`
|
||||
- **Project Orders** (公开): `GET /api/project-orders/:serialNumber/query`, `POST /api/project-orders/:serialNumber/site-images`, `POST /api/project-orders/:serialNumber/complete`
|
||||
- **Project Orders** (技术员+管理员): `POST /api/project-orders`, `GET /api/project-orders`, `GET /api/project-orders/:serialNumber`, `PATCH /api/project-orders/:serialNumber`, `POST /api/project-orders/:serialNumber/qrcode`, `POST /api/project-orders/:serialNumber/submit`
|
||||
- **Project Orders** (仅管理员): `POST /api/project-orders/:serialNumber/reassign`, `POST /api/project-orders/:serialNumber/force-close`, `DELETE /api/project-orders/:serialNumber`
|
||||
- **Users** (技术员+管理员): `GET /api/users/assignable`
|
||||
- **Employees** (仅管理员): `POST /api/employees`, `GET /api/employees`, `PATCH /api/employees/:id`, `POST /api/employees/:id/reset-password`, `DELETE /api/employees/:id`
|
||||
|
||||
@@ -104,12 +109,13 @@ backend-go/
|
||||
- `admin` has full backend access.
|
||||
- `technician` only has aftersales/work-order module access.
|
||||
- `employee` has no backend login access and does not require a password.
|
||||
- Creating an employee through `/api/employees` creates employee master data and automatically generates one employee serial bound by `employeeId`.
|
||||
- Creating an employee through `/api/employees` creates employee master data and automatically generates one employee permission code bound by `employeeId`.
|
||||
- `admin` / `technician` creation requires an initial password; `employee` creation must not require one.
|
||||
|
||||
### Business Boundaries
|
||||
- Company management (`Company`, `/api/companies`) is for authorized agents/company-code verification.
|
||||
- Aftersales order `companyName` is customer information stored on the order only; creating or updating an aftersales order must not create or link a `Company` record.
|
||||
- Enterprise/company-code management was removed. Do not reintroduce `/api/companies`, `/api/serials`, `CompaniesService`, `SerialsService`, or a company-management UI.
|
||||
- The `Company` model remains only as internal compatibility for employee permission-code ownership; it is not an exposed management feature.
|
||||
- Aftersales/project order `companyName` is customer information stored on the order only; creating or updating a work order must not create a managed-company feature.
|
||||
|
||||
### Import Organization
|
||||
Standard imports followed by third-party imports, then project imports (sorted alphabetically):
|
||||
@@ -127,9 +133,9 @@ import (
|
||||
```
|
||||
|
||||
### Naming Conventions
|
||||
- **Controllers**: `AuthController`, `SerialsController`, `CompaniesController`, `EmployeeSerialsController`
|
||||
- **Services**: `AuthService`, `SerialsService`, `CompaniesService`, `EmployeeSerialsService`
|
||||
- **Models**: `User`, `Company`, `Serial` (use PascalCase for exported structs)
|
||||
- **Controllers**: `AuthController`, `DashboardController`, `EmployeeSerialsController`, `ProductTracesController`, `ProjectOrdersController`
|
||||
- **Services**: `AuthService`, `DashboardService`, `EmployeeSerialsService`, `ProductTracesService`, `ProjectOrdersService`
|
||||
- **Models**: `User`, `Company`, `EmployeeSerial`, `ProductTrace`, `AftersalesOrder`, `ProjectOrder` (use PascalCase for exported structs)
|
||||
- **DTOs**: `LoginDTO`, `ChangePasswordDTO`, `UpdateProfileDTO` (DTO suffix)
|
||||
- **Functions**: `ValidateUser`, `Generate`, `Query` (PascalCase for exported)
|
||||
- **Variables**: camelCase for local variables, PascalCase for exported
|
||||
|
||||
Reference in New Issue
Block a user