Files
lcbp3/specs/09-history/TASK-FE-014-reference-data-ui.md
admin c8a0f281ef
Some checks failed
Spec Validation / validate-markdown (push) Has been cancelled
Spec Validation / validate-diagrams (push) Has been cancelled
Spec Validation / check-todos (push) Has been cancelled
251210:1709 Frontend: reeactor organization and run build
2025-12-10 17:09:11 +07:00

3.2 KiB

TASK-FE-014: Reference Data & Lookups UI

ID: TASK-FE-014 Title: Reference Data & Lookups Management UI Category: Administration Priority: P3 (Low) Effort: 3-5 days Dependencies: TASK-FE-010, TASK-BE-012 Assigned To: Frontend Developer


📋 Overview

Build a generic or specific UI for managing various system lookup tables (Master Data) that are essential for the application but change infrequently. This includes Disciplines, Drawing Categories, RFA Types, and Tags.


🎯 Objectives

  1. Manage Correspondence Types (and Sub-types)
  2. Manage RFA Types and associated Approve Codes
  3. Manage Drawing Categories (Main & Sub-categories)
  4. Manage Disciplines (System-wide codes)
  5. Manage Tags and other minor lookups

Acceptance Criteria

  • Admin can create/edit/delete Correspondence Types
  • Admin can manage RFA Types and their Approve Codes
  • Admin can configure Drawing Categories (Main/Sub)
  • Admin can manage Disciplines (Code & Name)
  • UI supports "Soft Delete" (Active/Inactive toggle)
  • Updates reflect immediately in dropdowns across the system

🔧 Implementation Steps

Step 1: Specific Lookup Pages vs Generic Table

Since these tables have similar structures (Code, Name, Description, IsActive), you can either build: A. Generic Master Data Component (Recommended for simple tables) B. Dedicated Pages for complex relations (like Categories -> Sub-categories)

  • Dedicated Page: for RFA Types (due to relationship with Approve Codes)
  • Dedicated Page: for Drawing Categories (Hierarchical)
  • Generic/Shared Page: for Disciplines, Tags, Correspondence Types

Step 2: RFA Configuration Page

// File: src/app/(admin)/admin/reference/rfa-types/page.tsx
'use client';

import { useState } from 'react';
import { DataTable } from '@/components/common/data-table';
import { Button } from '@/components/ui/button';
// ... imports

export default function RfaConfigPage() {
  const [types, setTypes] = useState([]);

  // Columns: Code, Name, Contract, Active Status, Actions

  return (
     <div className="p-6">
        <div className="flex justify-between mb-6">
           <h1 className="text-2xl font-bold">RFA Types Configuration</h1>
           <Button>Add Type</Button>
        </div>
        <DataTable data={types} columns={/*...*/} />
     </div>
  );
}

Step 3: Disciplines Management

// File: src/app/(admin)/admin/reference/disciplines/page.tsx
'use client';

import { useMutation, useQuery } from '@tanstack/react-query';
import { api } from '@/lib/api';

// Simple table to manage 'disciplines'
// Fields: discipline_code, code_name_th, code_name_en

Step 4: Drawing Categories (Hierarchy)

// File: src/app/(admin)/admin/reference/drawing-categories/page.tsx
// Needs to handle Main Category -> Sub Category relationship

📦 Deliverables

  • RFA Types Management Page
  • Drawing Categories Management Page
  • Disciplines Management Page
  • Correspondence Types Management Page
  • Unified "Reference Data" Sidebar Group