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

4.5 KiB

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.