docs: 다양한 문서 및 가이드 업데이트
- 여러 문서의 내용을 업데이트하여 최신 정보를 반영하였습니다. - 컴포넌트 개발 가이드와 관련된 문서의 목차를 재구성하고, V2 및 Zod 레이아웃 시스템에 대한 내용을 추가하였습니다. - 화면 컴포넌트 개발 가이드를 개선하여 핵심 원칙과 패턴을 명확히 설명하였습니다. - 불필요한 문서 및 가이드를 삭제하고, 통합된 가이드를 통해 개발자들이 쉽게 참고할 수 있도록 하였습니다.
This commit is contained in:
@@ -254,7 +254,7 @@ app.use("/api/table-categories", tableCategoryValueRoutes); // 카테고리 값
|
||||
app.use("/api/code-merge", codeMergeRoutes); // 코드 병합
|
||||
app.use("/api/numbering-rules", numberingRuleRoutes); // 채번 규칙 관리
|
||||
app.use("/api/entity-search", entitySearchRoutes); // 엔티티 검색
|
||||
app.use("/api/entity", entityOptionsRouter); // 엔티티 옵션 (UnifiedSelect용)
|
||||
app.use("/api/entity", entityOptionsRouter); // 엔티티 옵션 (V2Select용)
|
||||
app.use("/api/driver", driverRoutes); // 공차중계 운전자 관리
|
||||
app.use("/api/tax-invoice", taxInvoiceRoutes); // 세금계산서 관리
|
||||
app.use("/api/cascading-relations", cascadingRelationRoutes); // 연쇄 드롭다운 관계 관리
|
||||
|
||||
@@ -244,7 +244,7 @@ export const getUserList = async (req: AuthenticatedRequest, res: Response) => {
|
||||
// 검색 조건 처리
|
||||
if (search && typeof search === "string" && search.trim()) {
|
||||
// 통합 검색
|
||||
searchType = "unified";
|
||||
searchType = "v2";
|
||||
const searchTerm = search.trim();
|
||||
|
||||
whereConditions.push(`(
|
||||
|
||||
@@ -105,7 +105,7 @@ export async function getDistinctColumnValues(req: AuthenticatedRequest, res: Re
|
||||
}
|
||||
|
||||
/**
|
||||
* 엔티티 옵션 조회 API (UnifiedSelect용)
|
||||
* 엔티티 옵션 조회 API (V2Select용)
|
||||
* GET /api/entity/:tableName/options
|
||||
*
|
||||
* Query Params:
|
||||
|
||||
@@ -12,7 +12,7 @@ router.get("/:tableName", authenticateToken, searchEntity);
|
||||
|
||||
export default router;
|
||||
|
||||
// 엔티티 옵션 라우터 (UnifiedSelect용)
|
||||
// 엔티티 옵션 라우터 (V2Select용)
|
||||
export const entityOptionsRouter = Router();
|
||||
|
||||
/**
|
||||
|
||||
@@ -11,7 +11,7 @@ import {
|
||||
isValidWebType,
|
||||
WEB_TYPE_TO_POSTGRES_CONVERTER,
|
||||
WEB_TYPE_VALIDATION_PATTERNS,
|
||||
} from "../types/unified-web-types";
|
||||
} from "../types/v2-web-types";
|
||||
import { DataflowControlService } from "./dataflowControlService";
|
||||
|
||||
// 테이블 컬럼 정보
|
||||
|
||||
@@ -987,7 +987,7 @@ class NumberingRuleService {
|
||||
}
|
||||
|
||||
// 카테고리 매핑에서 해당 값에 대한 형식 찾기
|
||||
// selectedValue는 valueCode일 수 있음 (UnifiedSelect에서 valueCode를 value로 사용)
|
||||
// selectedValue는 valueCode일 수 있음 (V2Select에서 valueCode를 value로 사용)
|
||||
const selectedValueStr = String(selectedValue);
|
||||
const mapping = categoryMappings.find(
|
||||
(m: any) => {
|
||||
|
||||
@@ -1406,7 +1406,7 @@ export class ScreenManagementService {
|
||||
*/
|
||||
private inferWebType(dataType: string): WebType {
|
||||
// 통합 타입 매핑에서 import
|
||||
const { DB_TYPE_TO_WEB_TYPE } = require("../types/unified-web-types");
|
||||
const { DB_TYPE_TO_WEB_TYPE } = require("../types/v2-web-types");
|
||||
|
||||
const lowerType = dataType.toLowerCase();
|
||||
|
||||
@@ -1741,15 +1741,15 @@ export class ScreenManagementService {
|
||||
? inputTypeMap.get(`${tableName}.${columnName}`)
|
||||
: null;
|
||||
|
||||
// 🆕 Unified 컴포넌트는 덮어쓰지 않음 (새로운 컴포넌트 시스템 보호)
|
||||
// 🆕 V2 컴포넌트는 덮어쓰지 않음 (새로운 컴포넌트 시스템 보호)
|
||||
const savedComponentType = properties?.componentType;
|
||||
const isUnifiedComponent = savedComponentType?.startsWith("unified-");
|
||||
const isV2Component = savedComponentType?.startsWith("v2-");
|
||||
|
||||
const component = {
|
||||
id: layout.component_id,
|
||||
// 🔥 최신 componentType이 있으면 type 덮어쓰기 (단, Unified 컴포넌트는 제외)
|
||||
type: isUnifiedComponent
|
||||
? layout.component_type as any // Unified는 저장된 값 유지
|
||||
// 🔥 최신 componentType이 있으면 type 덮어쓰기 (단, V2 컴포넌트는 제외)
|
||||
type: isV2Component
|
||||
? layout.component_type as any // V2는 저장된 값 유지
|
||||
: (latestTypeInfo?.componentType || layout.component_type as any),
|
||||
position: {
|
||||
x: layout.position_x,
|
||||
@@ -1759,8 +1759,8 @@ export class ScreenManagementService {
|
||||
size: { width: layout.width, height: layout.height },
|
||||
parentId: layout.parent_id,
|
||||
...properties,
|
||||
// 🔥 최신 inputType이 있으면 widgetType, componentType 덮어쓰기 (단, Unified 컴포넌트는 제외)
|
||||
...(!isUnifiedComponent && latestTypeInfo && {
|
||||
// 🔥 최신 inputType이 있으면 widgetType, componentType 덮어쓰기 (단, V2 컴포넌트는 제외)
|
||||
...(!isV2Component && latestTypeInfo && {
|
||||
widgetType: latestTypeInfo.inputType,
|
||||
inputType: latestTypeInfo.inputType,
|
||||
componentType: latestTypeInfo.componentType,
|
||||
|
||||
@@ -10,7 +10,7 @@ import {
|
||||
EntityJoinResponse,
|
||||
EntityJoinConfig,
|
||||
} from "../types/tableManagement";
|
||||
import { WebType } from "../types/unified-web-types";
|
||||
import { WebType } from "../types/v2-web-types";
|
||||
import { entityJoinService } from "./entityJoinService";
|
||||
import { referenceCacheService } from "./referenceCacheService";
|
||||
|
||||
@@ -4301,7 +4301,7 @@ export class TableManagementService {
|
||||
*/
|
||||
private inferWebType(dataType: string): WebType {
|
||||
// 통합 타입 매핑에서 import
|
||||
const { DB_TYPE_TO_WEB_TYPE } = require("../types/unified-web-types");
|
||||
const { DB_TYPE_TO_WEB_TYPE } = require("../types/v2-web-types");
|
||||
|
||||
const lowerType = dataType.toLowerCase();
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ export type ComponentType = "container" | "row" | "column" | "widget" | "group";
|
||||
|
||||
// 웹 타입 정의
|
||||
// WebType은 통합 타입에서 import (중복 정의 제거)
|
||||
import { WebType } from "./unified-web-types";
|
||||
import { WebType } from "./v2-web-types";
|
||||
export { WebType };
|
||||
|
||||
// 위치 정보
|
||||
|
||||
@@ -264,7 +264,7 @@ export const WEB_TYPE_VALIDATION_PATTERNS: Record<WebType, RegExp | null> = {
|
||||
};
|
||||
|
||||
// 업데이트된 웹 타입 옵션 (기존 WEB_TYPE_OPTIONS 대체)
|
||||
export const UNIFIED_WEB_TYPE_OPTIONS = [
|
||||
export const V2_WEB_TYPE_OPTIONS = [
|
||||
{
|
||||
value: "text",
|
||||
label: "text",
|
||||
@@ -134,7 +134,7 @@ export const componentDefaults: Record<string, any> = {
|
||||
"flow-widget": { type: "flow-widget", webType: "text", displayMode: "horizontal", allowDataMove: false, showStepCount: true },
|
||||
"entity-search-input": { type: "entity-search-input", webType: "entity" },
|
||||
"autocomplete-search-input": { type: "autocomplete-search-input", webType: "entity" },
|
||||
"unified-list": { type: "unified-list", webType: "table" },
|
||||
"v2-list": { type: "v2-list", webType: "table" },
|
||||
"modal-repeater-table": { type: "modal-repeater-table", webType: "table", columns: [], multiSelect: true },
|
||||
"category-manager": { type: "category-manager", webType: "custom" },
|
||||
"numbering-rule": { type: "numbering-rule", webType: "text" },
|
||||
@@ -159,10 +159,10 @@ export const componentDefaults: Record<string, any> = {
|
||||
"repeat-screen-modal": { type: "repeat-screen-modal", webType: "custom" },
|
||||
"related-data-buttons": { type: "related-data-buttons", webType: "custom" },
|
||||
"split-panel-layout2": { type: "split-panel-layout2", webType: "custom" },
|
||||
"unified-input": { type: "unified-input", webType: "text" },
|
||||
"unified-select": { type: "unified-select", webType: "select" },
|
||||
"unified-date": { type: "unified-date", webType: "date" },
|
||||
"unified-repeater": { type: "unified-repeater", webType: "custom" },
|
||||
"v2-input": { type: "v2-input", webType: "text" },
|
||||
"v2-select": { type: "v2-select", webType: "select" },
|
||||
"v2-date": { type: "v2-date", webType: "date" },
|
||||
"v2-repeater": { type: "v2-repeater", webType: "custom" },
|
||||
"v2-repeat-container": { type: "v2-repeat-container", webType: "custom" },
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user