165 lines
4.5 KiB
Markdown
165 lines
4.5 KiB
Markdown
# Refactor Report
|
|
|
|
Generated from `plans/rule-ai.md`.
|
|
|
|
## Canonical Reference
|
|
|
|
Primary canonical feature: `training-records`
|
|
|
|
Why:
|
|
|
|
- Uses Route Handlers plus Drizzle.
|
|
- Has feature API contracts, services, queries, and mutations.
|
|
- Uses server prefetch and TanStack Query hydration.
|
|
- Uses DataTable, DataTableToolbar, DataTablePagination, and row action menus.
|
|
- Uses TanStack Form plus Zod.
|
|
- Includes upload and review flows.
|
|
- Enforces role-aware behavior.
|
|
|
|
Secondary references:
|
|
|
|
- `employee-directory` for responsive table tuning and custom toolbar behavior.
|
|
- `announcements` for content publishing and lightweight state transitions.
|
|
- `audit-logs` for read-only table pattern.
|
|
|
|
## Findings
|
|
|
|
### Announcements
|
|
|
|
Status: partially off-pattern.
|
|
|
|
Findings:
|
|
|
|
- Uses manual `Pagination` rather than `DataTablePagination`.
|
|
- Uses card list layout, which may be acceptable for content feeds but should not be copied for data tables.
|
|
|
|
Recommended refactor:
|
|
|
|
- Keep card layout if announcements are intentionally content-first.
|
|
- If a management table is needed, add a DataTable-based management view instead of extending manual pagination.
|
|
|
|
### Notifications
|
|
|
|
Status: partially off-pattern.
|
|
|
|
Findings:
|
|
|
|
- Uses manual pagination in `notifications-page.tsx`.
|
|
- Should be reviewed if notifications become a true data-management table.
|
|
|
|
Recommended refactor:
|
|
|
|
- Convert to DataTable if filtering, sorting, view options, or admin review workflows grow.
|
|
|
|
### Online Lessons
|
|
|
|
Status: actively migrating.
|
|
|
|
Findings:
|
|
|
|
- Has a full feature module with API, service, queries, mutations, schema, server helper, form, list/detail pages.
|
|
- Recent table work should stay aligned to `DataTable` and `useDataTable`.
|
|
- Manage/list routes should avoid duplicated table implementations.
|
|
|
|
Recommended refactor:
|
|
|
|
- Keep only one canonical list table implementation.
|
|
- Remove or redirect legacy manage listing code after confirming no route depends on it.
|
|
|
|
### Employee Directory
|
|
|
|
Status: mostly aligned.
|
|
|
|
Findings:
|
|
|
|
- Uses DataTable and custom toolbar.
|
|
- Good reference for responsive table widths and hidden columns.
|
|
- No schema folder because it is currently backed by `users` and server data helpers rather than a new entity schema.
|
|
|
|
Recommended refactor:
|
|
|
|
- Keep as secondary canonical table reference.
|
|
|
|
### Products, Employees, Forms, Kanban, Chat, React Query Demo
|
|
|
|
Status: legacy/template/demo areas.
|
|
|
|
Findings:
|
|
|
|
- Some files still reflect starter-template patterns.
|
|
- Products and employees include older table/form conventions.
|
|
- Demo pages should not be copied for runtime features.
|
|
|
|
Recommended refactor:
|
|
|
|
- Do not use these as references for new features.
|
|
- Migrate only when a user-facing requirement touches the feature.
|
|
|
|
### Reports
|
|
|
|
Status: feature-specific dashboard view.
|
|
|
|
Findings:
|
|
|
|
- Uses custom report page and chart/table cards.
|
|
- Lint currently reports unused imports and nested component warnings in reports.
|
|
|
|
Recommended refactor:
|
|
|
|
- Clean unused report imports.
|
|
- Extract nested render components if reports are touched again.
|
|
|
|
### Shared Table Stack
|
|
|
|
Status: canonical.
|
|
|
|
Findings:
|
|
|
|
- `components/ui/table/data-table.tsx` is the canonical shell.
|
|
- `data-table-pagination.tsx` owns pagination UI.
|
|
- `data-table-toolbar.tsx` owns generic filter and view controls.
|
|
|
|
Recommended refactor:
|
|
|
|
- New tables should not create manual pagination.
|
|
- Feature-specific toolbars may wrap shared DataTable controls, but should not replace them wholesale.
|
|
|
|
### Forms
|
|
|
|
Status: canonical stack is clear.
|
|
|
|
Findings:
|
|
|
|
- Project uses TanStack Form, not React Hook Form.
|
|
- `components/ui/tanstack-form.tsx` is the shared entry point.
|
|
|
|
Recommended refactor:
|
|
|
|
- Do not introduce React Hook Form.
|
|
- Keep validation schemas in feature `schemas/`.
|
|
|
|
### Persistence And Server Actions
|
|
|
|
Status: canonical stack is clear.
|
|
|
|
Findings:
|
|
|
|
- Project uses Drizzle, not Prisma.
|
|
- Project uses Route Handlers, not `next-safe-action`, for runtime feature mutations.
|
|
|
|
Recommended refactor:
|
|
|
|
- Do not introduce Prisma.
|
|
- Do not introduce next-safe-action without an explicit architecture decision.
|
|
|
|
## Refactor Queue
|
|
|
|
1. Verify `online-lessons` has a single DataTable implementation and remove duplicated manage table code if no longer used.
|
|
2. Convert admin-heavy manual pagination screens to DataTable when they become data-management views.
|
|
3. Clean report warnings the next time report code is touched.
|
|
4. Keep legacy template features isolated and do not copy their patterns.
|
|
|
|
## Stop Rule
|
|
|
|
Before refactoring broad areas, ask for approval with a scoped plan. Documentation changes and narrow consistency fixes may proceed directly when requested.
|