Add shared engineering rule contracts
- go-logging: slog, server-side only, structured attributes - go-database: MySQL cursor safety, soft delete, GORM tags, fail-fast, N+1 prevention - go-background-tasks: Task Manager pattern, polling, no SSE - go-code-style: layering, error wrapping, startup sequence, config, templating - import-export: CSV Excel-compatible rules (BOM, semicolon, decimal comma, DD.MM.YYYY) - table-management: filtering and pagination rules added - CLAUDE.template.md: updated to reference all shared contracts Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -75,6 +75,30 @@ Canonical mapping:
|
||||
- right-aligned action icons.
|
||||
- Row action icons in `actions` column are intentionally smaller than toolbar icons.
|
||||
|
||||
## Filtering Rules
|
||||
|
||||
- Filters live above the table, in a dedicated filter bar or inline in the toolbar.
|
||||
- Every active filter must be visually indicated (highlighted field, chip, or badge count).
|
||||
- Applying a filter always resets pagination to page 1.
|
||||
- Filter state must be reflected in the URL as query parameters so the page is bookmarkable/shareable.
|
||||
- "Reset filters" clears all filter fields and reloads with no filter params.
|
||||
- Server-side filtering only — do not filter an already-loaded JS array client-side unless the full
|
||||
dataset is guaranteed small (< 500 rows) and never grows.
|
||||
- Filter inputs debounce text input (300–500 ms) before triggering a server request.
|
||||
|
||||
## Pagination Rules
|
||||
|
||||
- Pagination is server-side. Never load all rows and paginate client-side.
|
||||
- URL query parameters carry page state: `?page=2&per_page=50`.
|
||||
- `page` is 1-based.
|
||||
- `per_page` defaults to a fixed project constant (e.g. 50); user may change it from a fixed set
|
||||
(25 / 50 / 100).
|
||||
- The server response includes: `total_count`, `page`, `per_page`, `total_pages`.
|
||||
- Display: "Showing 51–100 of 342" — always show the range and total.
|
||||
- Prev/Next buttons are disabled (not hidden) at the boundary pages.
|
||||
- Direct page-number input is optional; if present it clamps to `[1, total_pages]` on blur.
|
||||
- Changing `per_page` resets to page 1.
|
||||
|
||||
## Reuse Rule
|
||||
|
||||
If a pattern needs table selection + bulk actions, it must:
|
||||
|
||||
Reference in New Issue
Block a user