feat(frontend): 누락된 메뉴 14개 페이지 일괄 구현
신규 페이지 (모두 ProTable / ProCard 패턴): - org/OrgTree: 조직 트리 + 선택 시 우측에 소속 설계사 ProTable - product/CompanyList: 보험사 목록 - product/ProductList: 상품 목록 (보험종 필터) - rule/CommissionRateList: 수수료율 (보험사 통보) - rule/PayoutRuleList: 지급율 (직급 × 보험종 × 회차) - rule/OverrideRuleList: 오버라이드 규정 (직급 페어) - rule/ChargebackRuleList: 환수 규정 (실효 월수 구간) - rule/ExceptionCodeList: 예외 코드 마스터 - ledger/MaintainLedger: 유지수수료 원장 - receive/ReceiveData: 보험사 raw 수신 데이터 - receive/ReceiveMapping: 보험사 프로파일 + 필드 매핑 규칙 - system/MenuManage: 메뉴 트리 표시 (Tree) - system/SystemConfig: 키-값 설정 (그룹별 필터) - system/SystemLog: 로그인/API/변경 이력 3 탭 신규 API 모듈: - api/org.ts (조직 트리) - api/company.ts, api/product.ts - api/rule.ts (5종 통합) - api/receive.ts (profile/field/raw/error) - api/config.ts, api/log.ts App.tsx: 14 라우트 추가 (org/tree, companies, products, rules/*, receive/*, ledger/maintain, system/menus, system/config, system/logs) 검증: - tsc -b 통과 - 12개 백엔드 엔드포인트 200 OK 확인 - dev 서버 HMR 자동 반영 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+42
-4
@@ -3,18 +3,38 @@ import LoginPage from '@/pages/LoginPage';
|
||||
import MainLayout from '@/layouts/MainLayout';
|
||||
import Dashboard from '@/pages/Dashboard';
|
||||
|
||||
import OrgTree from '@/pages/org/OrgTree';
|
||||
import AgentList from '@/pages/org/AgentList';
|
||||
import AgentDetail from '@/pages/org/AgentDetail';
|
||||
import AgentForm from '@/pages/org/AgentForm';
|
||||
|
||||
import CompanyList from '@/pages/product/CompanyList';
|
||||
import ProductList from '@/pages/product/ProductList';
|
||||
import ContractList from '@/pages/product/ContractList';
|
||||
|
||||
import CommissionRateList from '@/pages/rule/CommissionRateList';
|
||||
import PayoutRuleList from '@/pages/rule/PayoutRuleList';
|
||||
import OverrideRuleList from '@/pages/rule/OverrideRuleList';
|
||||
import ChargebackRuleList from '@/pages/rule/ChargebackRuleList';
|
||||
import ExceptionCodeList from '@/pages/rule/ExceptionCodeList';
|
||||
|
||||
import ReceiveData from '@/pages/receive/ReceiveData';
|
||||
import ReceiveMapping from '@/pages/receive/ReceiveMapping';
|
||||
|
||||
import RecruitLedger from '@/pages/ledger/RecruitLedger';
|
||||
import MaintainLedger from '@/pages/ledger/MaintainLedger';
|
||||
import ExceptionLedger from '@/pages/ledger/ExceptionLedger';
|
||||
|
||||
import SettleList from '@/pages/settle/SettleList';
|
||||
import PaymentList from '@/pages/settle/PaymentList';
|
||||
import BatchRun from '@/pages/settle/BatchRun';
|
||||
import PaymentList from '@/pages/settle/PaymentList';
|
||||
|
||||
import UserList from '@/pages/system/UserList';
|
||||
import RoleList from '@/pages/system/RoleList';
|
||||
import MenuManage from '@/pages/system/MenuManage';
|
||||
import CodeList from '@/pages/system/CodeList';
|
||||
import SystemConfig from '@/pages/system/SystemConfig';
|
||||
import SystemLog from '@/pages/system/SystemLog';
|
||||
|
||||
function RequireAuth({ children }: { children: React.ReactNode }) {
|
||||
const token = localStorage.getItem('accessToken');
|
||||
@@ -28,20 +48,35 @@ export default function App() {
|
||||
<Route path="/" element={<RequireAuth><MainLayout /></RequireAuth>}>
|
||||
<Route index element={<Dashboard />} />
|
||||
|
||||
{/* 조직 / 설계사 */}
|
||||
{/* 조직 / 인사 */}
|
||||
<Route path="org/tree" element={<OrgTree />} />
|
||||
<Route path="org/agents" element={<AgentList />} />
|
||||
<Route path="org/agents/new" element={<AgentForm />} />
|
||||
<Route path="org/agents/:id" element={<AgentDetail />} />
|
||||
<Route path="org/agents/:id/edit" element={<AgentForm />} />
|
||||
|
||||
{/* 계약 */}
|
||||
{/* 상품 / 계약 */}
|
||||
<Route path="companies" element={<CompanyList />} />
|
||||
<Route path="products" element={<ProductList />} />
|
||||
<Route path="contracts" element={<ContractList />} />
|
||||
|
||||
{/* 수수료 규정 */}
|
||||
<Route path="rules/commission" element={<CommissionRateList />} />
|
||||
<Route path="rules/payout" element={<PayoutRuleList />} />
|
||||
<Route path="rules/override" element={<OverrideRuleList />} />
|
||||
<Route path="rules/chargeback" element={<ChargebackRuleList />} />
|
||||
<Route path="rules/exceptions" element={<ExceptionCodeList />} />
|
||||
|
||||
{/* 데이터 수신 */}
|
||||
<Route path="receive/data" element={<ReceiveData />} />
|
||||
<Route path="receive/mapping" element={<ReceiveMapping />} />
|
||||
|
||||
{/* 원장 */}
|
||||
<Route path="ledger/recruit" element={<RecruitLedger />} />
|
||||
<Route path="ledger/maintain" element={<MaintainLedger />} />
|
||||
<Route path="ledger/exception" element={<ExceptionLedger />} />
|
||||
|
||||
{/* 정산 / 지급 / 배치 */}
|
||||
{/* 정산 / 지급 */}
|
||||
<Route path="settle" element={<SettleList />} />
|
||||
<Route path="settle/batch" element={<BatchRun />} />
|
||||
<Route path="payments" element={<PaymentList />} />
|
||||
@@ -49,7 +84,10 @@ export default function App() {
|
||||
{/* 시스템관리 */}
|
||||
<Route path="system/users" element={<UserList />} />
|
||||
<Route path="system/roles" element={<RoleList />} />
|
||||
<Route path="system/menus" element={<MenuManage />} />
|
||||
<Route path="system/codes" element={<CodeList />} />
|
||||
<Route path="system/config" element={<SystemConfig />} />
|
||||
<Route path="system/logs" element={<SystemLog />} />
|
||||
</Route>
|
||||
</Routes>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user