refactor(WEB): URL 경로 juil → construction 변경
- /juil/ 경로를 /construction/으로 변경 - 컴포넌트 폴더명 juil → construction 변경 - 컴포넌트명 Juil* → Construction* 변경 - 테스트 URL 페이지 경로 업데이트 - claudedocs 문서 경로 업데이트 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
66
claudedocs/[REF] construction-pages-test-urls.md
Normal file
66
claudedocs/[REF] construction-pages-test-urls.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# Juil Enterprise Test URLs
|
||||
Last Updated: 2026-01-05
|
||||
|
||||
### 대시보드
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **메인 대시보드** | `/ko/construction/dashboard` | ✅ 완료 |
|
||||
|
||||
## 프로젝트 관리 (Project)
|
||||
### 메인
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **프로젝트 관리 메인** | `/ko/construction/project` | 🚧 구조잡기 |
|
||||
|
||||
### 입찰관리 (Bidding)
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **거래처 관리** | `/ko/construction/project/bidding/partners` | ✅ 완료 |
|
||||
| **현장설명회관리** | `/ko/construction/project/bidding/site-briefings` | ✅ 완료 |
|
||||
| **견적관리** | `/ko/construction/project/bidding/estimates` | ✅ 완료 |
|
||||
| **입찰관리** | `/ko/construction/project/bidding` | ✅ 완료 |
|
||||
|
||||
### 계약관리 (Contract)
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **계약관리** | `/ko/construction/project/contract` | 🆕 NEW |
|
||||
| **인수인계보고서관리** | `/ko/construction/project/contract/handover-report` | 🆕 NEW |
|
||||
|
||||
### 발주관리 (Order)
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **현장관리** | `/ko/construction/order/site-management` | 🆕 NEW |
|
||||
| **구조검토관리** | `/ko/construction/order/structure-review` | 🆕 NEW |
|
||||
| **발주관리** | `/ko/construction/order/order-management` | 🆕 NEW |
|
||||
|
||||
### 기준정보 (Base Info) - 발주관리 하위
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **카테고리관리** | `/ko/construction/order/base-info/categories` | 🆕 NEW |
|
||||
| **품목관리** | `/ko/construction/order/base-info/items` | 🆕 NEW |
|
||||
| **단가관리** | `/ko/construction/order/base-info/pricing` | 🆕 NEW |
|
||||
| **노임관리** | `/ko/construction/order/base-info/labor` | 🆕 NEW |
|
||||
|
||||
## 공사 관리 (Construction)
|
||||
### 인수인계 / 실측 / 발주 / 시공
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **공사 관리 메인** | `/ko/construction/construction` | 🚧 구조잡기 |
|
||||
|
||||
## 현장 작업 (Field)
|
||||
### 할당 / 인력 / 근태 / 보고
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **현장 작업 메인** | `/ko/construction/field` | 🚧 구조잡기 |
|
||||
|
||||
## 기성/정산 (Finance)
|
||||
### 기성 / 변경계약 / 정산
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **재무 관리 메인** | `/ko/construction/finance` | 🚧 구조잡기 |
|
||||
|
||||
## 시스템 (System)
|
||||
### 공통
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **개발용 메뉴 목록** | `/ko/dev/juil-test-urls` | ✅ 완료 |
|
||||
@@ -1,66 +0,0 @@
|
||||
# Juil Enterprise Test URLs
|
||||
Last Updated: 2026-01-05
|
||||
|
||||
### 대시보드
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **메인 대시보드** | `/ko/juil/dashboard` | ✅ 완료 |
|
||||
|
||||
## 프로젝트 관리 (Project)
|
||||
### 메인
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **프로젝트 관리 메인** | `/ko/juil/project` | 🚧 구조잡기 |
|
||||
|
||||
### 입찰관리 (Bidding)
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **거래처 관리** | `/ko/juil/project/bidding/partners` | ✅ 완료 |
|
||||
| **현장설명회관리** | `/ko/juil/project/bidding/site-briefings` | ✅ 완료 |
|
||||
| **견적관리** | `/ko/juil/project/bidding/estimates` | ✅ 완료 |
|
||||
| **입찰관리** | `/ko/juil/project/bidding` | ✅ 완료 |
|
||||
|
||||
### 계약관리 (Contract)
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **계약관리** | `/ko/juil/project/contract` | 🆕 NEW |
|
||||
| **인수인계보고서관리** | `/ko/juil/project/contract/handover-report` | 🆕 NEW |
|
||||
|
||||
### 발주관리 (Order)
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **현장관리** | `/ko/juil/order/site-management` | 🆕 NEW |
|
||||
| **구조검토관리** | `/ko/juil/order/structure-review` | 🆕 NEW |
|
||||
| **발주관리** | `/ko/juil/order/order-management` | 🆕 NEW |
|
||||
|
||||
### 기준정보 (Base Info) - 발주관리 하위
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **카테고리관리** | `/ko/juil/order/base-info/categories` | 🆕 NEW |
|
||||
| **품목관리** | `/ko/juil/order/base-info/items` | 🆕 NEW |
|
||||
| **단가관리** | `/ko/juil/order/base-info/pricing` | 🆕 NEW |
|
||||
| **노임관리** | `/ko/juil/order/base-info/labor` | 🆕 NEW |
|
||||
|
||||
## 공사 관리 (Construction)
|
||||
### 인수인계 / 실측 / 발주 / 시공
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **공사 관리 메인** | `/ko/juil/construction` | 🚧 구조잡기 |
|
||||
|
||||
## 현장 작업 (Field)
|
||||
### 할당 / 인력 / 근태 / 보고
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **현장 작업 메인** | `/ko/juil/field` | 🚧 구조잡기 |
|
||||
|
||||
## 기성/정산 (Finance)
|
||||
### 기성 / 변경계약 / 정산
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **재무 관리 메인** | `/ko/juil/finance` | 🚧 구조잡기 |
|
||||
|
||||
## 시스템 (System)
|
||||
### 공통
|
||||
| 페이지 | URL | 상태 |
|
||||
|---|---|---|
|
||||
| **개발용 메뉴 목록** | `/ko/dev/juil-test-urls` | ✅ 완료 |
|
||||
@@ -0,0 +1,5 @@
|
||||
import { CategoryManagement } from '@/components/business/construction/category-management';
|
||||
|
||||
export default function CategoriesPage() {
|
||||
return <CategoryManagement />;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import { ItemDetailClient } from '@/components/business/juil/item-management';
|
||||
import { ItemDetailClient } from '@/components/business/construction/item-management';
|
||||
|
||||
interface ItemDetailPageProps {
|
||||
params: Promise<{ id: string }>;
|
||||
@@ -0,0 +1,5 @@
|
||||
import { ItemDetailClient } from '@/components/business/construction/item-management';
|
||||
|
||||
export default function ItemNewPage() {
|
||||
return <ItemDetailClient isNewMode />;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import { ItemManagementClient } from '@/components/business/construction/item-management';
|
||||
|
||||
export default function ItemManagementPage() {
|
||||
return <ItemManagementClient />;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import { LaborDetailClient } from '@/components/business/juil/labor-management';
|
||||
import { LaborDetailClient } from '@/components/business/construction/labor-management';
|
||||
|
||||
interface LaborDetailPageProps {
|
||||
params: Promise<{ id: string }>;
|
||||
@@ -0,0 +1,5 @@
|
||||
import { LaborDetailClient } from '@/components/business/construction/labor-management';
|
||||
|
||||
export default function LaborNewPage() {
|
||||
return <LaborDetailClient isNewMode />;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import { LaborManagementClient } from '@/components/business/construction/labor-management';
|
||||
|
||||
export default function LaborManagementPage() {
|
||||
return <LaborManagementClient />;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import PricingDetailClient from '@/components/business/juil/pricing-management/PricingDetailClient';
|
||||
import PricingDetailClient from '@/components/business/construction/pricing-management/PricingDetailClient';
|
||||
|
||||
interface PageProps {
|
||||
params: Promise<{ id: string }>;
|
||||
@@ -1,4 +1,4 @@
|
||||
import PricingDetailClient from '@/components/business/juil/pricing-management/PricingDetailClient';
|
||||
import PricingDetailClient from '@/components/business/construction/pricing-management/PricingDetailClient';
|
||||
|
||||
interface PageProps {
|
||||
params: Promise<{ id: string }>;
|
||||
@@ -0,0 +1,5 @@
|
||||
import PricingDetailClient from '@/components/business/construction/pricing-management/PricingDetailClient';
|
||||
|
||||
export default function PricingNewPage() {
|
||||
return <PricingDetailClient mode="create" />;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import PricingListClient from '@/components/business/construction/pricing-management/PricingListClient';
|
||||
|
||||
export default function PricingPage() {
|
||||
return <PricingListClient />;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import { OrderDetailForm } from '@/components/business/juil/order-management';
|
||||
import { getOrderDetailFull } from '@/components/business/juil/order-management/actions';
|
||||
import { OrderDetailForm } from '@/components/business/construction/order-management';
|
||||
import { getOrderDetailFull } from '@/components/business/construction/order-management/actions';
|
||||
import { notFound } from 'next/navigation';
|
||||
|
||||
interface OrderEditPageProps {
|
||||
@@ -1,5 +1,5 @@
|
||||
import { OrderDetailForm } from '@/components/business/juil/order-management';
|
||||
import { getOrderDetailFull } from '@/components/business/juil/order-management/actions';
|
||||
import { OrderDetailForm } from '@/components/business/construction/order-management';
|
||||
import { getOrderDetailFull } from '@/components/business/construction/order-management/actions';
|
||||
import { notFound } from 'next/navigation';
|
||||
|
||||
interface OrderDetailPageProps {
|
||||
@@ -1,4 +1,4 @@
|
||||
import { OrderManagementListClient } from '@/components/business/juil/order-management';
|
||||
import { OrderManagementListClient } from '@/components/business/construction/order-management';
|
||||
|
||||
export default function OrderManagementPage() {
|
||||
return <OrderManagementListClient />;
|
||||
@@ -1,4 +1,4 @@
|
||||
import SiteDetailForm from '@/components/business/juil/site-management/SiteDetailForm';
|
||||
import SiteDetailForm from '@/components/business/construction/site-management/SiteDetailForm';
|
||||
|
||||
// 목업 데이터
|
||||
const MOCK_SITE = {
|
||||
@@ -1,4 +1,4 @@
|
||||
import SiteDetailForm from '@/components/business/juil/site-management/SiteDetailForm';
|
||||
import SiteDetailForm from '@/components/business/construction/site-management/SiteDetailForm';
|
||||
|
||||
// 목업 데이터
|
||||
const MOCK_SITE = {
|
||||
@@ -1,4 +1,4 @@
|
||||
import { SiteManagementListClient } from '@/components/business/juil/site-management';
|
||||
import { SiteManagementListClient } from '@/components/business/construction/site-management';
|
||||
|
||||
export default function SiteManagementPage() {
|
||||
return <SiteManagementListClient />;
|
||||
@@ -1,4 +1,4 @@
|
||||
import StructureReviewDetailForm from '@/components/business/juil/structure-review/StructureReviewDetailForm';
|
||||
import StructureReviewDetailForm from '@/components/business/construction/structure-review/StructureReviewDetailForm';
|
||||
|
||||
// 목업 데이터
|
||||
const MOCK_REVIEW = {
|
||||
@@ -1,4 +1,4 @@
|
||||
import StructureReviewDetailForm from '@/components/business/juil/structure-review/StructureReviewDetailForm';
|
||||
import StructureReviewDetailForm from '@/components/business/construction/structure-review/StructureReviewDetailForm';
|
||||
|
||||
// 목업 데이터
|
||||
const MOCK_REVIEW = {
|
||||
@@ -0,0 +1,5 @@
|
||||
import StructureReviewListClient from '@/components/business/construction/structure-review/StructureReviewListClient';
|
||||
|
||||
export default function StructureReviewListPage() {
|
||||
return <StructureReviewListClient />;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import { BiddingDetailForm, getBiddingDetail } from '@/components/business/juil/bidding';
|
||||
import { BiddingDetailForm, getBiddingDetail } from '@/components/business/construction/bidding';
|
||||
|
||||
interface BiddingEditPageProps {
|
||||
params: Promise<{ id: string }>;
|
||||
@@ -1,4 +1,4 @@
|
||||
import { BiddingDetailForm, getBiddingDetail } from '@/components/business/juil/bidding';
|
||||
import { BiddingDetailForm, getBiddingDetail } from '@/components/business/construction/bidding';
|
||||
|
||||
interface BiddingDetailPageProps {
|
||||
params: Promise<{ id: string }>;
|
||||
@@ -1,5 +1,5 @@
|
||||
import { EstimateDetailForm } from '@/components/business/juil/estimates';
|
||||
import type { EstimateDetail } from '@/components/business/juil/estimates';
|
||||
import { EstimateDetailForm } from '@/components/business/construction/estimates';
|
||||
import type { EstimateDetail } from '@/components/business/construction/estimates';
|
||||
|
||||
interface EstimateEditPageProps {
|
||||
params: Promise<{ id: string }>;
|
||||
@@ -1,5 +1,5 @@
|
||||
import { EstimateDetailForm } from '@/components/business/juil/estimates';
|
||||
import type { EstimateDetail } from '@/components/business/juil/estimates';
|
||||
import { EstimateDetailForm } from '@/components/business/construction/estimates';
|
||||
import type { EstimateDetail } from '@/components/business/construction/estimates';
|
||||
|
||||
interface EstimateDetailPageProps {
|
||||
params: Promise<{ id: string }>;
|
||||
@@ -0,0 +1,5 @@
|
||||
import { EstimateListClient } from '@/components/business/construction/estimates';
|
||||
|
||||
export default function EstimatesPage() {
|
||||
return <EstimateListClient />;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import { BiddingListClient } from '@/components/business/construction/bidding';
|
||||
|
||||
export default function BiddingPage() {
|
||||
return <BiddingListClient />;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import PartnerForm from '@/components/business/juil/partners/PartnerForm';
|
||||
import { getPartner } from '@/components/business/juil/partners/actions';
|
||||
import PartnerForm from '@/components/business/construction/partners/PartnerForm';
|
||||
import { getPartner } from '@/components/business/construction/partners/actions';
|
||||
|
||||
interface PartnerEditPageProps {
|
||||
params: Promise<{ id: string }>;
|
||||
@@ -1,5 +1,5 @@
|
||||
import PartnerForm from '@/components/business/juil/partners/PartnerForm';
|
||||
import { getPartner } from '@/components/business/juil/partners/actions';
|
||||
import PartnerForm from '@/components/business/construction/partners/PartnerForm';
|
||||
import { getPartner } from '@/components/business/construction/partners/actions';
|
||||
|
||||
interface PartnerDetailPageProps {
|
||||
params: Promise<{ id: string }>;
|
||||
@@ -0,0 +1,5 @@
|
||||
import PartnerForm from '@/components/business/construction/partners/PartnerForm';
|
||||
|
||||
export default function PartnerNewPage() {
|
||||
return <PartnerForm mode="new" />;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import { PartnerListClient } from '@/components/business/construction/partners';
|
||||
|
||||
export default function PartnersPage() {
|
||||
return <PartnerListClient />;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import { SiteBriefingForm, getSiteBriefing } from '@/components/business/juil/site-briefings';
|
||||
import { SiteBriefingForm, getSiteBriefing } from '@/components/business/construction/site-briefings';
|
||||
|
||||
interface SiteBriefingEditPageProps {
|
||||
params: Promise<{ id: string }>;
|
||||
@@ -1,4 +1,4 @@
|
||||
import { SiteBriefingForm, getSiteBriefing } from '@/components/business/juil/site-briefings';
|
||||
import { SiteBriefingForm, getSiteBriefing } from '@/components/business/construction/site-briefings';
|
||||
|
||||
interface SiteBriefingDetailPageProps {
|
||||
params: Promise<{ id: string }>;
|
||||
@@ -1,4 +1,4 @@
|
||||
import { SiteBriefingForm } from '@/components/business/juil/site-briefings';
|
||||
import { SiteBriefingForm } from '@/components/business/construction/site-briefings';
|
||||
|
||||
export default function SiteBriefingNewPage() {
|
||||
return <SiteBriefingForm mode="new" />;
|
||||
@@ -0,0 +1,5 @@
|
||||
import { SiteBriefingListClient } from '@/components/business/construction/site-briefings';
|
||||
|
||||
export default function SiteBriefingsPage() {
|
||||
return <SiteBriefingListClient />;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import ContractDetailForm from '@/components/business/juil/contract/ContractDetailForm';
|
||||
import { getContractDetail } from '@/components/business/juil/contract';
|
||||
import ContractDetailForm from '@/components/business/construction/contract/ContractDetailForm';
|
||||
import { getContractDetail } from '@/components/business/construction/contract';
|
||||
|
||||
interface ContractEditPageProps {
|
||||
params: Promise<{ id: string }>;
|
||||
@@ -1,5 +1,5 @@
|
||||
import ContractDetailForm from '@/components/business/juil/contract/ContractDetailForm';
|
||||
import { getContractDetail } from '@/components/business/juil/contract';
|
||||
import ContractDetailForm from '@/components/business/construction/contract/ContractDetailForm';
|
||||
import { getContractDetail } from '@/components/business/construction/contract';
|
||||
|
||||
interface ContractDetailPageProps {
|
||||
params: Promise<{ id: string }>;
|
||||
@@ -1,4 +1,4 @@
|
||||
import { HandoverReportDetailForm, getHandoverReportDetail } from '@/components/business/juil/handover-report';
|
||||
import { HandoverReportDetailForm, getHandoverReportDetail } from '@/components/business/construction/handover-report';
|
||||
|
||||
interface HandoverReportEditPageProps {
|
||||
params: Promise<{
|
||||
@@ -1,4 +1,4 @@
|
||||
import { HandoverReportDetailForm, getHandoverReportDetail } from '@/components/business/juil/handover-report';
|
||||
import { HandoverReportDetailForm, getHandoverReportDetail } from '@/components/business/construction/handover-report';
|
||||
|
||||
interface HandoverReportDetailPageProps {
|
||||
params: Promise<{
|
||||
@@ -1,4 +1,4 @@
|
||||
import { HandoverReportListClient } from '@/components/business/juil/handover-report';
|
||||
import { HandoverReportListClient } from '@/components/business/construction/handover-report';
|
||||
|
||||
export default function HandoverReportPage() {
|
||||
return <HandoverReportListClient />;
|
||||
@@ -0,0 +1,5 @@
|
||||
import { ContractListClient } from '@/components/business/construction/contract';
|
||||
|
||||
export default function ContractPage() {
|
||||
return <ContractListClient />;
|
||||
}
|
||||
@@ -145,7 +145,7 @@ function CategorySection({ category, baseUrl }: { category: UrlCategory; baseUrl
|
||||
);
|
||||
}
|
||||
|
||||
export default function JuilTestUrlsClient({ initialData, lastUpdated }: TestUrlsClientProps) {
|
||||
export default function ConstructionTestUrlsClient({ initialData, lastUpdated }: TestUrlsClientProps) {
|
||||
const [baseUrl, setBaseUrl] = useState('http://localhost:3000');
|
||||
const [searchTerm, setSearchTerm] = useState('');
|
||||
|
||||
@@ -255,7 +255,7 @@ export default function JuilTestUrlsClient({ initialData, lastUpdated }: TestUrl
|
||||
{/* Footer */}
|
||||
<div className="mt-8 pt-6 border-t border-gray-200 dark:border-gray-700 text-center text-sm text-gray-500">
|
||||
<p>
|
||||
📁 데이터 소스: <code className="bg-gray-100 dark:bg-gray-800 px-1.5 py-0.5 rounded">claudedocs/[REF] juil-pages-test-urls.md</code>
|
||||
📁 데이터 소스: <code className="bg-gray-100 dark:bg-gray-800 px-1.5 py-0.5 rounded">claudedocs/[REF] construction-pages-test-urls.md</code>
|
||||
</p>
|
||||
<p className="mt-1 text-green-600 dark:text-green-400">
|
||||
md 파일 수정 후 새로고침하면 자동 반영!
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
import { promises as fs } from 'fs';
|
||||
import path from 'path';
|
||||
import JuilTestUrlsClient, { UrlCategory, UrlItem } from './JuilTestUrlsClient';
|
||||
import ConstructionTestUrlsClient, { UrlCategory, UrlItem } from './ConstructionTestUrlsClient';
|
||||
|
||||
// 아이콘 매핑
|
||||
const iconMap: Record<string, string> = {
|
||||
@@ -127,7 +127,7 @@ export default async function TestUrlsPage() {
|
||||
const mdFilePath = path.join(
|
||||
process.cwd(),
|
||||
'claudedocs',
|
||||
'[REF] juil-pages-test-urls.md'
|
||||
'[REF] construction-pages-test-urls.md'
|
||||
);
|
||||
|
||||
let urlData: UrlCategory[] = [];
|
||||
@@ -144,7 +144,7 @@ export default async function TestUrlsPage() {
|
||||
urlData = [];
|
||||
}
|
||||
|
||||
return <JuilTestUrlsClient initialData={urlData} lastUpdated={lastUpdated} />;
|
||||
return <ConstructionTestUrlsClient initialData={urlData} lastUpdated={lastUpdated} />;
|
||||
}
|
||||
|
||||
// 캐싱 비활성화 - 항상 최신 md 파일 읽기
|
||||
@@ -1,5 +0,0 @@
|
||||
import { CategoryManagement } from '@/components/business/juil/category-management';
|
||||
|
||||
export default function CategoriesPage() {
|
||||
return <CategoryManagement />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { ItemDetailClient } from '@/components/business/juil/item-management';
|
||||
|
||||
export default function ItemNewPage() {
|
||||
return <ItemDetailClient isNewMode />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { ItemManagementClient } from '@/components/business/juil/item-management';
|
||||
|
||||
export default function ItemManagementPage() {
|
||||
return <ItemManagementClient />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { LaborDetailClient } from '@/components/business/juil/labor-management';
|
||||
|
||||
export default function LaborNewPage() {
|
||||
return <LaborDetailClient isNewMode />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { LaborManagementClient } from '@/components/business/juil/labor-management';
|
||||
|
||||
export default function LaborManagementPage() {
|
||||
return <LaborManagementClient />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import PricingDetailClient from '@/components/business/juil/pricing-management/PricingDetailClient';
|
||||
|
||||
export default function PricingNewPage() {
|
||||
return <PricingDetailClient mode="create" />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import PricingListClient from '@/components/business/juil/pricing-management/PricingListClient';
|
||||
|
||||
export default function PricingPage() {
|
||||
return <PricingListClient />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import StructureReviewListClient from '@/components/business/juil/structure-review/StructureReviewListClient';
|
||||
|
||||
export default function StructureReviewListPage() {
|
||||
return <StructureReviewListClient />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { EstimateListClient } from '@/components/business/juil/estimates';
|
||||
|
||||
export default function EstimatesPage() {
|
||||
return <EstimateListClient />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { BiddingListClient } from '@/components/business/juil/bidding';
|
||||
|
||||
export default function BiddingPage() {
|
||||
return <BiddingListClient />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import PartnerForm from '@/components/business/juil/partners/PartnerForm';
|
||||
|
||||
export default function PartnerNewPage() {
|
||||
return <PartnerForm mode="new" />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { PartnerListClient } from '@/components/business/juil/partners';
|
||||
|
||||
export default function PartnersPage() {
|
||||
return <PartnerListClient />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { SiteBriefingListClient } from '@/components/business/juil/site-briefings';
|
||||
|
||||
export default function SiteBriefingsPage() {
|
||||
return <SiteBriefingListClient />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { ContractListClient } from '@/components/business/juil/contract';
|
||||
|
||||
export default function ContractPage() {
|
||||
return <ContractListClient />;
|
||||
}
|
||||
@@ -1,19 +1,19 @@
|
||||
'use client';
|
||||
|
||||
import { Suspense } from "react";
|
||||
import { JuilMainDashboard } from "./JuilMainDashboard";
|
||||
import { ConstructionMainDashboard } from "./ConstructionMainDashboard";
|
||||
import { PageLoadingSpinner } from "@/components/ui/loading-spinner";
|
||||
|
||||
/**
|
||||
* JuilDashboard - 주일기업 전용 대시보드
|
||||
* ConstructionDashboard - 주일기업 전용 대시보드
|
||||
*
|
||||
* 건설/공사 프로젝트 중심의 메트릭과 현황을 보여줍니다.
|
||||
*/
|
||||
export function JuilDashboard() {
|
||||
console.log('🏗️ Juil Dashboard rendering...');
|
||||
export function ConstructionDashboard() {
|
||||
console.log('🏗️ Construction Dashboard rendering...');
|
||||
return (
|
||||
<Suspense fallback={<PageLoadingSpinner text="공사 현황을 불러오는 중..." />}>
|
||||
<JuilMainDashboard />
|
||||
<ConstructionMainDashboard />
|
||||
</Suspense>
|
||||
);
|
||||
}
|
||||
@@ -20,7 +20,7 @@ import {
|
||||
Hammer
|
||||
} from "lucide-react";
|
||||
|
||||
export function JuilMainDashboard() {
|
||||
export function ConstructionMainDashboard() {
|
||||
const currentTime = useCurrentTime();
|
||||
|
||||
// 가상 데이터: 건설 프로젝트 현황
|
||||
@@ -137,15 +137,15 @@ export default function BiddingDetailForm({
|
||||
|
||||
// 네비게이션 핸들러
|
||||
const handleBack = useCallback(() => {
|
||||
router.push('/ko/juil/project/bidding');
|
||||
router.push('/ko/construction/project/bidding');
|
||||
}, [router]);
|
||||
|
||||
const handleEdit = useCallback(() => {
|
||||
router.push(`/ko/juil/project/bidding/${biddingId}/edit`);
|
||||
router.push(`/ko/construction/project/bidding/${biddingId}/edit`);
|
||||
}, [router, biddingId]);
|
||||
|
||||
const handleCancel = useCallback(() => {
|
||||
router.push(`/ko/juil/project/bidding/${biddingId}`);
|
||||
router.push(`/ko/construction/project/bidding/${biddingId}`);
|
||||
}, [router, biddingId]);
|
||||
|
||||
// 저장 핸들러
|
||||
@@ -160,7 +160,7 @@ export default function BiddingDetailForm({
|
||||
if (result.success) {
|
||||
toast.success('수정이 완료되었습니다.');
|
||||
setShowSaveDialog(false);
|
||||
router.push(`/ko/juil/project/bidding/${biddingId}`);
|
||||
router.push(`/ko/construction/project/bidding/${biddingId}`);
|
||||
router.refresh();
|
||||
} else {
|
||||
toast.error(result.error || '저장에 실패했습니다.');
|
||||
@@ -260,7 +260,7 @@ export default function BiddingListClient({ initialData = [], initialStats }: Bi
|
||||
|
||||
const handleRowClick = useCallback(
|
||||
(bidding: Bidding) => {
|
||||
router.push(`/ko/juil/project/bidding/${bidding.id}`);
|
||||
router.push(`/ko/construction/project/bidding/${bidding.id}`);
|
||||
},
|
||||
[router]
|
||||
);
|
||||
@@ -268,7 +268,7 @@ export default function BiddingListClient({ initialData = [], initialStats }: Bi
|
||||
const handleEdit = useCallback(
|
||||
(e: React.MouseEvent, biddingId: string) => {
|
||||
e.stopPropagation();
|
||||
router.push(`/ko/juil/project/bidding/${biddingId}/edit`);
|
||||
router.push(`/ko/construction/project/bidding/${biddingId}/edit`);
|
||||
},
|
||||
[router]
|
||||
);
|
||||
@@ -113,15 +113,15 @@ export default function ContractDetailForm({
|
||||
|
||||
// 네비게이션 핸들러
|
||||
const handleBack = useCallback(() => {
|
||||
router.push('/ko/juil/project/contract');
|
||||
router.push('/ko/construction/project/contract');
|
||||
}, [router]);
|
||||
|
||||
const handleEdit = useCallback(() => {
|
||||
router.push(`/ko/juil/project/contract/${contractId}/edit`);
|
||||
router.push(`/ko/construction/project/contract/${contractId}/edit`);
|
||||
}, [router, contractId]);
|
||||
|
||||
const handleCancel = useCallback(() => {
|
||||
router.push(`/ko/juil/project/contract/${contractId}`);
|
||||
router.push(`/ko/construction/project/contract/${contractId}`);
|
||||
}, [router, contractId]);
|
||||
|
||||
// 폼 필드 변경
|
||||
@@ -144,7 +144,7 @@ export default function ContractDetailForm({
|
||||
if (result.success) {
|
||||
toast.success('수정이 완료되었습니다.');
|
||||
setShowSaveDialog(false);
|
||||
router.push(`/ko/juil/project/contract/${contractId}`);
|
||||
router.push(`/ko/construction/project/contract/${contractId}`);
|
||||
router.refresh();
|
||||
} else {
|
||||
toast.error(result.error || '저장에 실패했습니다.');
|
||||
@@ -168,7 +168,7 @@ export default function ContractDetailForm({
|
||||
if (result.success) {
|
||||
toast.success('계약이 삭제되었습니다.');
|
||||
setShowDeleteDialog(false);
|
||||
router.push('/ko/juil/project/contract');
|
||||
router.push('/ko/construction/project/contract');
|
||||
router.refresh();
|
||||
} else {
|
||||
toast.error(result.error || '삭제에 실패했습니다.');
|
||||
@@ -275,7 +275,7 @@ export default function ContractListClient({
|
||||
|
||||
const handleRowClick = useCallback(
|
||||
(contract: Contract) => {
|
||||
router.push(`/ko/juil/project/contract/${contract.id}`);
|
||||
router.push(`/ko/construction/project/contract/${contract.id}`);
|
||||
},
|
||||
[router]
|
||||
);
|
||||
@@ -283,7 +283,7 @@ export default function ContractListClient({
|
||||
const handleEdit = useCallback(
|
||||
(e: React.MouseEvent, contractId: string) => {
|
||||
e.stopPropagation();
|
||||
router.push(`/ko/juil/project/contract/${contractId}/edit`);
|
||||
router.push(`/ko/construction/project/contract/${contractId}/edit`);
|
||||
},
|
||||
[router]
|
||||
);
|
||||
@@ -92,15 +92,15 @@ export default function EstimateDetailForm({
|
||||
|
||||
// ===== 네비게이션 핸들러 =====
|
||||
const handleBack = useCallback(() => {
|
||||
router.push('/ko/juil/project/bidding/estimates');
|
||||
router.push('/ko/construction/project/bidding/estimates');
|
||||
}, [router]);
|
||||
|
||||
const handleEdit = useCallback(() => {
|
||||
router.push(`/ko/juil/project/bidding/estimates/${estimateId}/edit`);
|
||||
router.push(`/ko/construction/project/bidding/estimates/${estimateId}/edit`);
|
||||
}, [router, estimateId]);
|
||||
|
||||
const handleCancel = useCallback(() => {
|
||||
router.push(`/ko/juil/project/bidding/estimates/${estimateId}`);
|
||||
router.push(`/ko/construction/project/bidding/estimates/${estimateId}`);
|
||||
}, [router, estimateId]);
|
||||
|
||||
// ===== 저장/삭제 핸들러 =====
|
||||
@@ -114,7 +114,7 @@ export default function EstimateDetailForm({
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
toast.success('수정이 완료되었습니다.');
|
||||
setShowSaveDialog(false);
|
||||
router.push(`/ko/juil/project/bidding/estimates/${estimateId}`);
|
||||
router.push(`/ko/construction/project/bidding/estimates/${estimateId}`);
|
||||
router.refresh();
|
||||
} catch (error) {
|
||||
toast.error(error instanceof Error ? error.message : '저장에 실패했습니다.');
|
||||
@@ -133,7 +133,7 @@ export default function EstimateDetailForm({
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
toast.success('견적이 삭제되었습니다.');
|
||||
setShowDeleteDialog(false);
|
||||
router.push('/ko/juil/project/bidding/estimates');
|
||||
router.push('/ko/construction/project/bidding/estimates');
|
||||
router.refresh();
|
||||
} catch (error) {
|
||||
toast.error(error instanceof Error ? error.message : '삭제에 실패했습니다.');
|
||||
@@ -240,7 +240,7 @@ export default function EstimateListClient({ initialData = [], initialStats }: E
|
||||
|
||||
const handleRowClick = useCallback(
|
||||
(estimate: Estimate) => {
|
||||
router.push(`/ko/juil/project/bidding/estimates/${estimate.id}`);
|
||||
router.push(`/ko/construction/project/bidding/estimates/${estimate.id}`);
|
||||
},
|
||||
[router]
|
||||
);
|
||||
@@ -248,7 +248,7 @@ export default function EstimateListClient({ initialData = [], initialStats }: E
|
||||
const handleEdit = useCallback(
|
||||
(e: React.MouseEvent, estimateId: string) => {
|
||||
e.stopPropagation();
|
||||
router.push(`/ko/juil/project/bidding/estimates/${estimateId}/edit`);
|
||||
router.push(`/ko/construction/project/bidding/estimates/${estimateId}/edit`);
|
||||
},
|
||||
[router]
|
||||
);
|
||||
@@ -74,7 +74,7 @@ export function EstimateDocumentModal({
|
||||
const handleEdit = useCallback(() => {
|
||||
if (estimateId) {
|
||||
onClose();
|
||||
router.push(`/ko/juil/project/bidding/estimates/${estimateId}/edit`);
|
||||
router.push(`/ko/construction/project/bidding/estimates/${estimateId}/edit`);
|
||||
}
|
||||
}, [estimateId, onClose, router]);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user