Files
alla-tms/docs/REFRACTOR_REPORT.md
2026-07-16 09:53:14 +07:00

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.