refactor: rename safe and audit backend resources

This commit is contained in:
2026-07-27 14:28:23 +08:00
parent 068b4e0ed9
commit 4e1f8a13e3
17 changed files with 193 additions and 96 deletions

View File

@@ -0,0 +1,97 @@
# Task 2 Report: Safe and Audit Backend Rename
## Status
Task 2 is complete for the backend. The model exports, ORM table names, resource
contracts, protected routes, approval workflow, dashboard query, and focused SQL
tests now use the `safe_*` and `audit_*` names exclusively. No frontend
resources, routes, or pages were changed.
## TDD Evidence
The existing Task 1 route and resource-contract tests provided the initial RED
baseline. Before production changes, the backend focused suite failed because
the `safe_*` and `audit_*` contracts/routes were missing while the legacy
`saf_*` and `aud_*` routes remained registered.
The backend behavior tests were then updated first for the renamed model API,
tables, request paths, and disposal relation. Running the focused suite again
failed as expected with `models.SafeRule` undefined, in addition to the route
contract failures. This confirmed the tests required the production rename.
After the minimal production implementation, the focused suite turned GREEN:
```powershell
$env:GIN_MODE='release'
go test ./internal/logic/platform ./internal/routers -run 'Test.*(Safe|Audit)' -v
```
Result: exit code 0. All selected safe/audit logic and router tests passed.
## Implementation
- Renamed the seven model files and exports to:
- `models.SafeRule`
- `models.SafeEvent`
- `models.SafeEventDisposal`
- `models.SafeInspection`
- `models.AuditApproval`
- `models.AuditExportLog`
- `models.AuditOperationLog`
- Updated model comments while preserving the Chinese model and field
descriptions.
- Updated migration registrations and `TableName()` values to `safe_rule`,
`safe_event`, `safe_event_disposal`, `safe_inspection`, `audit_approval`,
`audit_export_log`, and `audit_operation_log`.
- Renamed the disposal relation field, GORM column, JSON field, queries, and SQL
expectations to `safe_event_identity`.
- Renamed the safety and audit resource catalogue entries and protected routes,
including the append-only safe-event disposal endpoints and the audit approval
action.
- Updated the audit workflow to persist to the renamed audit tables and record
`audit_approval` as its object type.
- Updated dashboard and resource behavior tests for the renamed tables and
models.
No legacy aliases were retained. No table/data migration was added.
## Verification
From `backend/api`:
```powershell
go test ./...
```
Result: exit code 0; all Go packages passed.
```powershell
go build ./cmd/main
```
Result: exit code 0.
Production-only searches found no legacy model exports, `saf_`/`aud_` tokens, or
legacy model filenames under `backend/api`. Negative assertions in backend tests
intentionally retain the old public paths so regressions cannot reintroduce
aliases.
From `frontend/platform_admin`:
```powershell
node --test scripts/audit-check.test.mjs
```
Result: expected exit code 1, with 6 passing and 1 failing test. The remaining
failure is the Task 1 frontend rename contract assigned to Task 3. No frontend
file was modified by this task.
`git diff --check` completed without whitespace errors.
## Concerns
- Deploying this backend before Task 3 would leave the current frontend calling
the removed legacy resource paths. The coordinated frontend rename must ship
with the backend contract change.
- Historical `saf_*` and `aud_*` tables/data are intentionally not migrated or
aliased, per the task constraint.