diff --git a/B04_PreProcess/B04_PreProcess_UI_MapRender.ts b/B04_PreProcess/B04_PreProcess_UI_MapRender.ts index 258b9723..00aa2b95 100644 --- a/B04_PreProcess/B04_PreProcess_UI_MapRender.ts +++ b/B04_PreProcess/B04_PreProcess_UI_MapRender.ts @@ -42,14 +42,14 @@ export const ROUTE_LINE_WIDTH = 2.4; * 렌더 시 "화면 오차 < LOD_PX가 되는 정점"만 제외해 어느 줌에서도 시각적 무손실 LOD를 얻는다. * line 파트에만 존재하며 원본 GeoJSON은 변형하지 않는다. */ -type PreparedPart = { +export type PreparedPart = { coords: Float64Array; closed: boolean; weights: Float64Array | null; }; /** 사전 투영된 피처 1개. bbox는 정규화 좌표 기준이며 컬링에 사용한다. */ -type PreparedFeature = { +export type PreparedFeature = { kind: "line" | "point"; parts: PreparedPart[]; minX: number; @@ -60,6 +60,8 @@ type PreparedFeature = { labelAnchorX: number; labelAnchorY: number; labelText: string | null; + /** 그 라벨의 표고(m). 어느 줄을 실제로 낼지는 `drawPreparedLabels` 가 줌을 보고 고른다. */ + labelValue: number | null; }; export type PreparedLayer = { @@ -214,226 +216,81 @@ export function computeRouteView( }; } -function isPoint(value: unknown): value is [number, number] { - return Array.isArray(value) && typeof value[0] === "number" && typeof value[1] === "number"; -} - -/** lon/lat 배열 → 정규화 좌표 Float64Array. 유효 정점이 없으면 null. */ -function projectRing(ring: unknown, normalizer: Normalizer): Float64Array | null { - if (!Array.isArray(ring) || ring.length === 0) return null; - const coords = new Float64Array(ring.length * 2); - let count = 0; - for (const point of ring) { - if (!isPoint(point)) continue; - coords[count * 2] = (point[0] - normalizer.lonMin) / normalizer.lonRange; - coords[count * 2 + 1] = 1 - (point[1] - normalizer.latMin) / normalizer.latRange; - count += 1; - } - if (count === 0) return null; - return count * 2 === coords.length ? coords : coords.slice(0, count * 2); -} - -function collectParts( - geometry: GeoJsonGeometry, - normalizer: Normalizer, - parts: PreparedPart[], -): "line" | "point" { - const coordinates = geometry.coordinates; - if (!Array.isArray(coordinates)) return "line"; - const push = (ring: unknown, closed: boolean): void => { - const projected = projectRing(ring, normalizer); - if (projected) parts.push({ coords: projected, closed, weights: null }); - }; - switch (geometry.type) { - case "Point": - push([coordinates], false); - return "point"; - case "MultiPoint": - push(coordinates, false); - return "point"; - case "LineString": - push(coordinates, false); - return "line"; - case "MultiLineString": - for (const line of coordinates) push(line, false); - return "line"; - case "Polygon": - for (const ring of coordinates) push(ring, true); - return "line"; - case "MultiPolygon": - for (const polygon of coordinates) { - if (!Array.isArray(polygon)) continue; - for (const ring of polygon) push(ring, true); - } - return "line"; - default: - return "line"; - } -} - -/** - * Douglas-Peucker 가중치 계산 (반복형, 스택 오버플로 방지). - * weights[i] = "허용 오차가 이 값보다 크면 정점 i를 버려도 되는" 임계값. - * 부모 구간의 오차로 상한을 걸어(cap) 어떤 허용 오차에서도 일관된 부분집합이 나오게 한다. - * y축은 1/aspect로 보정해 화면 픽셀 거리와 비례하는 좌표계에서 계산한다. - */ -function computeDpWeights(coords: Float64Array, aspect: number): Float64Array { - const n = coords.length / 2; - const weights = new Float64Array(n); - weights[0] = Infinity; - weights[n - 1] = Infinity; - if (n <= 2) return weights; - const stack: number[] = [0, n - 1]; - const caps: number[] = [Infinity]; - while (stack.length) { - const last = stack.pop()!; - const first = stack.pop()!; - const cap = caps.pop()!; - if (last - first < 2) continue; - const ax = coords[first * 2]; - const ay = coords[first * 2 + 1] / aspect; - const bx = coords[last * 2]; - const by = coords[last * 2 + 1] / aspect; - const dx = bx - ax; - const dy = by - ay; - const len = Math.sqrt(dx * dx + dy * dy); - let maxDist = -1; - let maxIndex = -1; - for (let i = first + 1; i < last; i += 1) { - const px = coords[i * 2] - ax; - const py = coords[i * 2 + 1] / aspect - ay; - const dist = len === 0 ? Math.sqrt(px * px + py * py) : Math.abs(px * dy - py * dx) / len; - if (dist > maxDist) { - maxDist = dist; - maxIndex = i; - } - } - const weight = Math.min(maxDist, cap); - weights[maxIndex] = weight; - stack.push(first, maxIndex, maxIndex, last); - caps.push(weight, weight); - } - return weights; -} - -/** 등고 라벨 앵커: LineString/MultiLineString 첫 파트의 중앙 정점 (기존 동작 유지). */ -function labelAnchorOf(geometry: GeoJsonGeometry, normalizer: Normalizer): [number, number] | null { - const coords = geometry.coordinates; - if (!Array.isArray(coords)) return null; - const line = - geometry.type === "LineString" - ? coords - : geometry.type === "MultiLineString" - ? coords[0] - : null; - if (!Array.isArray(line) || line.length === 0) return null; - const mid = line[Math.floor(line.length / 2)]; - if (!isPoint(mid)) return null; - return [ - (mid[0] - normalizer.lonMin) / normalizer.lonRange, - 1 - (mid[1] - normalizer.latMin) / normalizer.latRange, - ]; -} - -/** - * GeoJSON 컬렉션 1개를 사전 투영한다. - * labelKeys가 주어지면 계곡선(25m 배수) 피처에만 라벨 텍스트·앵커를 계산해 둔다. - */ -export function prepareLayer( - collection: GeoJsonCollection | undefined, - normalizer: Normalizer, - labelKeys?: string[], -): PreparedLayer { - const features: PreparedFeature[] = []; - for (const feature of collection?.features ?? []) { - if (!feature.geometry) continue; - const parts: PreparedPart[] = []; - const kind = collectParts(feature.geometry, normalizer, parts); - if (parts.length === 0) continue; - if (kind === "line") { - for (const part of parts) { - if (part.coords.length < 6) continue; - part.weights = computeDpWeights(part.coords, normalizer.aspect); - } - } - let minX = Infinity; - let minY = Infinity; - let maxX = -Infinity; - let maxY = -Infinity; - for (const part of parts) { +/** 화면 px 에 가장 가까운 선 피처의 자리. 그만큼 안에 없으면 -1(계획서 0-9 ⑦). */ +export function hitPreparedLayer( + layer: PreparedLayer, + view: ViewState, + px: number, + py: number, + tolerancePx: number, + everyM?: number, +): number { + const affine = affineOf(view); + const step = everyM !== undefined && everyM > 0 ? everyM : 0; + let best = -1; + let bestDistance = tolerancePx; + layer.features.forEach((feature, index) => { + if (feature.kind !== "line") return; + // **그리지 않은 줄은 집히지도 않는다** — 안 보이는 등고선이 골라지면 없던 선이 튀어나온다. + if (step && feature.labelValue !== null && feature.labelValue % step !== 0) return; + // 화면 밖·멀리 있는 피처는 바운딩박스에서 먼저 떨군다 — 도엽 등고선은 수천 가닥이다. + const x0 = feature.minX * affine.ax + affine.bx - tolerancePx; + const x1 = feature.maxX * affine.ax + affine.bx + tolerancePx; + const y0 = feature.minY * affine.ay + affine.by - tolerancePx; + const y1 = feature.maxY * affine.ay + affine.by + tolerancePx; + if (px < x0 || px > x1 || py < y0 || py > y1) return; + for (const part of feature.parts) { const coords = part.coords; + let lastX = NaN; + let lastY = NaN; + // 그릴 때와 **같은 LOD** 로 훑는다 — 화면에 없는 정점에 걸리면 눈과 손이 어긋난다. + const tolerance = LOD_PX / affine.ax; for (let i = 0; i < coords.length; i += 2) { - const x = coords[i]; - const y = coords[i + 1]; - if (x < minX) minX = x; - if (x > maxX) maxX = x; - if (y < minY) minY = y; - if (y > maxY) maxY = y; - } - } - let labelText: string | null = null; - let labelAnchorX = 0; - let labelAnchorY = 0; - if (labelKeys && labelKeys.length > 0) { - const raw = labelKeys.map((key) => feature.properties?.[key]).find((value) => value != null); - const elevation = typeof raw === "number" ? raw : Number(raw); - // 계곡선(25m 배수)만 라벨 — 전체 표기 시 화면이 숫자로 뒤덮이는 것 방지 - if (Number.isFinite(elevation) && elevation % 25 === 0) { - const anchor = labelAnchorOf(feature.geometry, normalizer); - if (anchor) { - labelText = String(elevation); - labelAnchorX = anchor[0]; - labelAnchorY = anchor[1]; + if (part.weights && part.weights[i / 2] < tolerance) continue; + const x = coords[i] * affine.ax + affine.bx; + const y = coords[i + 1] * affine.ay + affine.by; + if (Number.isFinite(lastX)) { + const distance = pointSegmentDistance(px, py, lastX, lastY, x, y); + if (distance < bestDistance) { + bestDistance = distance; + best = index; + } } + lastX = x; + lastY = y; } } - features.push({ kind, parts, minX, minY, maxX, maxY, labelAnchorX, labelAnchorY, labelText }); - } - return { features }; + }); + return best; } -/** - * 사업지 좌표계(m) 폴리라인을 한 개 피처짜리 레이어로 사전 투영한다. - * meta의 x/y 범위와 lon/lat 범위는 같은 사각형을 가리키므로, 미터 좌표도 GeoJSON과 동일한 - * 정규화 공간으로 들어간다 — 노선 선형을 도엽 레이어 위에 그대로 겹칠 수 있다. - */ -export function prepareMetricPolyline( - points: ReadonlyArray<{ x: number; y: number }>, - meta: VWorldMeta, -): PreparedLayer { - if (points.length < 2) return { features: [] }; - const widthMeters = meta.width_meters || 1; - const heightMeters = meta.height_meters || 1; - const coords = new Float64Array(points.length * 2); - let minX = Infinity; - let minY = Infinity; - let maxX = -Infinity; - let maxY = -Infinity; - points.forEach((point, index) => { - const nx = (point.x - meta.x_min) / widthMeters; - const ny = 1 - (point.y - meta.y_min) / heightMeters; - coords[index * 2] = nx; - coords[index * 2 + 1] = ny; - if (nx < minX) minX = nx; - if (nx > maxX) maxX = nx; - if (ny < minY) minY = ny; - if (ny > maxY) maxY = ny; - }); - return { - features: [ - { - kind: "line", - parts: [{ coords, closed: false, weights: null }], - minX, - minY, - maxX, - maxY, - labelAnchorX: 0, - labelAnchorY: 0, - labelText: null, - }, - ], - }; +/** 레이어 안의 피처 하나만 다시 그린다 — 고른 등고선을 도드라지게 할 때 쓴다. */ +export function drawPreparedFeature( + context: CanvasRenderingContext2D, + layer: PreparedLayer, + index: number, + view: ViewState, +): void { + const feature = layer.features[index]; + if (!feature || feature.kind !== "line") return; + drawLineParts(context, feature, affineOf(view)); +} + +/** 점과 선분 사이 거리(px). */ +function pointSegmentDistance( + px: number, + py: number, + ax: number, + ay: number, + bx: number, + by: number, +): number { + const dx = bx - ax; + const dy = by - ay; + const lengthSquared = dx * dx + dy * dy; + if (lengthSquared <= 1e-9) return Math.hypot(px - ax, py - ay); + const ratio = Math.max(0, Math.min(1, ((px - ax) * dx + (py - ay) * dy) / lengthSquared)); + return Math.hypot(px - (ax + dx * ratio), py - (ay + dy * ratio)); } /** @@ -563,6 +420,9 @@ function drawPointParts( /** 컬링 여백: 선 굵기·X 마커 팔 길이·라벨 폭을 감안한 화면 밖 판정 마진(px). */ const CULL_MARGIN = 32; +/** 등고 라벨끼리 이만큼(px)은 떨어져야 둘 다 낸다 — 가로 여백과 줄 높이. */ +const LABEL_GAP_PX = 10; +const LABEL_ROW_PX = 14; function isVisible(feature: PreparedFeature, affine: Affine, view: ViewState): boolean { const margin = CULL_MARGIN; @@ -578,36 +438,100 @@ function isVisible(feature: PreparedFeature, affine: Affine, view: ViewState): b ); } -/** 레이어 1개를 그린다. context의 lineWidth/strokeStyle은 호출부에서 설정한다. */ +/** 등고선을 몇 m 마다 낼지 고를 때 훑는 배수. 성긴 쪽으로 한 칸씩 물러난다. */ +const LEVEL_STEP_MULTIPLES = [1, 2, 5, 10, 20, 50, 100]; +/** 한 화면에 둘 등고선 가닥 수의 어림 상한 — 이보다 많으면 한 칸 성글게 간다. */ +const LEVEL_BUDGET = 350; + +/** + * 지금 화면에 **몇 m 간격**으로 등고선을 낼지 고른다. + * + * 간격을 줌으로만 정하면 가파른 데서는 여전히 선이 뭉개지고 완만한 데서는 너무 성기다. + * 그래서 **지금 화면에 실제로 들어오는 가닥 수**를 세어 상한을 넘지 않는 가장 촘촘한 간격을 + * 고른다 — 확대하면 저절로 촘촘해지고 물러나면 성겨진다(2026-09-12 실화면: 1m LAS 등고선을 + * 다 그리면 지형이 선으로 덮였다). + */ +export function pickLevelStep( + layer: PreparedLayer, + view: ViewState, + intervalM: number, + budget = LEVEL_BUDGET, +): number { + const interval = intervalM > 0 ? intervalM : 1; + const affine = affineOf(view); + let step = interval * LEVEL_STEP_MULTIPLES[LEVEL_STEP_MULTIPLES.length - 1]; + for (const multiple of LEVEL_STEP_MULTIPLES) { + const candidate = interval * multiple; + let count = 0; + for (const feature of layer.features) { + if (feature.labelValue !== null && feature.labelValue % candidate !== 0) continue; + if (!isVisible(feature, affine, view)) continue; + count += 1; + if (count > budget) break; + } + if (count <= budget) return candidate; + step = candidate; + } + return step; +} + +/** 레이어 1개를 그린다. context의 lineWidth/strokeStyle은 호출부에서 설정한다. + * + * `everyM` 을 주면 **그 배수의 표고만** 그린다. 1m 간격 LAS 등고선을 멀리서 다 그리면 화면이 + * 선으로 뭉개져 지형이 안 읽힌다 — 확대에 따라 성긴 등고선부터 내보이려는 것이다. 안 주면 + * 전부 그리므로 기존 화면(B04 지도·배수유역도)의 표기는 그대로다. */ export function drawPreparedLayer( context: CanvasRenderingContext2D, layer: PreparedLayer, view: ViewState, marker: MarkerKind, + everyM?: number, ): void { const affine = affineOf(view); + const step = everyM !== undefined && everyM > 0 ? everyM : 0; for (const feature of layer.features) { + if (step && feature.labelValue !== null && feature.labelValue % step !== 0) continue; if (!isVisible(feature, affine, view)) continue; if (feature.kind === "point") drawPointParts(context, feature, affine, marker); else drawLineParts(context, feature, affine); } } -/** 사전 계산된 계곡선 라벨을 그린다. 폰트·정렬은 호출부에서 설정한다. */ +/** 사전 계산된 등고 라벨을 그린다. 폰트·정렬은 호출부에서 설정한다. + * + * `everyM` 은 **몇 m 마다 한 줄을 라벨할지**다. 기본 25m(계곡선)는 B04 지도가 쓰던 값 그대로다 + * — 전부 내면 화면이 숫자로 뒤덮인다. 확대가 큰 화면은 더 작은 값을 넘겨 촘촘히 낸다. */ export function drawPreparedLabels( context: CanvasRenderingContext2D, layer: PreparedLayer, view: ViewState, color: string, + everyM = 25, ): void { const affine = affineOf(view); const margin = CULL_MARGIN; + const step = everyM > 0 ? everyM : 25; + // 이미 찍은 라벨과 겹치면 건너뛴다 — LAS 등고선은 **한 표고가 여러 가닥**으로 끊겨 있어 + // 가닥마다 숫자를 내면 화면이 숫자로 덮인다(2026-09-12 실화면). 도엽 계곡선은 원래 + // 드물어 이 규칙에 걸리지 않으므로 B04 지도의 표기는 그대로다. + const drawn: Array<{ x: number; y: number; half: number }> = []; for (const feature of layer.features) { if (feature.labelText === null) continue; + // 표고를 못 읽은 라벨(값 없음)은 솎지 않고 그대로 낸다. + if (feature.labelValue !== null && feature.labelValue % step !== 0) continue; const x = feature.labelAnchorX * affine.ax + affine.bx; const y = feature.labelAnchorY * affine.ay + affine.by; if (x < -margin || x > view.width + margin) continue; if (y < -margin || y > view.height + margin) continue; + const half = context.measureText(feature.labelText).width / 2 + LABEL_GAP_PX; + if ( + drawn.some( + (item) => Math.abs(item.x - x) < item.half + half && Math.abs(item.y - y) < LABEL_ROW_PX, + ) + ) { + continue; + } + drawn.push({ x, y, half }); context.lineWidth = 3; context.strokeStyle = haloColor(); context.strokeText(feature.labelText, x, y); diff --git a/B04_PreProcess/B04_PreProcess_UI_MapRender_Prepare.ts b/B04_PreProcess/B04_PreProcess_UI_MapRender_Prepare.ts new file mode 100644 index 00000000..149cfeea --- /dev/null +++ b/B04_PreProcess/B04_PreProcess_UI_MapRender_Prepare.ts @@ -0,0 +1,306 @@ +/* ============================================================================= + * B04_PreProcess_UI_MapRender_Prepare.ts + * 지도 레이어 **사전 투영** — GeoJSON·사업지 좌표 폴리라인을 정규화 좌표로 펴고, + * 줌 무손실 LOD 가중치(Douglas-Peucker)와 등고 라벨 앵커를 미리 잡아 둔다. + * + * `B04_PreProcess_UI_MapRender.ts` 가 700줄을 넘겨 떼어낸 조각이다(2026-09-12). + * 본문 로직과 수치는 그대로다. 그리기는 그쪽, 준비는 이쪽 — 한 방향으로만 기대어 + * 순환 참조가 생기지 않는다. + * ========================================================================== */ + +import type { VWorldMeta } from "./B04_PreProcess_Api_Fetch"; +import type { + GeoJsonCollection, + GeoJsonGeometry, + Normalizer, + PreparedFeature, + PreparedLayer, + PreparedPart, +} from "./B04_PreProcess_UI_MapRender"; + +function isPoint(value: unknown): value is [number, number] { + return Array.isArray(value) && typeof value[0] === "number" && typeof value[1] === "number"; +} + +/** lon/lat 배열 → 정규화 좌표 Float64Array. 유효 정점이 없으면 null. */ +function projectRing(ring: unknown, normalizer: Normalizer): Float64Array | null { + if (!Array.isArray(ring) || ring.length === 0) return null; + const coords = new Float64Array(ring.length * 2); + let count = 0; + for (const point of ring) { + if (!isPoint(point)) continue; + coords[count * 2] = (point[0] - normalizer.lonMin) / normalizer.lonRange; + coords[count * 2 + 1] = 1 - (point[1] - normalizer.latMin) / normalizer.latRange; + count += 1; + } + if (count === 0) return null; + return count * 2 === coords.length ? coords : coords.slice(0, count * 2); +} + +function collectParts( + geometry: GeoJsonGeometry, + normalizer: Normalizer, + parts: PreparedPart[], +): "line" | "point" { + const coordinates = geometry.coordinates; + if (!Array.isArray(coordinates)) return "line"; + const push = (ring: unknown, closed: boolean): void => { + const projected = projectRing(ring, normalizer); + if (projected) parts.push({ coords: projected, closed, weights: null }); + }; + switch (geometry.type) { + case "Point": + push([coordinates], false); + return "point"; + case "MultiPoint": + push(coordinates, false); + return "point"; + case "LineString": + push(coordinates, false); + return "line"; + case "MultiLineString": + for (const line of coordinates) push(line, false); + return "line"; + case "Polygon": + for (const ring of coordinates) push(ring, true); + return "line"; + case "MultiPolygon": + for (const polygon of coordinates) { + if (!Array.isArray(polygon)) continue; + for (const ring of polygon) push(ring, true); + } + return "line"; + default: + return "line"; + } +} + +/** + * Douglas-Peucker 가중치 계산 (반복형, 스택 오버플로 방지). + * weights[i] = "허용 오차가 이 값보다 크면 정점 i를 버려도 되는" 임계값. + * 부모 구간의 오차로 상한을 걸어(cap) 어떤 허용 오차에서도 일관된 부분집합이 나오게 한다. + * y축은 1/aspect로 보정해 화면 픽셀 거리와 비례하는 좌표계에서 계산한다. + */ +function computeDpWeights(coords: Float64Array, aspect: number): Float64Array { + const n = coords.length / 2; + const weights = new Float64Array(n); + weights[0] = Infinity; + weights[n - 1] = Infinity; + if (n <= 2) return weights; + const stack: number[] = [0, n - 1]; + const caps: number[] = [Infinity]; + while (stack.length) { + const last = stack.pop()!; + const first = stack.pop()!; + const cap = caps.pop()!; + if (last - first < 2) continue; + const ax = coords[first * 2]; + const ay = coords[first * 2 + 1] / aspect; + const bx = coords[last * 2]; + const by = coords[last * 2 + 1] / aspect; + const dx = bx - ax; + const dy = by - ay; + const len = Math.sqrt(dx * dx + dy * dy); + let maxDist = -1; + let maxIndex = -1; + for (let i = first + 1; i < last; i += 1) { + const px = coords[i * 2] - ax; + const py = coords[i * 2 + 1] / aspect - ay; + const dist = len === 0 ? Math.sqrt(px * px + py * py) : Math.abs(px * dy - py * dx) / len; + if (dist > maxDist) { + maxDist = dist; + maxIndex = i; + } + } + const weight = Math.min(maxDist, cap); + weights[maxIndex] = weight; + stack.push(first, maxIndex, maxIndex, last); + caps.push(weight, weight); + } + return weights; +} + +/** 등고 라벨 앵커: LineString/MultiLineString 첫 파트의 중앙 정점 (기존 동작 유지). */ +function labelAnchorOf(geometry: GeoJsonGeometry, normalizer: Normalizer): [number, number] | null { + const coords = geometry.coordinates; + if (!Array.isArray(coords)) return null; + const line = + geometry.type === "LineString" + ? coords + : geometry.type === "MultiLineString" + ? coords[0] + : null; + if (!Array.isArray(line) || line.length === 0) return null; + const mid = line[Math.floor(line.length / 2)]; + if (!isPoint(mid)) return null; + return [ + (mid[0] - normalizer.lonMin) / normalizer.lonRange, + 1 - (mid[1] - normalizer.latMin) / normalizer.latRange, + ]; +} + +/** + * GeoJSON 컬렉션 1개를 사전 투영한다. + * labelKeys가 주어지면 계곡선(25m 배수) 피처에만 라벨 텍스트·앵커를 계산해 둔다. + */ +export function prepareLayer( + collection: GeoJsonCollection | undefined, + normalizer: Normalizer, + labelKeys?: string[], +): PreparedLayer { + const features: PreparedFeature[] = []; + for (const feature of collection?.features ?? []) { + if (!feature.geometry) continue; + const parts: PreparedPart[] = []; + const kind = collectParts(feature.geometry, normalizer, parts); + if (parts.length === 0) continue; + if (kind === "line") { + for (const part of parts) { + if (part.coords.length < 6) continue; + part.weights = computeDpWeights(part.coords, normalizer.aspect); + } + } + let minX = Infinity; + let minY = Infinity; + let maxX = -Infinity; + let maxY = -Infinity; + for (const part of parts) { + const coords = part.coords; + for (let i = 0; i < coords.length; i += 2) { + const x = coords[i]; + const y = coords[i + 1]; + if (x < minX) minX = x; + if (x > maxX) maxX = x; + if (y < minY) minY = y; + if (y > maxY) maxY = y; + } + } + let labelText: string | null = null; + let labelValue: number | null = null; + let labelAnchorX = 0; + let labelAnchorY = 0; + if (labelKeys && labelKeys.length > 0) { + const raw = labelKeys.map((key) => feature.properties?.[key]).find((value) => value != null); + const elevation = typeof raw === "number" ? raw : Number(raw); + // **모든 등고선**에 앵커를 잡아 둔다. 어느 줄을 실제로 낼지는 그릴 때 고른다 — + // 화면마다 솎는 눈금이 다르기 때문이다(B04 지도는 계곡선만, 계획노선 편집 모달은 + // 확대에 따라 더 촘촘히). 준비 단계에서 걸러 버리면 확대해도 되살릴 수가 없다. + if (Number.isFinite(elevation)) { + const anchor = labelAnchorOf(feature.geometry, normalizer); + if (anchor) { + labelText = String(elevation); + labelValue = elevation; + labelAnchorX = anchor[0]; + labelAnchorY = anchor[1]; + } + } + } + features.push({ + kind, + parts, + minX, + minY, + maxX, + maxY, + labelAnchorX, + labelAnchorY, + labelText, + labelValue, + }); + } + return { features }; +} + +/** + * 사업지 좌표계(m) 폴리라인을 한 개 피처짜리 레이어로 사전 투영한다. + * meta의 x/y 범위와 lon/lat 범위는 같은 사각형을 가리키므로, 미터 좌표도 GeoJSON과 동일한 + * 정규화 공간으로 들어간다 — 노선 선형을 도엽 레이어 위에 그대로 겹칠 수 있다. + */ +export function prepareMetricPolyline( + points: ReadonlyArray<{ x: number; y: number }>, + meta: VWorldMeta, +): PreparedLayer { + if (points.length < 2) return { features: [] }; + const widthMeters = meta.width_meters || 1; + const heightMeters = meta.height_meters || 1; + const coords = new Float64Array(points.length * 2); + let minX = Infinity; + let minY = Infinity; + let maxX = -Infinity; + let maxY = -Infinity; + points.forEach((point, index) => { + const nx = (point.x - meta.x_min) / widthMeters; + const ny = 1 - (point.y - meta.y_min) / heightMeters; + coords[index * 2] = nx; + coords[index * 2 + 1] = ny; + if (nx < minX) minX = nx; + if (nx > maxX) maxX = nx; + if (ny < minY) minY = ny; + if (ny > maxY) maxY = ny; + }); + return { + features: [ + { + kind: "line", + parts: [{ coords, closed: false, weights: null }], + minX, + minY, + maxX, + maxY, + labelAnchorX: 0, + labelAnchorY: 0, + labelText: null, + labelValue: null, + }, + ], + }; +} + +/** + * 사업지 좌표계(m) 폴리라인 **여러 개**를 한 레이어로 사전 투영한다(LAS 등고선 등). + * + * `prepareMetricPolyline` 의 여러 줄 판이다. 줄마다 `label`(표고 m)을 주면 가운데 정점을 + * 앵커로 잡아 `drawPreparedLabels` 가 그대로 쓸 수 있다. + */ +export function prepareMetricPolylines( + lines: ReadonlyArray<{ points: ReadonlyArray; label?: number }>, + meta: VWorldMeta, +): PreparedLayer { + const widthMeters = meta.width_meters || 1; + const heightMeters = meta.height_meters || 1; + const features: PreparedFeature[] = []; + for (const line of lines) { + if (line.points.length < 2) continue; + const coords = new Float64Array(line.points.length * 2); + let minX = Infinity; + let minY = Infinity; + let maxX = -Infinity; + let maxY = -Infinity; + line.points.forEach((point, index) => { + const nx = (point[0] - meta.x_min) / widthMeters; + const ny = 1 - (point[1] - meta.y_min) / heightMeters; + coords[index * 2] = nx; + coords[index * 2 + 1] = ny; + if (nx < minX) minX = nx; + if (nx > maxX) maxX = nx; + if (ny < minY) minY = ny; + if (ny > maxY) maxY = ny; + }); + const middle = Math.floor(line.points.length / 2) * 2; + features.push({ + kind: "line", + parts: [ + { coords, closed: false, weights: computeDpWeights(coords, widthMeters / heightMeters) }, + ], + minX, + minY, + maxX, + maxY, + labelAnchorX: coords[middle], + labelAnchorY: coords[middle + 1], + labelText: line.label === undefined ? null : String(line.label), + labelValue: line.label ?? null, + }); + } + return { features }; +} diff --git a/B04_PreProcess/B04_PreProcess_UI_MapViewer.ts b/B04_PreProcess/B04_PreProcess_UI_MapViewer.ts index 61782992..2409f70b 100644 --- a/B04_PreProcess/B04_PreProcess_UI_MapViewer.ts +++ b/B04_PreProcess/B04_PreProcess_UI_MapViewer.ts @@ -33,8 +33,6 @@ import { createNormalizer, drawPreparedLabels, drawPreparedLayer, - prepareLayer, - prepareMetricPolyline, routeLineColor, ROUTE_LINE_WIDTH, type GeoJsonCollection, @@ -44,6 +42,7 @@ import { type PreparedLayer, type ViewState, } from "./B04_PreProcess_UI_MapRender"; +import { prepareLayer, prepareMetricPolyline } from "./B04_PreProcess_UI_MapRender_Prepare"; import { drawStationTicks } from "./B04_PreProcess_UI_MapOverlays"; import type { WatershedAnalysis } from "./B04_PreProcess_Api_Fetch"; diff --git a/B05_Profile/B05_Profile_Api_Replan.ts b/B05_Profile/B05_Profile_Api_Replan.ts index 4f6c4539..ad414804 100644 --- a/B05_Profile/B05_Profile_Api_Replan.ts +++ b/B05_Profile/B05_Profile_Api_Replan.ts @@ -56,8 +56,12 @@ export interface RoutePlanResponse { nodes: RoutePlanNode[]; /** 직선·곡선 성분 — 곡선 시작·끝점과 반지름. 화면이 이것으로 손잡이를 그린다. */ curves: RoutePlanCurve[]; - /** 이 프로젝트에 적용한 법정 최소곡선반지름(m). */ + /** 이 프로젝트에 적용한 법정 최소곡선반지름(m) — **기본값·위반 표시 기준**. */ min_radius_m: number; + /** **못 넘는** 곡선반지름 하한(m). 0이면 제한 없음(작업임도). 기본값과 다른 값이다. */ + limit_radius_m?: number; + /** **못 넘는** 곡선 길이 하한(m). 0이면 제한 없음 — 지금은 전부 0(법에 값이 없음). */ + limit_curve_length_m?: number; curve_count: number; violation_count: number; /** 사용자가 고친 계획노선이 저장돼 있으면 true. */ @@ -128,6 +132,60 @@ export async function replanRoute( ); } +/** 점 묶음의 **지반고**를 묻는다(계획서 0-9 ⑤·⑧). + * + * 새 계산이 아니라 확정된 지표면을 **읽기만** 하므로 편집 중에 불러도 된다 — 다만 끄는 동안 + * 프레임마다 부르지는 않는다(찍는 순간에만). 지표면 밖은 `null` 로 온다. */ +export async function fetchRouteElevations( + projectId: string, + points: Array<[number, number]>, +): Promise> { + const payload = await requestJson<{ z: Array }>( + `/projects/${projectId}/route/elevations`, + { method: "POST", body: JSON.stringify({ points }) }, + 60000, + ); + return payload.z; +} + +/** 횡단 미리보기 한 장 — 고치던 노선 그대로 그 측점만 서버가 셈해 준다(계획서 0-9 ⑧). */ +export interface CrossPreviewResponse { + status: string; + chainage_m: number; + label: string | null; + uphill_side: string | null; + plan_radius_m: number | null; + curve_widening_m: number | null; + /** 원지반 횡단 샘플. */ + samples: Array<{ offset_m?: number; elevation_m?: number | null; valid: boolean }>; + /** 기본 계획 횡단 — B06 `compute_cross_design` 이 낸 것. 계획고를 못 세우면 null. */ + design: { + design_line: Array<{ offset_m: number; elevation_m: number }>; + cut_area_m2: number; + fill_area_m2: number; + [key: string]: unknown; + } | null; +} + +export interface CrossPreviewRequest { + vertices: Array<{ x: number; y: number; curve: boolean; radius_m: number | null }>; + chainage_m: number; + min_radius_m: number; + station_interval_m: number; +} + +/** 한 측점 횡단을 묻는다. 종·횡단을 한 번 돌리므로 **한두 초** 걸린다(사용자 확정: 괜찮음). */ +export async function fetchCrossPreview( + projectId: string, + request: CrossPreviewRequest, +): Promise { + return requestJson( + `/projects/${projectId}/route/cross-preview`, + { method: "POST", body: JSON.stringify(request) }, + 120000, + ); +} + /** 계획노선을 예상노선으로 되돌리고 같은 재계산을 돈다(노선 초기화). */ export async function resetRoutePlan(projectId: string): Promise { return requestJson( diff --git a/B05_Profile/B05_Profile_Engine_Grade.py b/B05_Profile/B05_Profile_Engine_Grade.py index e250d8f4..706bc263 100644 --- a/B05_Profile/B05_Profile_Engine_Grade.py +++ b/B05_Profile/B05_Profile_Engine_Grade.py @@ -151,6 +151,37 @@ def legal_plan_radius_min_m(design_speed_kph: int, terrain_type: str = "normal") return float(speeds[terrain]) +def plan_radius_limit_m( + grade_class: str, + design_speed_kph: int | None = None, + terrain_type: str = "normal", +) -> float: + """계획노선 편집 화면이 **못 넘게 막을** 평면 곡선반지름 하한(m). 0이면 제한 없음. + + 위 `legal_plan_radius_min_m` 은 **기본값·위반 표시 기준**이고 이것은 **제한**이다 + (2026-09-12 사용자 확정: 「아예 못 넘게 막음」). 임도 종류별 칸이 비어 있으면(None) + 법정 표를 그대로 하한으로 쓰고, 값이 적혀 있으면 그 값을 쓴다 — 작업임도는 별표2에 + 곡선반지름 규정이 없어 0(제한 없음)으로 열려 있다. + """ + table = FOREST_ROAD_PROFILE_CRITERIA["plan_radius_limit_by_grade_m"] + override = table.get(grade_class) + if override is not None: + return float(override) + return legal_plan_radius_min_m( + resolve_design_speed(grade_class, design_speed_kph), terrain_type + ) + + +def plan_curve_length_limit_m(grade_class: str) -> float: + """평면 **곡선 길이(L)** 하한(m). 0이면 제한 없음. + + 법령·교본에 값이 없어 지금은 임도 종류 전부 0이다 — 자리만 열어 둔 칸이라 + 실무값이 정해지면 `config_system_design` 의 표만 고치면 된다(2026-09-12 사용자 확정). + """ + table = FOREST_ROAD_PROFILE_CRITERIA["plan_curve_length_limit_by_grade_m"] + return float(table.get(grade_class) or 0.0) + + def _pick(*candidates: Any) -> Any: """요청 → DB 저장값 → config 순으로 처음 나오는 유효값을 고른다.""" for value in candidates: diff --git a/B05_Profile/B05_Profile_Router_Replan.py b/B05_Profile/B05_Profile_Router_Replan.py index cfbe16d5..50bc3103 100644 --- a/B05_Profile/B05_Profile_Router_Replan.py +++ b/B05_Profile/B05_Profile_Router_Replan.py @@ -133,7 +133,19 @@ def _ensure_expected_route(project_root: Path) -> str: async def _min_plan_radius_m(project_id: UUID) -> float: - """이 프로젝트에 적용할 법정 최소곡선반지름(m) — 임도 종류·설계속도·지형으로 고른다. + """기본 반지름만 필요한 자리 — 하한까지 필요하면 `_plan_criteria` 를 쓸 것.""" + criteria = await _plan_criteria(project_id) + return criteria[0] + + +async def _plan_criteria(project_id: UUID) -> tuple[float, float, float]: + """이 프로젝트의 **기본 반지름 · 반지름 하한 · 곡선 길이 하한**(m) 세 값. + + 기본 반지름은 곡선을 만들 때 쓰는 값이고, 하한 둘은 **화면이 못 넘게 막는** 값이다 + (2026-09-12 사용자 확정). 둘을 한 값으로 묶으면 하한 0 이 곧 반지름 0 이 되어 곡선이 + 아예 안 그려지므로 반드시 갈라 둔다. + + 기본 반지름은 임도 종류·설계속도·지형으로 고른다. 값의 출처는 지식DB(`01_임도/02_상세설계/평면선형.md`, 별표2 Ⅰ.2.다)이고 산식은 이미 `B05_Profile_Engine_Grade.legal_plan_radius_min_m` 에 있다 — 여기서 다시 짜지 않는다. @@ -145,7 +157,12 @@ async def _min_plan_radius_m(project_id: UUID) -> float: """ import aiomysql - from B05_Profile.B05_Profile_Engine_Grade import legal_plan_radius_min_m, resolve_design_speed + from B05_Profile.B05_Profile_Engine_Grade import ( + legal_plan_radius_min_m, + plan_curve_length_limit_m, + plan_radius_limit_m, + resolve_design_speed, + ) from common_util.common_util_workflow_state import get_workflow_state grade_class, design_speed, terrain = "work", None, "special" @@ -172,7 +189,11 @@ async def _min_plan_radius_m(project_id: UUID) -> float: terrain = str(params["terrain_type"]) except Exception: # noqa: BLE001 — 설정을 못 읽어도 폴리라인화는 이어 간다 logger.exception("최소곡선반지름 설정을 못 읽어 기본값을 씁니다: %s", project_id) - return legal_plan_radius_min_m(resolve_design_speed(grade_class, design_speed), terrain) + return ( + legal_plan_radius_min_m(resolve_design_speed(grade_class, design_speed), terrain), + plan_radius_limit_m(grade_class, design_speed, terrain), + plan_curve_length_limit_m(grade_class), + ) def _nodes_path(path: Path) -> Path: @@ -404,7 +425,7 @@ async def read_route_plan(project_id: UUID) -> dict[str, Any] | JSONResponse: if not expected: expected = await asyncio.to_thread(_vertices_of, design_route_csv_path(project_root)) - radius_m = await _min_plan_radius_m(project_id) + radius_m, radius_limit_m, arc_limit_m = await _plan_criteria(project_id) await asyncio.to_thread(_ensure_planned_initial, project_root, radius_m) working = await asyncio.to_thread(_vertices_of, planned_route_working_path(project_root)) initial = await asyncio.to_thread(_vertices_of, planned_route_initial_path(project_root)) @@ -445,6 +466,10 @@ async def read_route_plan(project_id: UUID) -> dict[str, Any] | JSONResponse: # (2026-09-07 사용자 확정). 저장분이 있으면 그것을, 없으면 방금 뽑은 것을 준다. "curves": saved_curves or [curve.as_dict() for curve in outline.curves], "min_radius_m": round(radius_m, 2), + # **못 넘는 하한** — 기본값(`min_radius_m`)과 다른 값이다. 0이면 제한 없음 + # (작업임도는 별표2에 곡선반지름 규정이 없어 0으로 열려 있다, 2026-09-12 확정). + "limit_radius_m": round(radius_limit_m, 2), + "limit_curve_length_m": round(arc_limit_m, 2), "curve_count": len(saved_curves) if saved_curves else outline.curve_count, "violation_count": outline.violation_count, "edited": bool(working), @@ -468,7 +493,7 @@ async def replan_route( # 고치기 전에 예상노선(원본)·초기 폴리라인이 서 있는지 본다 — 초기화가 돌아갈 자리다. await asyncio.to_thread(_ensure_expected_route, project_root) - radius_m = await _min_plan_radius_m(project_id) + radius_m, radius_limit_m, arc_limit_m = await _plan_criteria(project_id) await asyncio.to_thread(_ensure_planned_initial, project_root, radius_m) # 화면이 보낸 것은 **노드(꺾임점)** 다 — 같은 R 규칙으로 다시 폴리라인을 만든다. # 노드만 옮기면 선이 저절로 규칙을 지키는 것이 이 구조의 목적이다(2026-09-06 사용자). @@ -527,7 +552,7 @@ async def reset_route_plan(project_id: UUID) -> dict[str, Any] | JSONResponse: return JSONResponse(status_code=404, content=_PROJECT_PATH_MISSING) project_root, stored_path = paths await asyncio.to_thread(_ensure_expected_route, project_root) - radius_m = await _min_plan_radius_m(project_id) + radius_m, radius_limit_m, arc_limit_m = await _plan_criteria(project_id) await asyncio.to_thread(_ensure_planned_initial, project_root, radius_m) working_path = planned_route_working_path(project_root) if working_path.is_file(): diff --git a/B05_Profile/B05_Profile_Router_Terrain.py b/B05_Profile/B05_Profile_Router_Terrain.py new file mode 100644 index 00000000..db032f93 --- /dev/null +++ b/B05_Profile/B05_Profile_Router_Terrain.py @@ -0,0 +1,221 @@ +"""계획노선 편집 중 **지반고만** 묻는 가벼운 통로. + +편집 모달은 [확인] 전까지 아무 계산도 내보내지 않는다(계획서 0-2 확정 7). 다만 두 점을 찍어 +**구간 길이와 종단기울기**를 볼 때(0-9 ⑤)와 한 측점의 **횡단도 미리보기**(⑧)는 지반고가 +있어야 한다. 새 계산이 아니라 **이미 확정된 지표면을 읽기만** 하는 통로라 그 규칙과 부딪히지 +않는다 — 노선을 갈아 끼우지도, 정본을 건드리지도 않는다. + +표고 조회는 종·횡단 생성기가 쓰는 것과 **같은 sampler**(`build_surface_sampler`)를 연다. +두 화면이 다른 표고를 보면 같은 자리의 기울기가 갈린다. + + POST /api/projects/{id}/route/elevations → 점 묶음의 지반고 + POST /api/projects/{id}/route/cross-preview → 고치던 노선의 한 측점 횡단 미리보기 +""" + +import asyncio +import logging +from pathlib import Path +from uuid import UUID + +import numpy as np +from fastapi import APIRouter +from fastapi.responses import JSONResponse +from pydantic import BaseModel, Field + +from B03_FileInput.B03_FileInput_Repository import get_project_storage_relative_path +from B05_Profile.B05_Profile_Engine_Sections_Core import ( + SectionGenerationOptions, + generate_sections, +) +from B06_Section.B06_Section_Engine_Design import compute_cross_design, curve_widening_args +from common_util.common_util_route_polyline import build_planned_polyline +from common_util.common_util_storage import resolve_stored_project_path +from common_util.common_util_surface_confirmation import get_surface_confirmation_params +from common_util.common_util_surface_sampler import build_surface_sampler +from config.config_db import get_db_pool + +logger = logging.getLogger(__name__) +router = APIRouter(prefix="/api/projects", tags=["B05 Route Terrain"]) + +_MODELS_SUBDIR = Path("B04_PreProcess") / "models" +#: 한 번에 물을 수 있는 점 수. 구간 재기는 수십 점, 횡단 한 장은 수백 점이면 넉넉하다 — +#: 상한을 두어 실수로 노선 전체를 밀어 넣는 일을 막는다. +MAX_POINTS = 4000 + + +class ElevationRequest(BaseModel): + """사업지 좌표계(m) 점 묶음 [[x, y], …].""" + + points: list[tuple[float, float]] = Field(..., min_length=1, max_length=MAX_POINTS) + + +def _sample(project_root: Path, params: dict, points: list[tuple[float, float]]): + """확정 지표면에서 표고를 읽는다. 모델을 못 열면 None.""" + try: + sampler = build_surface_sampler( + project_root / _MODELS_SUBDIR, + str(params["source_filter"]), + str(params["method"]), + bool(params["smooth"]), + ) + except (FileNotFoundError, KeyError, OSError, ValueError) as exc: + logger.warning("계획노선 편집: 지표면을 열지 못했습니다 — %s", exc) + return None + z, valid = sampler.sample_xy(np.asarray(points, dtype=np.float64)) + return z, valid + + +@router.post("/{project_id}/route/elevations", response_model=None) +async def read_route_elevations(project_id: UUID, request: ElevationRequest) -> dict | JSONResponse: + """점 묶음의 지반고(m)와 유효 여부를 돌려준다. + + 지표면 밖이거나 자료가 없는 자리는 `valid=false` 로 나가고 표고는 `null` 이다 — + **임의 표고로 메우지 않는다**(sampler 규칙 그대로). 화면은 그 자리를 「모름」으로 낸다. + """ + pool = get_db_pool() + async with pool.acquire() as connection: + stored = await get_project_storage_relative_path(connection, project_id) + if not stored: + return JSONResponse( + status_code=404, + content={"status": "error", "message": "프로젝트 저장 경로를 찾을 수 없습니다."}, + ) + params = await get_surface_confirmation_params(connection, str(project_id)) + + project_root = Path(resolve_stored_project_path(stored)) + sampled = await asyncio.to_thread(_sample, project_root, params, request.points) + if sampled is None: + return JSONResponse( + status_code=409, + content={ + "status": "error", + "message": "확정된 지표면이 없어 지반고를 읽을 수 없습니다.", + }, + ) + z, valid = sampled + return { + "status": "success", + "project_id": str(project_id), + "z": [None if not ok else round(float(value), 3) for value, ok in zip(z, valid)], + "valid": [bool(ok) for ok in valid], + } + + +class PreviewVertex(BaseModel): + """편집 중인 꺾임점 하나 — `RouteVertexInput` 과 같은 꼴.""" + + x: float + y: float + curve: bool = True + radius_m: float | None = None + + +class CrossPreviewRequest(BaseModel): + """고치던 노선 그대로 한 측점의 횡단을 미리 본다.""" + + vertices: list[PreviewVertex] = Field(..., min_length=2) + chainage_m: float = Field(..., ge=0) + #: 법정 최소곡선반지름(m) — 화면이 `/route/plan` 에서 받은 값을 그대로 돌려준다. + min_radius_m: float = Field(12.0, gt=0) + station_interval_m: float | None = None + + +def _cross_preview( + project_root: Path, + params: dict, + request: CrossPreviewRequest, +) -> dict | None: + """고치던 노선으로 종·횡단을 한 번 돌려 그 측점 한 장을 뽑는다. + + **B05·B06 의 정본 로직을 그대로 재사용한다**(2026-09-12 사용자 확정 「기본 로직은 B06에 + 존재함. 재사용」) — `generate_sections` 가 측점·접선·지반 샘플을, `compute_cross_design` + 이 설계선을 만든다. 여기서 기하를 새로 짜지 않는다. + + ⚠ **계획고는 아직 없다.** 계획고는 [확인] 뒤 전 체인이 낳는 값이라 편집 중에는 존재하지 + 않는다. 그래서 그 측점의 **지반고를 그대로 계획고로 놓는다**(지반 추종) — 절·성토가 사면 + 기울기만으로 서는 「기본 계획 횡단」이며, 사용자가 보기로 한 것도 그것이다. + """ + try: + sampler = build_surface_sampler( + project_root / _MODELS_SUBDIR, + str(params["source_filter"]), + str(params["method"]), + bool(params["smooth"]), + ) + except (FileNotFoundError, KeyError, OSError, ValueError) as exc: + logger.warning("횡단 미리보기: 지표면을 열지 못했습니다 — %s", exc) + return None + + built = build_planned_polyline( + [(vertex.x, vertex.y) for vertex in request.vertices], + min_radius_m=request.min_radius_m, + # 화면이 준 노드는 이미 꺾임점이다 — 다시 뽑으면 선이 깎인다(`_write_planned_polyline`). + simplify=False, + curve_flags=[vertex.curve for vertex in request.vertices], + radii=[vertex.radius_m for vertex in request.vertices], + ) + interval = request.station_interval_m + options = ( + SectionGenerationOptions(station_interval_m=float(interval)) + if interval and interval > 0 + else SectionGenerationOptions() + ) + result = generate_sections(built.vertices, sampler, options) + sections = result["cross_sections"] + if not sections: + return None + section = min(sections, key=lambda row: abs(float(row["chainage_m"]) - request.chainage_m)) + + design = None + center_z = section.get("center_z") + if center_z is not None: + # 단면유형 기본값은 B06 화면과 같다 — 등고가 높은 쪽을 절토로 본다. + section_mode = "right_cut" if section.get("uphill_side") == "right" else "left_cut" + design = compute_cross_design( + section["samples"], + float(center_z), + ground_type="soil", + section_mode=section_mode, + **curve_widening_args(section), + ) + return { + "chainage_m": round(float(section["chainage_m"]), 3), + "label": section.get("label"), + "uphill_side": section.get("uphill_side"), + "plan_radius_m": section.get("plan_radius_m"), + "curve_widening_m": section.get("curve_widening_m"), + "samples": section["samples"], + "design": design, + "total_length_m": round(float(result["longitudinal"]["total_length_m"]), 3) + if result.get("longitudinal", {}).get("total_length_m") is not None + else None, + } + + +@router.post("/{project_id}/route/cross-preview", response_model=None) +async def read_cross_preview(project_id: UUID, request: CrossPreviewRequest) -> dict | JSONResponse: + """고치던 계획노선의 **한 측점 횡단**을 돌려준다(계획서 0-9 ⑧). + + 정본을 건드리지 않는다 — 파일도 DB 도 쓰지 않고 그 자리에서 셈해 돌려주기만 한다. + """ + pool = get_db_pool() + async with pool.acquire() as connection: + stored = await get_project_storage_relative_path(connection, project_id) + if not stored: + return JSONResponse( + status_code=404, + content={"status": "error", "message": "프로젝트 저장 경로를 찾을 수 없습니다."}, + ) + params = await get_surface_confirmation_params(connection, str(project_id)) + + project_root = Path(resolve_stored_project_path(stored)) + preview = await asyncio.to_thread(_cross_preview, project_root, params, request) + if preview is None: + return JSONResponse( + status_code=409, + content={ + "status": "error", + "message": "확정된 지표면이 없어 횡단을 미리 볼 수 없습니다.", + }, + ) + return {"status": "success", "project_id": str(project_id), **preview} diff --git a/B05_Profile/B05_Profile_UI_Drainage_Panel.ts b/B05_Profile/B05_Profile_UI_Drainage_Panel.ts index 58827809..e8c1f183 100644 --- a/B05_Profile/B05_Profile_UI_Drainage_Panel.ts +++ b/B05_Profile/B05_Profile_UI_Drainage_Panel.ts @@ -15,13 +15,15 @@ import { computeMapRect, MAP_STATION_INTERVAL_M, createNormalizer, - prepareLayer, - prepareMetricPolyline, type MapRect, type Normalizer, type PreparedLayer, type ViewState, } from "../B04_PreProcess/B04_PreProcess_UI_MapRender"; +import { + prepareLayer, + prepareMetricPolyline, +} from "../B04_PreProcess/B04_PreProcess_UI_MapRender_Prepare"; import { type RoutePoint } from "./B05_Profile_Api_Fetch"; import type { FlowArrow } from "../B04_PreProcess/B04_PreProcess_UI_FlowArrows"; import { buildStrengthArray } from "../B04_PreProcess/B04_PreProcess_UI_FlowRamp"; diff --git a/B05_Profile/B05_Profile_UI_Page.ts b/B05_Profile/B05_Profile_UI_Page.ts index bdc2df3b..4f93666d 100644 --- a/B05_Profile/B05_Profile_UI_Page.ts +++ b/B05_Profile/B05_Profile_UI_Page.ts @@ -281,9 +281,20 @@ export async function renderB05Route(root: HTMLElement): Promise { // 계획노선 편집 — 모달 [확인]에서 서버가 배수유역부터 다시 계산하므로, 끝나면 // 옛 노선 기준 캐시를 버리고 페이지를 새로 세운다([초기화]와 같은 뒷정리). onEditPlannedRoute: () => - void openRouteEditModal(activeProjectId, () => { - navigateTo(ROUTES.B05_PROFILE); - }), + void openRouteEditModal( + activeProjectId, + () => { + navigateTo(ROUTES.B05_PROFILE); + }, + { + // 측점 눈금 간격은 좌측 패널이 쥔 값을 그대로 넘긴다 — 모달이 따로 굳히지 않는다. + stationIntervalM: panel.values().stationInterval ?? undefined, + // 바탕 등고선 — 확정 지표면이 있으면 모달이 LAS 등고선을 쓴다(계획서 0-9 ⑥). + surfaceModelId: confirmedSurface?.model_id ?? null, + contourIntervalM: latest?.surface_params.contour_interval_m, + smooth: latest?.surface_params.smooth, + }, + ), onTempSave: () => void tempSaveAction(actionContext), onGoCross: () => { // 페이지 이동 = 코리도 영구저장 시점(2026-08-23 사용자 확정) — 이동은 막지 않는다. diff --git a/B05_Profile/B05_Profile_UI_RouteEdit.ts b/B05_Profile/B05_Profile_UI_RouteEdit.ts index 23f76c1e..99c76a89 100644 --- a/B05_Profile/B05_Profile_UI_RouteEdit.ts +++ b/B05_Profile/B05_Profile_UI_RouteEdit.ts @@ -16,36 +16,44 @@ import { computeMapRect, computeRouteView, - drawPreparedLayer, createNormalizer, + hitPreparedLayer, metricToScreen, - prepareLayer, + pickLevelStep, type PreparedLayer, type ViewState, } from "../B04_PreProcess/B04_PreProcess_UI_MapRender"; +import { prepareLayer } from "../B04_PreProcess/B04_PreProcess_UI_MapRender_Prepare"; import type { VWorldMeta } from "../B04_PreProcess/B04_PreProcess_Api_Fetch"; -import { clearDrafts, clearResults } from "../A00_Common/b_page_state"; import { showToast } from "@ui/ui_template_elements"; +import { loadRouteEditContours, type RouteEditContours } from "./B05_Profile_UI_RouteEdit_Contour"; import { fetchDrainageLayers } from "./B05_Profile_UI_Drainage_Parts"; -import { fetchRoutePlan, replanRoute, resetRoutePlan } from "./B05_Profile_Api_Replan"; -import type { RoutePlanCurve } from "./B05_Profile_Api_Replan"; -import { buildEditedPolyline, dragHandleTo as curveDragTo } from "./B05_Profile_UI_RouteEdit_Curve"; +import { fetchRoutePlan } from "./B05_Profile_Api_Replan"; +import { bindRouteApply } from "./B05_Profile_UI_RouteEdit_Apply"; +import { + buildEditedPolyline, + dragHandleTo as curveDragTo, + type EditedCurve, + type EditedNode, +} from "./B05_Profile_UI_RouteEdit_Curve"; +import { drawRouteEditScene, polylineLengthM } from "./B05_Profile_UI_RouteEdit_Render"; import { bindRouteEditNavigation, - contourBandRect, handleAtScreen, nodeAtScreen, segmentAtScreen, + stationAtScreen, } from "./B05_Profile_UI_RouteEdit_Input"; -import { - centerDirectionOf, - createCurveLabel, - deflectionRad, -} from "./B05_Profile_UI_RouteEdit_Label"; +import { createCrossPreview } from "./B05_Profile_UI_RouteEdit_Cross"; +import { createMeasureTool } from "./B05_Profile_UI_RouteEdit_Measure"; +import { createCurveBar } from "./B05_Profile_UI_RouteEdit_CurveBar"; import { applyArcLocks, + applyCurveLimits, + curveShortfalls, curveSummary, flattenServerPlan, + shortfallCrossed, type CurveLock, } from "./B05_Profile_UI_RouteEdit_Edits"; import { @@ -58,27 +66,32 @@ import "./B05_Profile_UI_Style_RouteEdit.css"; /** 노드를 잡았다고 볼 거리(px). 손가락·마우스 모두 무리 없는 크기. */ const NODE_HIT_PX = 9; -/** 노드 반지름(px). */ -const NODE_R = 4; /** 선을 두 번 눌러 노드를 끼울 때, 선에서 이만큼(px) 안쪽이면 그 선으로 본다. */ const SEGMENT_HIT_PX = 12; -/** 등고선을 보일 **노선 둘레 띠**(m) — 사용자 지시 ⑥(2026-09-07). - * - * 노선에서 이만큼 밖의 등고선은 안 그린다. **창 크기와 무관한 고정 띠**라 창을 늘리거나 - * 줄여도 띠가 흔들리지 않는다(사용자가 「다이나믹 창이라 조심」이라 한 자리). 화면 밖을 - * 걸러내는 일은 `drawPreparedLayer` 가 이미 하므로 여기서는 띠만 덧씌운다. */ -const CONTOUR_BAND_M = 300; -/** 곡선 시작·끝점 손잡이 크기(px) — 노드 동그라미와 구별되게 **속 빈 네모**로 그린다. - * 처음엔 3.5px 였는데 선과 색이 같아 눈에도 안 띄고 집기도 어려웠다(2026-09-07 실화면). */ -const CURVE_HANDLE_PX = 5; +/** 등고선을 집었다고 볼 거리(px) — 노드·손잡이보다 **좁게** 둔다(노선 편집이 먼저). */ +const CONTOUR_HIT_PX = 6; +/** 측점 눈금을 집었다고 볼 거리(px) — 눈금이 보이는 자리를 누르면 잡히게 넉넉히. */ +const STATION_HIT_PX = 11; type Vertex = [number, number]; /** 모달을 연다. [확인]·[예상노선으로]가 끝나면 `onApplied`를 부른다(화면 다시 읽기). */ +export interface RouteEditOptions { + /** 규칙 측점 간격(m) — 좌측 패널이 쥔 값을 그대로 받는다(코드에 굳히지 않는다). */ + stationIntervalM?: number; + /** 확정 지표면 모델 id — 있으면 바탕 등고선을 **LAS 것**으로 쓴다(계획서 0-9 ⑥). */ + surfaceModelId?: number | null; + /** 등고선 간격(m)·평활 여부 — 3D 뷰어가 쓰는 값 그대로. */ + contourIntervalM?: number; + smooth?: boolean; +} + export async function openRouteEditModal( projectId: string, onApplied: () => void | Promise, + options: RouteEditOptions = {}, ): Promise { + const stationIntervalM = options.stationIntervalM ?? 20; const overlay = document.createElement("div"); overlay.className = "b05-routeedit"; overlay.innerHTML = ` @@ -87,7 +100,9 @@ export async function openRouteEditModal( 계획노선 편집 노드 끌기 = 옮기기 · 노드 클릭 = R 라벨 · 선 두 번 클릭 = 노드 추가 · - 노드 오른쪽 클릭 = 삭제 · 가운데(휠) 버튼 끌기 = 지도 이동 · 휠 = 확대 + 노드 오른쪽 클릭 = 삭제 · 측점 눈금 클릭 = 횡단 미리보기 · + Shift+클릭 = 두 점 사이 거리·기울기 · + 가운데(휠) 버튼 끌기 = 지도 이동 · 휠 = 확대 @@ -123,14 +138,13 @@ export async function openRouteEditModal( /** 사용자가 잡아 옮기는 **노드**(꺾임점). 서버가 이 노드로 폴리라인을 다시 만든다. */ let planned: Vertex[] = []; /** 노드마다의 반지름·내각·법정 위반 — 서버가 함께 내려 준다(표시용). */ - let nodeInfo: Array<{ - radius_m: number | null; - inner_angle_deg: number | null; - violations: string[]; - }> = []; + let nodeInfo: EditedNode[] = []; let minRadiusM = 0; + /** **못 넘는** 하한 — 0이면 제한 없음. 기본 반지름(`minRadiusM`)과 다른 값이다(계획서 0-9 ④). */ + let limitRadiusM = 0; + let limitArcM = 0; /** 서버가 준 곡선 성분 — 손잡이(곡선 시작·끝점)를 그리는 재료. 편집하면 비운다. */ - let curveInfo: RoutePlanCurve[] = []; + let curveInfo: EditedCurve[] = []; /** 꺾임점마다의 편집값 — 곡선을 둘지, 반지름을 못박을지(2026-09-07 사용자 지시). */ let curveOn: boolean[] = []; let curveRadius: Array = []; @@ -143,7 +157,40 @@ export async function openRouteEditModal( /** 되돌리기 사진첩 — 노선을 읽은 뒤에 선다(그전에는 되돌릴 것이 없다). */ let history: RouteEditHistory | null = null; let meta: VWorldMeta | null = null; - let sheets: PreparedLayer[] = []; + /** 바탕 등고선 한 벌 — LAS 것이거나 도엽 것. 고르기는 `_Contour` 몫. */ + let contours: RouteEditContours | null = null; + /** 등고선 말고 함께 깔 도엽 레이어(하천중심선). */ + let otherSheets: PreparedLayer[] = []; + /** 고른 등고선 가닥 — 없으면 -1(계획서 0-9 ⑦). */ + let pickedContour = -1; + /** 측점 횡단 미리보기 창 — 측점 눈금을 누르면 뜬다(계획서 0-9 ⑧). */ + const crossPreview = createCrossPreview({ + projectId, + bounds: () => canvas.getBoundingClientRect(), + request: () => ({ + vertices: planned.map(([x, y], index) => ({ + x, + y, + curve: curveOn[index] !== false, + radius_m: curveRadius[index] ?? null, + })), + min_radius_m: minRadiusM || 12, + station_interval_m: stationIntervalM, + }), + }); + /** 구간 재기 — Shift+클릭으로 두 점을 찍는다. 셈·서버 묻기는 `_Measure` 몫(계획서 0-9 ⑤). */ + const measure = createMeasureTool({ + projectId, + stationIntervalM, + line: () => (plannedLine.length ? plannedLine : planned), + // 아래에 선언된 것을 감싸 넘긴다 — 부르는 시점은 늘 그 뒤다. + toScreen: (vertex) => toScreen(vertex), + isClosed: () => closed, + onChange: () => { + status.textContent = `${routeHead()} — ${measure.hint()}`; + draw(); + }, + }); let view: ViewState = { width: 0, height: 0, @@ -159,6 +206,7 @@ export async function openRouteEditModal( window.removeEventListener("resize", resize); historyControls.dispose(); // 단축키는 창(window)에 달려 있어 안 떼면 닫힌 뒤에도 산다. curveLabelBox.destroy(); // 패널은 `document.body` 에 붙어 있어 스스로 안 사라진다. + crossPreview.destroy(); overlay.remove(); }; overlay.querySelector(".b05-routeedit__close")!.addEventListener("click", close); @@ -199,111 +247,40 @@ export async function openRouteEditModal( return [meta.x_min + (px - x0) / (sx || 1), meta.y_min + (py - y0) / (sy || 1)]; } - function strokePolyline(points: Vertex[], dash: number[], color: string, width: number): void { - if (points.length < 2) return; - context.save(); - context.setLineDash(dash); - context.strokeStyle = color; - context.lineWidth = width; - context.beginPath(); - points.forEach((vertex, index) => { - const [x, y] = toScreen(vertex); - if (index === 0) context.moveTo(x, y); - else context.lineTo(x, y); - }); - context.stroke(); - context.restore(); + /** 화면 1m 당 픽셀 — 측점 라벨 솎기 단계를 여기서 정한다. `metricToScreen` 이 선형이라 + * 100m 떨어진 두 점으로 잰다(1m 로 재면 반올림 오차가 그대로 비율에 실린다). */ + function pxPerMeter(): number { + if (!meta) return 1; + const [x0] = metricToScreen(meta, view, meta.x_min, meta.y_min); + const [x1] = metricToScreen(meta, view, meta.x_min + 100, meta.y_min); + return Math.abs(x1 - x0) / 100; } + /** 지금 화면에 낼 등고선 간격(m) — 그리기와 집기가 같은 값을 보게 한 자리에서 셈한다. */ + const contourStepM = (): number => + contours ? pickLevelStep(contours.layer, view, contours.intervalM) : 0; + function draw(): void { if (closed) return; - const style = getComputedStyle(document.documentElement); - context.clearRect(0, 0, view.width, view.height); - context.fillStyle = style.getPropertyValue("--color-surface") || "#111"; - context.fillRect(0, 0, view.width, view.height); - - context.save(); - // 등고선은 **노선 둘레 300m 안**에서만 그린다 — 노선과 상관없는 산줄기까지 다 그리면 - // 화면이 등고선으로 덮여 노선이 안 보인다(2026-09-07 사용자 지시 ⑥). - const band = meta - ? contourBandRect(plannedLine.length ? plannedLine : planned, toScreen, CONTOUR_BAND_M) - : null; - if (band) { - context.beginPath(); - context.rect(band.x, band.y, band.width, band.height); - context.clip(); - } - context.strokeStyle = style.getPropertyValue("--map-sheet-contour") || "#a5b4fc"; - context.lineWidth = 0.8; - for (const layer of sheets) drawPreparedLayer(context, layer, view, "dot"); - context.restore(); - - strokePolyline( + drawRouteEditScene(context, { + view, + toScreen, + pxPerMeter: pxPerMeter(), + hasMeta: meta !== null, + contours, + otherSheets, + pickedContour, + contourStepM: contourStepM(), + measure: measure.points(), expected, - [6, 5], - style.getPropertyValue("--color-text-secondary") || "#9ca3af", - 1.6, - ); - // 선은 **폴리라인**(원호 포함)을 그리고, 잡는 동그라미는 **노드**에만 찍는다. - // 노드를 옮기는 동안에는 폴리라인이 없으므로 노드를 곧바로 이어 미리 보인다. - strokePolyline( - plannedLine.length ? plannedLine : planned, - [], - style.getPropertyValue("--map-route") || "#f97316", - 2.4, - ); - - context.save(); - context.fillStyle = style.getPropertyValue("--map-route") || "#f97316"; - context.strokeStyle = style.getPropertyValue("--map-halo") || "rgba(255,255,255,0.9)"; - context.lineWidth = 1; - planned.forEach((vertex, index) => { - const [x, y] = toScreen(vertex); - // 법정 기준을 못 맞춘 자리는 붉게 — 막지는 않고 보이기만 한다(2026-09-06 사용자 확정). - const bad = (nodeInfo[index]?.violations?.length ?? 0) > 0; - context.fillStyle = bad - ? style.getPropertyValue("--color-danger") || "#dc2626" - : style.getPropertyValue("--map-route") || "#f97316"; - context.beginPath(); - context.arc(x, y, index === picked ? NODE_R + 2 : NODE_R, 0, Math.PI * 2); - context.fill(); - context.stroke(); - // 곡선을 지운 자리는 가운데를 비워 「여기는 곡선이 없다」를 보인다. - if (curveOn.length && !curveOn[index] && index > 0 && index < planned.length - 1) { - context.save(); - context.fillStyle = style.getPropertyValue("--map-halo") || "rgba(255,255,255,0.9)"; - context.beginPath(); - context.arc(x, y, NODE_R - 2, 0, Math.PI * 2); - context.fill(); - context.restore(); - } + plannedLine, + planned, + nodeInfo, + curveInfo, + curveOn, + picked, + stationIntervalM, }); - - // 곡선 시작·끝점 — 잡아서 직선 각도와 R 을 함께 바꾸는 손잡이(2026-09-07 사용자 지시). - // **속을 비우고 테두리를 굵게** 그린다 — 선·노드와 색이 같으면 눈에도 안 띄고 집기도 어렵다. - context.lineWidth = 2; - curveInfo.forEach((curve) => { - // **늘 보인다**(2026-09-07 사용자 지시) — 직선이 곡선에 닿는 자리는 손잡이이기 이전에 - // **읽을 정보**다. 한때 고른 곡선만 내보였더니 「표기가 다 사라졌다」는 지적을 받았다. - // 노드를 못 집던 문제는 집기 우선순위(노드가 먼저)로 따로 풀었으므로 다 내놓아도 된다. - const on = curveOn[curve.node_first] !== false; - if (!on) return; // 곡선을 지운 자리에는 접선점도 없다. - // 고른 곡선은 속을 채워 도드라지게 — 지금 끌 수 있는 것이 무엇인지 보이게. - const isPicked = curve.node_first === picked; - [curve.start, curve.end].forEach((point) => { - const [x, y] = toScreen([point[0], point[1]]); - context.beginPath(); - const size = isPicked ? CURVE_HANDLE_PX + 1 : CURVE_HANDLE_PX; - context.rect(x - size, y - size, size * 2, size * 2); - context.fillStyle = isPicked - ? style.getPropertyValue("--map-route") || "#f97316" - : style.getPropertyValue("--map-halo") || "rgba(255,255,255,0.95)"; - context.fill(); - context.strokeStyle = style.getPropertyValue("--map-route") || "#f97316"; - context.stroke(); - }); - }); - context.restore(); // 라벨은 **그린 뒤** 자리를 맞춘다 — 확대·이동·창 크기가 바뀌어도 고른 노드에 붙어 있게. syncCurveBar(); } @@ -346,12 +323,27 @@ export async function openRouteEditModal( function markEdited(): void { // 길이를 붙든 자리는 교각이 바뀌었을 수 있다 — 그리기 전에 R 부터 다시 잡는다. applyArcLocks(planned, curveLock, curveArc, curveRadius); + // 지정해 둔 값이 하한을 밑돌면 하한까지 끌어올린다(계획서 0-9 ④). + applyCurveLimits(planned, curveOn, curveRadius, limitRadiusM, limitArcM); const built = buildEditedPolyline(planned, curveOn, curveRadius, minRadiusM); plannedLine = built.vertices; curveInfo = built.curves; nodeInfo = built.nodes; } + /** 상태줄 머리 — 지금 그려진 계획노선 길이와 노드 수(계획서 0-9 ①). 원호가 정점으로 + * 펴져 있어 브라우저에서 바로 잴 수 있다 — 서버에 묻지 않는다. */ + const routeHead = (): string => + `길이 ${polylineLengthM(plannedLine.length ? plannedLine : planned).toFixed(1)}m · ` + + `노드 ${planned.length}개`; + + /** 고른 등고선의 높이 — 못 읽었으면 높이 없이 「고른 등고선」만(계획서 0-9 ⑦). */ + const contourHint = (): string => { + if (pickedContour < 0) return "등고선을 누르면 그 줄의 높이가 보입니다."; + const level = contours?.layer.features[pickedContour]?.labelValue ?? null; + return level === null ? "등고선 한 줄을 골랐습니다." : `고른 등고선 ${level}m.`; + }; + /** 상태줄 꼬리 — 셈은 `_Edits` 몫. */ const curveHint = (): string => curveSummary({ @@ -365,84 +357,32 @@ export async function openRouteEditModal( fresh: nodeInfo.length === 0, }); - // ── 곡선 라벨 — 고른 꺾임점 옆(곡선 중심 반대쪽)에 뜬다. 그리기는 `_Label` 몫 ── - const curveLabelBox = createCurveLabel({ - onRadius: (value) => { - if (picked < 0) return; - curveRadius[picked] = value; - // 반지름만 바꾼 것이라 노드 자리는 그대로지만, 그려진 선은 낡았다. - applyEdit(value === null ? "반지름을 자동으로 되돌렸습니다." : "반지름을 바꿨습니다."); - }, - onArcLength: (value) => { - if (picked < 0) return; - // 곡선 길이 L 과 반지름 R 은 L = R·Δ 로 묶여 있다(Δ = 교각, 앞뒤 직선이 정함). - // 그래서 길이를 받으면 반지름으로 바꿔 **한 값만** 들고 간다 — 두 벌로 두면 어긋난다. - const deflection = deflectionRad(nodeInfo[picked]?.inner_angle_deg); - curveArc[picked] = value; - curveRadius[picked] = value !== null && deflection > 1e-9 ? value / deflection : null; - applyEdit(value === null ? "반지름을 자동으로 되돌렸습니다." : "곡선 길이를 바꿨습니다."); - }, - onLock: (lock) => { - if (picked < 0) return; - curveLock[picked] = lock; - const deflection = deflectionRad(nodeInfo[picked]?.inner_angle_deg); - const shown = curveRadius[picked] ?? nodeInfo[picked]?.radius_m ?? null; - // 길이를 붙들려면 지금 길이를 적어 둬야 한다 — 뒤에 교각이 바뀌면 이 값으로 R 을 다시 잡는다. - if (lock === "arc") { - curveArc[picked] = shown !== null && deflection > 1e-9 ? shown * deflection : null; - } - // R 을 붙들 때 칸이 비어 있으면 지금 그려진 R 을 적어 둔다(자동 상태를 그대로 못 박음). - if (lock === "radius" && curveRadius[picked] === null) curveRadius[picked] = shown; - applyEdit( - lock === "radius" - ? "반지름을 고정했습니다." - : lock === "arc" - ? "곡선 길이를 고정했습니다." - : "고정을 풀었습니다.", - ); - }, - onCurveOn: (on) => { - if (picked < 0) return; - curveOn[picked] = on; - applyEdit(on ? "곡선을 넣었습니다." : "곡선을 지웠습니다."); - }, + // ── 곡선 라벨 — 고른 꺾임점 옆에 뜨는 조작 패널. 배선은 `_CurveBar` 몫 ── + const curveBar = createCurveBar({ + canvas, + state: () => ({ + picked, + planned, + nodeInfo, + curveInfo, + curveOn, + curveRadius, + curveLock, + curveArc, + limitRadiusM, + limitArcM, + }), + toScreen: (vertex) => toScreen(vertex), + applyEdit: (message) => applyEdit(message), }); - - /** 고른 자리에 맞춰 라벨을 옮겨 그린다. 끝점은 곡선이 없으므로 라벨을 숨긴다. */ - function syncCurveBar(): void { - if (!(picked > 0 && picked < planned.length - 1)) { - curveLabelBox.hide(); - return; - } - const pickedCurve = curveInfo.find((entry) => entry.node_first === picked); - const shown = curveRadius[picked] ?? pickedCurve?.radius_m ?? null; - const deflection = deflectionRad(nodeInfo[picked]?.inner_angle_deg); - const rect = canvas.getBoundingClientRect(); - const [screenX, screenY] = toScreen(planned[picked]); - curveLabelBox.show({ - seat: picked, - // 패널은 `position: fixed` 라 **화면 좌표**로 넘긴다 — 모달 밖으로 넘어가도 안 잘린다. - at: [screenX + rect.left, screenY + rect.top], - centerDirection: pickedCurve - ? centerDirectionOf( - toScreen([pickedCurve.apex[0], pickedCurve.apex[1]]), - toScreen(pickedCurve.start), - toScreen(pickedCurve.end), - ) - : null, - curveOn: curveOn[picked] !== false, - radiusShown: shown, - arcLengthShown: shown === null || deflection <= 1e-9 ? null : shown * deflection, - lock: curveLock[picked] ?? null, - innerAngleDeg: nodeInfo[picked]?.inner_angle_deg ?? null, - }); - } + const curveLabelBox = curveBar.label; + const syncCurveBar = curveBar.sync; /** 한 번의 편집을 마무리한다 — 다시 그리고, 라벨·상태줄을 맞추고, 되돌리기에 쌓는다. */ function applyEdit(message: string, record = true): void { markEdited(); syncCurveBar(); - status.textContent = `노드 ${planned.length}개 — ${message} ${curveHint()}`; + status.textContent = `${routeHead()} — ${message} ${curveHint()}`; draw(); if (record) history?.commit(snapshotNow()); historyControls.sync(); @@ -481,6 +421,11 @@ export async function openRouteEditModal( const rect = canvas.getBoundingClientRect(); const px = event.clientX - rect.left; const py = event.clientY - rect.top; + if (event.shiftKey) { + // 구간 재기가 먼저다 — 노드 위에서도 재려는 뜻으로 본다(계획서 0-9 ⑤). + void measure.pick(px, py); + return; + } // **노드가 손잡이보다 먼저다**(2026-09-07 사용자 지적 ④). 반대로 두었더니 헤어핀처럼 // 곡선이 몰린 데서는 손잡이가 늘 먼저 잡혀 **노드를 아예 못 집었다**(실화면에서 격자로 // 훑어 보니 잡히는 것이 전부 손잡이였음). 손잡이는 고른 곡선에만 나오므로 겹침도 적다. @@ -495,6 +440,32 @@ export async function openRouteEditModal( picked = dragHandle.node; syncCurveBar(); draw(); + } else if ( + // 측점 눈금을 누르면 그 측점 횡단을 따로 띄운다(계획서 0-9 ⑧). 노드·손잡이 다음이다. + (() => { + const chainage = stationAtScreen( + plannedLine.length ? plannedLine : planned, + toScreen, + stationIntervalM, + px, + py, + STATION_HIT_PX, + ); + if (chainage === null) return false; + void crossPreview.open(chainage); + return true; + })() + ) { + /* 횡단 창이 떴다 — 더 집지 않는다. */ + } else if (contours) { + // 노드도 손잡이도 아니면 **등고선**을 집는다 — 노선 편집이 늘 먼저다(계획서 0-9 ⑦). + // 빈 자리를 누르면 -1 이 되어 고른 것이 풀린다. + const hit = hitPreparedLayer(contours.layer, view, px, py, CONTOUR_HIT_PX, contourStepM()); + if (hit !== pickedContour) { + pickedContour = hit; + status.textContent = `${routeHead()} — ${contourHint()} ${curveHint()}`; + draw(); + } } canvas.setPointerCapture(event.pointerId); }); @@ -509,7 +480,8 @@ export async function openRouteEditModal( const moved = dragHandleTo(node, dragHandle.end, toMetric(px, py)); if (moved) { planned[node] = moved.apex; - curveRadius[node] = Math.round(moved.radius * 100) / 100; + // 손으로 끌어도 하한 아래로는 안 내려간다 — 거기서 멈춘다(계획서 0-9 ④). + curveRadius[node] = Math.max(limitRadiusM, Math.round(moved.radius * 100) / 100); curveOn[node] = true; picked = node; // 손잡이 자리는 다시 셈한 곡선에서 나온다 — 접선 자리가 모자라 R 이 눌리면 손이 @@ -517,18 +489,32 @@ export async function openRouteEditModal( dragMoved = true; markEdited(); syncCurveBar(); - status.textContent = `노드 ${planned.length}개 — 곡선을 잡는 중. ${curveHint()}`; + status.textContent = `${routeHead()} — 곡선을 잡는 중. ${curveHint()}`; draw(); } return; } if (dragNode >= 0) { + // 옮기기 **전**에 하한을 지키던 자리 — 이미 밑돌던 자리는 그대로 고칠 수 있어야 하므로 + // **지키던 자리가 넘어가는 것만** 막는다(계획서 0-9 ④). + const before = curveShortfalls(nodeInfo, limitRadiusM, limitArcM); + const previous = planned[dragNode]; dragMoved = true; planned[dragNode] = toMetric(px, py); markEdited(); // 곡선을 그 자리에서 다시 그린다 — 나머지 곡선은 그대로 남는다. + if (shortfallCrossed(before, curveShortfalls(nodeInfo, limitRadiusM, limitArcM))) { + // 접선 자리가 모자라 R 이 하한 아래로 눌리는 자리다 — 그 걸음만 되돌린다. + planned[dragNode] = previous; + markEdited(); + status.textContent = + `${routeHead()} — 하한에 걸려 더 못 옮깁니다` + + `(곡선반지름 ${limitRadiusM}m${limitArcM > 0 ? ` · 곡선 길이 ${limitArcM}m` : ""}).`; + draw(); + return; + } // 끄는 동안에도 상태줄이 살아 있어야 한다 — 예전에는 여기서 아무 말이 없어 // 「곡선이 사라졌다」는 인상만 남았다(2026-09-07 사용자 지적 ②). - status.textContent = `노드 ${planned.length}개 — 옮기는 중. ${curveHint()}`; + status.textContent = `${routeHead()} — 옮기는 중. ${curveHint()}`; draw(); return; } @@ -595,54 +581,13 @@ export async function openRouteEditModal( draw, }); - async function runHeavy(label: string, task: () => Promise): Promise { - busy.hidden = false; - // ⚠ 「몇 분」은 옛 값이었다 — 0-11 로 **약 90초**가 됐다(2026-09-09 실측 네 번: - // 87.3 · 90.0 · 93.9 · 95.4초). 중간 취소를 안 만드는 대신, **얼마나 지났는지**를 - // 보여 사람이 멈춘 것인지 도는 것인지 알 수 있게 한다(계획서 0-2). - const message = busy.querySelector("span")!; - const started = Date.now(); - const tick = (): void => { - const seconds = Math.round((Date.now() - started) / 1000); - message.textContent = `${label} — 배수유역부터 다시 계산 중입니다. 1분 반쯤 걸립니다 (${seconds}초 지남).`; - }; - tick(); - const timer = window.setInterval(tick, 1000); - try { - await task(); - // 노선이 바뀌면 세션 초안·조회 캐시는 옛 노선 것이라 남기지 않는다(PLAN 0-7 확정 5). - clearDrafts(projectId); - clearResults(projectId); - showToast("노선을 다시 계산했습니다.", "success"); - close(); - await onApplied(); - } catch (error) { - busy.hidden = true; - showToast(error instanceof Error ? error.message : "노선 재계산에 실패했습니다.", "error"); - } finally { - window.clearInterval(timer); // 성공·실패·닫힘 어느 쪽이든 멈춘다 - } - } - - overlay.querySelector('[data-act="apply"]')!.addEventListener("click", () => { - if (planned.length < 2) { - showToast("노선은 노드가 2개 이상이어야 합니다.", "error"); - return; - } - void runHeavy("계획노선 반영", () => - replanRoute( - projectId, - planned.map(([x, y], index) => ({ - x, - y, - curve: curveOn[index] !== false, - radius_m: curveRadius[index] ?? null, - })), - ), - ); - }); - overlay.querySelector('[data-act="reset"]')!.addEventListener("click", () => { - void runHeavy("예상노선으로 되돌리기", () => resetRoutePlan(projectId)); + bindRouteApply({ + overlay, + busy, + projectId, + nodes: () => ({ planned, curveOn, curveRadius }), + close, + onApplied, }); // ── 자료 읽기 — 노선 두 벌 + 등고선 도엽(배수유역도와 같은 것) ── @@ -658,6 +603,8 @@ export async function openRouteEditModal( // (2026-09-06 사용자 지시: 노드를 제어해 계획노선을 고친다). const nodes = plan.nodes ?? []; minRadiusM = plan.min_radius_m ?? 0; + limitRadiusM = plan.limit_radius_m ?? 0; + limitArcM = plan.limit_curve_length_m ?? 0; // 곡선 성분을 편집할 수 있는 꼴로 편다 — 셈은 `_Edits` 몫(까닭도 그쪽에 적었다). const flat = flattenServerPlan(nodes, plan.curves ?? []); planned = flat.planned; @@ -675,9 +622,23 @@ export async function openRouteEditModal( if (!planned.length) planned = plannedLine.map((vertex) => [vertex[0], vertex[1]]); meta = drainage.meta; const normalizer = createNormalizer(drainage.meta); - sheets = drainage.layers + // 등고선은 따로 고른다(LAS 우선). 나머지 도엽 레이어(하천중심선)만 배경으로 깐다. + otherSheets = drainage.layers + .filter(([layer]) => layer !== "도엽_등고선") .map(([, collection]) => (collection ? prepareLayer(collection, normalizer) : null)) .filter((layer): layer is PreparedLayer => layer !== null); + contours = await loadRouteEditContours( + projectId, + drainage.meta, + normalizer, + drainage.layers.find(([layer]) => layer === "도엽_등고선")?.[1] ?? null, + { + surfaceModelId: options.surfaceModelId ?? null, + intervalM: options.contourIntervalM ?? 1, + smooth: options.smooth ?? false, + }, + ); + if (closed) return; resize(); const xs = planned.map((vertex) => vertex[0]); const ys = planned.map((vertex) => vertex[1]); @@ -694,7 +655,8 @@ export async function openRouteEditModal( ); view = { ...view, ...fitted }; status.textContent = - `노드 ${planned.length}개 · ${plan.edited ? "고친 계획노선" : "초기 폴리라인"} · ` + + `${routeHead()} · ${plan.edited ? "고친 계획노선" : "초기 폴리라인"} · ` + + `${contours?.source === "las" ? "LAS 등고선" : "도엽 등고선"} · ` + curveHint(); draw(); } catch (error) { diff --git a/B05_Profile/B05_Profile_UI_RouteEdit_Apply.ts b/B05_Profile/B05_Profile_UI_RouteEdit_Apply.ts new file mode 100644 index 00000000..853cb56d --- /dev/null +++ b/B05_Profile/B05_Profile_UI_RouteEdit_Apply.ts @@ -0,0 +1,81 @@ +/* ============================================================================= + * B05_Profile_UI_RouteEdit_Apply.ts + * 계획노선 편집 모달의 **[확인]·[예상노선으로]** — 무거운 재계산과 대기 표시. + * + * 누르면 서버가 배수유역부터 종·횡단·유토곡선까지 전 단계를 다시 돈다(약 90초). 중간 취소는 + * 만들지 않기로 했으므로(계획서 0-2, 2026-09-09) **얼마나 지났는지**를 초로 보여 사람이 + * 멈춘 것인지 도는 것인지 알 수 있게 한다. + * ========================================================================== */ + +import { clearDrafts, clearResults } from "../A00_Common/b_page_state"; +import { showToast } from "@ui/ui_template_elements"; +import { replanRoute, resetRoutePlan } from "./B05_Profile_Api_Replan"; + +type Vertex = [number, number]; + +export interface RouteApplyParams { + overlay: HTMLElement; + /** 화면 전체를 덮는 대기 막. 안에 `` 한 개가 글을 받는다. */ + busy: HTMLElement; + projectId: string; + /** 지금 편집값 — 누른 순간에 읽는다. */ + nodes: () => { planned: Vertex[]; curveOn: boolean[]; curveRadius: Array }; + /** 성공하면 모달을 닫고 화면을 다시 읽는다. */ + close: () => void; + onApplied: () => void | Promise; +} + +/** [확인]·[예상노선으로]를 붙인다. 리스너는 모달과 수명이 같다. */ +export function bindRouteApply(params: RouteApplyParams): void { + const { overlay, busy, projectId } = params; + + async function runHeavy(label: string, task: () => Promise): Promise { + busy.hidden = false; + // ⚠ 「몇 분」은 옛 값이었다 — 0-11 로 **약 90초**가 됐다(2026-09-09 실측 네 번: + // 87.3 · 90.0 · 93.9 · 95.4초). + const message = busy.querySelector("span")!; + const started = Date.now(); + const tick = (): void => { + const seconds = Math.round((Date.now() - started) / 1000); + message.textContent = `${label} — 배수유역부터 다시 계산 중입니다. 1분 반쯤 걸립니다 (${seconds}초 지남).`; + }; + tick(); + const timer = window.setInterval(tick, 1000); + try { + await task(); + // 노선이 바뀌면 세션 초안·조회 캐시는 옛 노선 것이라 남기지 않는다(PLAN 0-7 확정 5). + clearDrafts(projectId); + clearResults(projectId); + showToast("노선을 다시 계산했습니다.", "success"); + params.close(); + await params.onApplied(); + } catch (error) { + busy.hidden = true; + showToast(error instanceof Error ? error.message : "노선 재계산에 실패했습니다.", "error"); + } finally { + window.clearInterval(timer); // 성공·실패·닫힘 어느 쪽이든 멈춘다 + } + } + + overlay.querySelector('[data-act="apply"]')!.addEventListener("click", () => { + const { planned, curveOn, curveRadius } = params.nodes(); + if (planned.length < 2) { + showToast("노선은 노드가 2개 이상이어야 합니다.", "error"); + return; + } + void runHeavy("계획노선 반영", () => + replanRoute( + projectId, + planned.map(([x, y], index) => ({ + x, + y, + curve: curveOn[index] !== false, + radius_m: curveRadius[index] ?? null, + })), + ), + ); + }); + overlay.querySelector('[data-act="reset"]')!.addEventListener("click", () => { + void runHeavy("예상노선으로 되돌리기", () => resetRoutePlan(projectId)); + }); +} diff --git a/B05_Profile/B05_Profile_UI_RouteEdit_Contour.ts b/B05_Profile/B05_Profile_UI_RouteEdit_Contour.ts new file mode 100644 index 00000000..d5050907 --- /dev/null +++ b/B05_Profile/B05_Profile_UI_RouteEdit_Contour.ts @@ -0,0 +1,97 @@ +/* ============================================================================= + * B05_Profile_UI_RouteEdit_Contour.ts + * 계획노선 편집 모달이 바탕에 깔 **등고선 한 벌**을 고른다. + * + * **어느 등고선을 쓰나**(2026-09-12 사용자 지시 ⑥) — 도엽 등고선과 LAS 로 만든 등고선은 + * 서로 어긋난다. 노선은 실제 지형 위에 놓여야 하므로 **확정 지표면 모델이 있으면 LAS 쪽**을 + * 쓰고, 없는 프로젝트에서만 지금까지처럼 도엽 등고선을 쓴다. + * + * 둘은 생김새가 다르다 — 도엽은 위경도 GeoJSON(표고는 `등고수치` 속성), LAS 는 사업지 + * 좌표(m) 점렬(표고는 `level`)이다. 여기서 **같은 `PreparedLayer` 한 꼴로 맞춰** 내보내 + * 그리기·라벨·집기가 출처를 안 가리게 한다. + * ========================================================================== */ + +import { API_BASE_URL } from "@config/config_frontend"; +import { fetchCachedJson } from "../A00_Common/b_asset_cache"; +import { + type GeoJsonCollection, + type Normalizer, + type PreparedLayer, +} from "../B04_PreProcess/B04_PreProcess_UI_MapRender"; +import { + prepareLayer, + prepareMetricPolylines, +} from "../B04_PreProcess/B04_PreProcess_UI_MapRender_Prepare"; +import type { VWorldMeta } from "../B04_PreProcess/B04_PreProcess_Api_Fetch"; + +/** 도엽 등고선의 표고 속성 이름 — B04 지도가 쓰는 것과 같은 키. */ +const SHEET_ELEVATION_KEYS = ["등고수치"]; +/** 표고를 못 읽었을 때 라벨 솎기에 쓸 간격(m). */ +const FALLBACK_INTERVAL_M = 5; + +export interface RouteEditContours { + layer: PreparedLayer; + /** 등고선 간격(m) — 라벨을 몇 줄마다 낼지 정하는 기준. */ + intervalM: number; + source: "las" | "sheet"; +} + +interface ContourResponse { + contours: Array<{ level: number; coordinates: Array<[number, number, number]> }>; +} + +/** + * 바탕 등고선을 읽는다. 확정 지표면 모델이 있으면 LAS, 없으면 이미 받아 둔 도엽 컬렉션. + * + * LAS 쪽을 못 읽으면 **조용히 도엽으로 내려앉는다** — 등고선이 아예 없는 화면보다 낫고, + * 어느 쪽을 쓰고 있는지는 `source` 로 나가 상태줄에 적힌다. + */ +export async function loadRouteEditContours( + projectId: string, + meta: VWorldMeta, + normalizer: Normalizer, + sheet: GeoJsonCollection | null, + options: { surfaceModelId: number | null; intervalM: number; smooth: boolean }, +): Promise { + if (options.surfaceModelId !== null) { + const interval = options.intervalM > 0 ? options.intervalM : 1; + try { + // 3D 뷰어가 쓰는 것과 **같은 파일**이다 — 보관함에 있으면 다시 내려받지 않는다. + const data = await fetchCachedJson( + projectId, + `${API_BASE_URL}/projects/${projectId}/surface/models/${options.surfaceModelId}` + + `/contour?interval=${interval}&smooth=${options.smooth}`, + ); + const lines = (data.contours ?? []) + .map((contour) => ({ + points: contour.coordinates.map(([x, y]) => [x, y] as const), + label: contour.level, + })) + .filter((line) => line.points.length >= 2); + if (lines.length > 0) { + return { layer: prepareMetricPolylines(lines, meta), intervalM: interval, source: "las" }; + } + } catch { + /* 내려앉는다 — 아래 도엽 갈래로 이어 간다. */ + } + } + const layer = prepareLayer(sheet ?? undefined, normalizer, SHEET_ELEVATION_KEYS); + return { layer, intervalM: inferIntervalM(layer), source: "sheet" }; +} + +/** 도엽 등고선의 간격(m) — 표고 값들의 **가장 좁은 칸**을 간격으로 본다. */ +function inferIntervalM(layer: PreparedLayer): number { + const levels = [ + ...new Set( + layer.features + .map((feature) => feature.labelValue) + .filter((value): value is number => value !== null), + ), + ].sort((a, b) => a - b); + let smallest = Infinity; + for (let index = 1; index < levels.length; index += 1) { + const gap = levels[index] - levels[index - 1]; + if (gap > 0 && gap < smallest) smallest = gap; + } + return Number.isFinite(smallest) ? smallest : FALLBACK_INTERVAL_M; +} diff --git a/B05_Profile/B05_Profile_UI_RouteEdit_Cross.ts b/B05_Profile/B05_Profile_UI_RouteEdit_Cross.ts new file mode 100644 index 00000000..7d8b47ad --- /dev/null +++ b/B05_Profile/B05_Profile_UI_RouteEdit_Cross.ts @@ -0,0 +1,234 @@ +/* ============================================================================= + * B05_Profile_UI_RouteEdit_Cross.ts + * 계획노선 편집 중 **한 측점의 횡단 미리보기** — 따로 뜨는 작은 창(계획서 0-9 ⑧). + * + * 보이는 것은 셋뿐이다(2026-09-12 사용자 확정) — **원지반 횡단선 · 기본 계획 횡단선 · + * 계획 횡단의 성토사면 길이**. 구조물은 그리지 않는다. + * + * ⚠ **계획고는 편집 중에 없다** — [확인] 뒤 전 체인이 낳는 값이다. 그래서 서버가 그 측점의 + * 지반고를 그대로 계획고로 놓고(지반 추종) 사면만 세운 「기본 계획 횡단」을 낸다. 확정 뒤의 + * 횡단과 다를 수 있고, 창 머리에 그렇게 적어 둔다. + * + * 셈은 **B05·B06 정본을 그대로 재사용**한다 — 측점·지반 샘플은 `generate_sections`, 설계선은 + * `compute_cross_design`(서버), 성토사면 길이는 B06 화면이 쓰는 `fillSlopeLengths`(여기). + * ========================================================================== */ + +import type { CrossSection } from "./../B06_Section/B06_Section_Api_Fetch"; +import { fillSlopeLengths } from "./../B06_Section/B06_Section_UI_Cross_Fit"; +import { fetchCrossPreview, type CrossPreviewResponse } from "./B05_Profile_Api_Replan"; + +/** 그림 가장자리 여백(px). */ +const PAD = 28; + +export interface CrossPreviewParams { + projectId: string; + /** 창을 처음 띄울 테두리(화면 좌표) — 보통 모달의 지도 칸. */ + bounds: () => DOMRect; + /** 지금 편집값 — 누른 순간에 읽어 서버로 보낸다. */ + request: () => { + vertices: Array<{ x: number; y: number; curve: boolean; radius_m: number | null }>; + min_radius_m: number; + station_interval_m: number; + }; +} + +export interface CrossPreviewWindow { + /** 그 측점의 횡단을 띄운다. 이미 떠 있으면 내용만 갈아 끼운다. */ + open: (chainageM: number) => Promise; + /** 모달을 닫을 때 — 몸통이 `document.body` 에 붙어 있어 스스로 안 사라진다. */ + destroy: () => void; +} + +export function createCrossPreview(params: CrossPreviewParams): CrossPreviewWindow { + const root = document.createElement("div"); + root.className = "b05-routeedit__cross"; + root.hidden = true; + root.innerHTML = ` +
+ 횡단 미리보기 + +
+ +
`; + document.body.append(root); + + const head = root.querySelector(".b05-routeedit__cross-head")!; + const title = root.querySelector(".b05-routeedit__cross-title")!; + const foot = root.querySelector(".b05-routeedit__cross-foot")!; + const canvas = root.querySelector(".b05-routeedit__cross-canvas")!; + const context = canvas.getContext("2d")!; + + root.querySelector(".b05-routeedit__cross-close")!.addEventListener("click", () => { + root.hidden = true; + }); + // 창 위에서 누른 것이 지도로 새어 나가면 노드가 딸려 움직인다. + for (const type of ["pointerdown", "dblclick", "contextmenu", "wheel"] as const) { + root.addEventListener(type, (event) => event.stopPropagation()); + } + + // ── 머리를 잡아 옮기기 — 노선을 가리면 손으로 치울 수 있어야 한다 ── + let dragFrom: { x: number; y: number; left: number; top: number } | null = null; + head.addEventListener("pointerdown", (event) => { + if ((event.target as HTMLElement).closest("button")) return; + dragFrom = { x: event.clientX, y: event.clientY, left: root.offsetLeft, top: root.offsetTop }; + head.setPointerCapture(event.pointerId); + event.preventDefault(); + }); + head.addEventListener("pointermove", (event) => { + if (!dragFrom) return; + root.style.left = `${Math.round(dragFrom.left + event.clientX - dragFrom.x)}px`; + root.style.top = `${Math.round(dragFrom.top + event.clientY - dragFrom.y)}px`; + }); + const stopDrag = (event: PointerEvent): void => { + if (head.hasPointerCapture(event.pointerId)) head.releasePointerCapture(event.pointerId); + dragFrom = null; + }; + head.addEventListener("pointerup", stopDrag); + head.addEventListener("pointercancel", stopDrag); + + /** 이번에 물은 측점 — 늦게 온 응답을 옛 자리에 적지 않으려고 들고 있는다. */ + let asked = -1; + + return { + async open(chainageM) { + asked = chainageM; + root.hidden = false; + if (!root.style.left) { + // 처음 열 때만 자리를 잡는다 — 그 뒤에는 사용자가 옮긴 자리를 지킨다. + // 지도 칸 **오른쪽 아래**에 붙인다 — 모달 머리·하단 정보행을 가리지 않는 자리다. + const box = params.bounds(); + root.style.left = `${Math.round(box.right - root.offsetWidth - 16)}px`; + root.style.top = `${Math.round(box.bottom - root.offsetHeight - 16)}px`; + } + title.textContent = "횡단 미리보기 — 읽는 중…"; + foot.textContent = ""; + context.clearRect(0, 0, canvas.width, canvas.height); + let preview: CrossPreviewResponse; + try { + preview = await fetchCrossPreview(params.projectId, { + ...params.request(), + chainage_m: chainageM, + }); + } catch (error) { + if (asked !== chainageM) return; + title.textContent = "횡단 미리보기"; + foot.textContent = error instanceof Error ? error.message : "횡단을 읽지 못했습니다."; + return; + } + if (asked !== chainageM || root.hidden) return; + title.textContent = `횡단 미리보기 — ${preview.label ?? `${preview.chainage_m}m`}`; + drawCross(context, canvas, preview); + foot.textContent = summarize(preview); + }, + destroy() { + root.remove(); + }, + }; +} + +/** 성토사면 길이·절성토 면적 한 줄. 계획고가 없다는 것도 여기 적는다. */ +function summarize(preview: CrossPreviewResponse): string { + const design = preview.design; + if (!design) return "계획고를 못 세워 계획 횡단을 그리지 못했습니다."; + // 성토사면 길이는 **B06 화면이 쓰는 그 함수**를 그대로 부른다 — 두 화면이 다른 길이를 + // 말하면 안 된다. 필요한 것은 `samples` 와 `design` 둘뿐이라 그만 담아 넘긴다. + const lengths = fillSlopeLengths({ + samples: preview.samples, + design, + } as unknown as CrossSection); + const sides = (["left", "right"] as const) + .filter((side) => lengths[side] !== null) + .map((side) => { + const value = lengths[side]!; + const label = side === "left" ? "좌" : "우"; + // 계산 반폭 안에서 원지반을 못 만난 사면은 거기까지만 잰 하한값이라 「≥」로 구분한다. + return `${label} ${value.open ? "≥" : ""}${value.lengthM.toFixed(2)}m`; + }); + const slope = sides.length ? `성토사면 ${sides.join(" · ")}` : "성토측 없음"; + return ( + `${slope} · 절토 ${design.cut_area_m2.toFixed(2)}㎡ · 성토 ${design.fill_area_m2.toFixed(2)}㎡` + + " · 계획고는 [확인] 뒤에 정해지므로 지반을 따라 세운 기본 계획임" + ); +} + +/** 원지반선과 기본 계획 횡단선을 한 판에 그린다. 좌(+)가 왼쪽에 오게 눕힌다. */ +function drawCross( + context: CanvasRenderingContext2D, + canvas: HTMLCanvasElement, + preview: CrossPreviewResponse, +): void { + const ground = preview.samples + .filter((sample) => sample.valid && sample.elevation_m !== null) + .map((sample) => [Number(sample.offset_m), Number(sample.elevation_m)] as [number, number]); + const design = (preview.design?.design_line ?? []).map( + (point) => [point.offset_m, point.elevation_m] as [number, number], + ); + const all = [...ground, ...design]; + context.clearRect(0, 0, canvas.width, canvas.height); + if (all.length < 2) return; + + const offsets = all.map((point) => point[0]); + const heights = all.map((point) => point[1]); + const minOffset = Math.min(...offsets); + const maxOffset = Math.max(...offsets); + const minZ = Math.min(...heights); + const maxZ = Math.max(...heights); + const spanX = maxOffset - minOffset || 1; + const spanZ = maxZ - minZ || 1; + // **가로·세로를 같은 배율로** 둔다 — 따로 늘리면 사면 기울기가 거짓으로 보인다. 횡단도는 + // 기울기를 눈으로 읽는 그림이라 왜곡하면 안 된다(2026-09-12 실화면: 노면이 안 보였다). + const scale = Math.min((canvas.width - PAD * 2) / spanX, (canvas.height - PAD * 2) / spanZ); + const centerOffset = (minOffset + maxOffset) / 2; + const centerZ = (minZ + maxZ) / 2; + // 좌(+offset)가 화면 왼쪽 — 횡단도 규약(generate_sections cad_exchange)과 같은 방향이다. + const toScreen = (point: [number, number]): [number, number] => [ + canvas.width / 2 + (centerOffset - point[0]) * scale, + canvas.height / 2 + (centerZ - point[1]) * scale, + ]; + + const stroke = (points: Array<[number, number]>, color: string, width: number): void => { + if (points.length < 2) return; + context.beginPath(); + points.forEach((point, index) => { + const [x, y] = toScreen(point); + if (index === 0) context.moveTo(x, y); + else context.lineTo(x, y); + }); + context.strokeStyle = color; + context.lineWidth = width; + context.stroke(); + }; + + // 중심선 — 어디가 노선 가운데인지 먼저 보이게. + const [centerX] = toScreen([0, centerZ]); + context.save(); + context.setLineDash([4, 4]); + context.strokeStyle = "rgba(148,163,184,0.7)"; + context.lineWidth = 1; + context.beginPath(); + context.moveTo(centerX, PAD / 2); + context.lineTo(centerX, canvas.height - PAD / 2); + context.stroke(); + context.restore(); + + stroke(ground, "#94a3b8", 1.6); // 원지반 + stroke(design, "#f97316", 2.2); // 기본 계획 횡단 + + context.font = "11px system-ui, sans-serif"; + context.textBaseline = "top"; + context.fillStyle = "#94a3b8"; + context.textAlign = "left"; + context.fillText("원지반", PAD, 6); + context.fillStyle = "#f97316"; + context.textAlign = "right"; + context.fillText("기본 계획 횡단", canvas.width - PAD, 6); + context.fillStyle = "#94a3b8"; + context.textAlign = "center"; + context.textBaseline = "bottom"; + context.fillText( + `좌 ${maxOffset.toFixed(0)}m ← 중심 → 우 ${Math.abs(minOffset).toFixed(0)}m` + + ` · 표고 ${minZ.toFixed(1)}~${maxZ.toFixed(1)}m`, + canvas.width / 2, + canvas.height - 4, + ); +} diff --git a/B05_Profile/B05_Profile_UI_RouteEdit_CurveBar.ts b/B05_Profile/B05_Profile_UI_RouteEdit_CurveBar.ts new file mode 100644 index 00000000..97f404c0 --- /dev/null +++ b/B05_Profile/B05_Profile_UI_RouteEdit_CurveBar.ts @@ -0,0 +1,152 @@ +/* ============================================================================= + * B05_Profile_UI_RouteEdit_CurveBar.ts + * 곡선 조작 패널의 **배선** — 어느 꺾임점을 만질지 정하고, 칸에서 들어온 값을 편집값에 + * 옮겨 적는다. 패널을 그리고 자리를 잡는 일은 `_Label` 몫이다. + * + * `B05_Profile_UI_RouteEdit.ts` 가 700줄을 넘겨 떼어낸 조각이다(2026-09-12). 본문 로직과 + * 수치는 그대로이고, 모달 클로저가 쥐고 있던 값만 `state()` 로 받는다. + * + * **R 과 곡선 길이는 한 쌍**(L = R·Δ) — 어느 쪽으로 들어와도 **반지름 한 값**으로 바꿔 + * 들고 간다. 두 벌로 두면 교각이 바뀔 때 서로 어긋난다(`_Edits.ts` 설명 참고). + * ========================================================================== */ + +import type { EditedCurve, EditedNode, Vertex } from "./B05_Profile_UI_RouteEdit_Curve"; +import type { CurveLock } from "./B05_Profile_UI_RouteEdit_Edits"; +import { + centerDirectionOf, + createCurveLabel, + deflectionRad, + type CurveLabel, +} from "./B05_Profile_UI_RouteEdit_Label"; + +/** 패널이 만지는 편집값 한 벌 — 모달이 쥔 배열을 그대로 건네받는다. */ +export interface CurveBarState { + picked: number; + planned: Vertex[]; + nodeInfo: EditedNode[]; + curveInfo: EditedCurve[]; + curveOn: boolean[]; + curveRadius: Array; + curveLock: CurveLock[]; + curveArc: Array; + /** 못 넘는 하한(m). 0이면 제한 없음(계획서 0-9 ④). */ + limitRadiusM: number; + limitArcM: number; +} + +export interface CurveBarParams { + canvas: HTMLCanvasElement; + state: () => CurveBarState; + toScreen: (vertex: Vertex) => [number, number]; + /** 한 번의 편집을 마무리한다 — 다시 그리고 되돌리기에 쌓는다. */ + applyEdit: (message: string) => void; +} + +export interface CurveBar { + label: CurveLabel; + /** 고른 자리에 맞춰 패널을 옮겨 그린다. */ + sync: () => void; +} + +export function createCurveBar(params: CurveBarParams): CurveBar { + const label = createCurveLabel({ + onRadius: (value) => { + const { picked, curveRadius } = params.state(); + if (picked < 0) return; + curveRadius[picked] = value; + // 반지름만 바꾼 것이라 노드 자리는 그대로지만, 그려진 선은 낡았다. + params.applyEdit(value === null ? "반지름을 자동으로 되돌렸습니다." : "반지름을 바꿨습니다."); + }, + onArcLength: (value) => { + const { picked, nodeInfo, curveArc, curveRadius } = params.state(); + if (picked < 0) return; + // 곡선 길이 L 과 반지름 R 은 L = R·Δ 로 묶여 있다(Δ = 교각, 앞뒤 직선이 정함). + // 그래서 길이를 받으면 반지름으로 바꿔 **한 값만** 들고 간다 — 두 벌로 두면 어긋난다. + const deflection = deflectionRad(nodeInfo[picked]?.inner_angle_deg); + curveArc[picked] = value; + curveRadius[picked] = value !== null && deflection > 1e-9 ? value / deflection : null; + params.applyEdit( + value === null ? "반지름을 자동으로 되돌렸습니다." : "곡선 길이를 바꿨습니다.", + ); + }, + onLock: (lock) => { + const { picked, nodeInfo, curveArc, curveRadius, curveLock } = params.state(); + if (picked < 0) return; + curveLock[picked] = lock; + const deflection = deflectionRad(nodeInfo[picked]?.inner_angle_deg); + const shown = curveRadius[picked] ?? nodeInfo[picked]?.radius_m ?? null; + // 길이를 붙들려면 지금 길이를 적어 둬야 한다 — 뒤에 교각이 바뀌면 이 값으로 R 을 다시 잡는다. + if (lock === "arc") { + curveArc[picked] = shown !== null && deflection > 1e-9 ? shown * deflection : null; + } + // R 을 붙들 때 칸이 비어 있으면 지금 그려진 R 을 적어 둔다(자동 상태를 그대로 못 박음). + if (lock === "radius" && curveRadius[picked] === null) curveRadius[picked] = shown; + params.applyEdit( + lock === "radius" + ? "반지름을 고정했습니다." + : lock === "arc" + ? "곡선 길이를 고정했습니다." + : "고정을 풀었습니다.", + ); + }, + onCurveOn: (on) => { + const { picked, curveOn } = params.state(); + if (picked < 0) return; + curveOn[picked] = on; + params.applyEdit(on ? "곡선을 넣었습니다." : "곡선을 지웠습니다."); + }, + }); + + /** 고른 자리에 맞춰 라벨을 옮겨 그린다. 끝점은 곡선이 없으므로 라벨을 숨긴다. */ + function sync(): void { + const { + picked, + planned, + nodeInfo, + curveInfo, + curveOn, + curveRadius, + curveLock, + limitRadiusM, + limitArcM, + } = params.state(); + if (!(picked > 0 && picked < planned.length - 1)) { + label.hide(); + return; + } + const pickedCurve = curveInfo.find((entry) => entry.node_first === picked); + const shown = curveRadius[picked] ?? pickedCurve?.radius_m ?? null; + const deflection = deflectionRad(nodeInfo[picked]?.inner_angle_deg); + const rect = params.canvas.getBoundingClientRect(); + const [screenX, screenY] = params.toScreen(planned[picked]); + label.show({ + seat: picked, + // 패널은 `position: fixed` 라 **화면 좌표**로 넘긴다. + at: [screenX + rect.left, screenY + rect.top], + // 넘어가도 되는 테두리 = **지도 칸**(하단 정보행 위까지). 밖으로 나가면 지금 무엇을 + // 고치는지 모달 안에서 안 보인다(2026-09-12 사용자 지적 ⑨). + bounds: { + left: rect.left + 8, + top: rect.top + 8, + right: rect.right - 8, + bottom: rect.bottom - 8, + }, + centerDirection: pickedCurve + ? centerDirectionOf( + params.toScreen([pickedCurve.apex[0], pickedCurve.apex[1]]), + params.toScreen(pickedCurve.start), + params.toScreen(pickedCurve.end), + ) + : null, + curveOn: curveOn[picked] !== false, + radiusShown: shown, + arcLengthShown: shown === null || deflection <= 1e-9 ? null : shown * deflection, + lock: curveLock[picked] ?? null, + innerAngleDeg: nodeInfo[picked]?.inner_angle_deg ?? null, + limitRadiusM, + limitArcM, + }); + } + + return { label, sync }; +} diff --git a/B05_Profile/B05_Profile_UI_RouteEdit_Edits.ts b/B05_Profile/B05_Profile_UI_RouteEdit_Edits.ts index a21e6987..55dcd2db 100644 --- a/B05_Profile/B05_Profile_UI_RouteEdit_Edits.ts +++ b/B05_Profile/B05_Profile_UI_RouteEdit_Edits.ts @@ -48,6 +48,75 @@ export function applyArcLocks( } } +/** + * **하한을 지키도록 지정 반지름을 끌어올린다**(계획서 0-9 ④, 2026-09-12 사용자 확정). + * + * L = R·Δ 이므로 「곡선 길이 하한」은 그 자리에서 「반지름 하한 L/Δ」과 같은 말이다. 두 하한 + * 중 큰 쪽으로 올린다. **비워 둔(자동) 자리는 건드리지 않는다** — 자동은 이미 기본 반지름을 + * 쓰고 있고, 여기서 값을 적어 넣으면 아무것도 안 고쳤는데 「R 지정」이 늘어난다. + */ +export function applyCurveLimits( + planned: Vertex[], + curveOn: ReadonlyArray, + curveRadius: Array, + limitRadiusM: number, + limitArcM: number, +): void { + if (limitRadiusM <= 0 && limitArcM <= 0) return; + for (let seat = 1; seat < planned.length - 1; seat += 1) { + if (curveOn[seat] === false) continue; + const current = curveRadius[seat]; + if (current === null || current === undefined) continue; + const deflection = deflectionRad( + innerAngleDeg(planned[seat - 1], planned[seat], planned[seat + 1]), + ); + const byArc = limitArcM > 0 && deflection > 1e-9 ? limitArcM / deflection : 0; + const floor = Math.max(limitRadiusM, byArc); + if (floor > 0 && current < floor) curveRadius[seat] = floor; + } +} + +/** + * 노드마다 하한을 **얼마나 밑돌고 있나**(m). 다 지키고 있으면 0. + * + * 노드를 옮기면 접선 자리가 모자라 그리기 단계에서 R 이 눌릴 수 있다. 그 눌림까지 막으려면 + * 옮기기 자체를 되돌려야 하므로, **옮기기 전보다 나빠진 자리가 있는지**만 견준다 — 이미 + * 하한을 밑돌던 옛 노선도 그대로 고칠 수 있어야 하기 때문이다(2026-09-12). + * + * ⚠ 가장 큰 값 하나로 견주면 안 된다. 크게 밑도는 자리가 이미 있으면 **다른 자리가 새로 + * 무너져도 최댓값이 안 움직여** 그냥 통과한다(실화면에서 「기준 미달 1곳 → 2곳」이 그대로 + * 지나갔다). 자리마다 따로 견준다. + */ +export function curveShortfalls( + nodes: ReadonlyArray, + limitRadiusM: number, + limitArcM: number, +): number[] { + return nodes.map((node) => { + if (node.radius_m === null || (limitRadiusM <= 0 && limitArcM <= 0)) return 0; + let short = 0; + if (limitRadiusM > 0) short = Math.max(short, limitRadiusM - node.radius_m); + if (limitArcM > 0) { + short = Math.max(short, limitArcM - node.radius_m * deflectionRad(node.inner_angle_deg)); + } + return Math.max(0, short); + }); +} + +/** + * 하한을 지키던 자리가 **이번 걸음에 처음으로 무너졌나**. 자리 수가 달라지면(넣기·지우기) + * 안 따진다. + * + * ⚠ 「조금이라도 나빠졌으면 막기」로 두면 **이미 하한을 밑돌던 옛 노선을 아예 못 고친다** — + * 그 옆 노드를 1px 만 건드려도 밑돌던 값이 미세하게 더 내려가 첫 걸음부터 막혔다(2026-09-12 + * 실화면). 이미 무너진 자리는 그대로 두고(붉은 표시는 남는다), **지키고 있던 자리가 넘어가는 + * 것만** 막는다. + */ +export function shortfallCrossed(before: readonly number[], after: readonly number[]): boolean { + if (before.length !== after.length) return false; + return after.some((value, index) => value > 1e-6 && before[index] <= 1e-6); +} + export interface CurveSummaryInput { nodeCount: number; curveOn: boolean[]; diff --git a/B05_Profile/B05_Profile_UI_RouteEdit_Input.ts b/B05_Profile/B05_Profile_UI_RouteEdit_Input.ts index 89555c43..5c4256ff 100644 --- a/B05_Profile/B05_Profile_UI_RouteEdit_Input.ts +++ b/B05_Profile/B05_Profile_UI_RouteEdit_Input.ts @@ -181,6 +181,98 @@ export function segmentAtScreen( return best; } +/** 노선 위 한 점 — 어디를 짚었나와 그 자리의 누가거리. */ +export interface RoutePointHit { + /** 사업지 좌표(m). */ + point: [number, number]; + /** 시점에서 노선을 따라간 거리(m). */ + chainageM: number; +} + +/** + * 노선(그려지는 폴리라인) 위에서 **클릭에 가장 가까운 점**과 그 누가거리. 멀면 null. + * + * 직선·곡선을 가리지 않는다(계획서 0-9 ⑤) — 원호도 이미 정점으로 펴져 있어 같은 선분 훑기로 + * 잡힌다. 누가거리는 선분 길이를 누적해 구하므로 노선 길이 표기와 같은 값을 본다. + */ +export function routePointAtScreen( + line: Array<[number, number]>, + toScreen: ScreenOf, + px: number, + py: number, + maxPx: number, +): RoutePointHit | null { + let best: RoutePointHit | null = null; + let bestDistance = maxPx; + let travelled = 0; + for (let index = 0; index < line.length - 1; index += 1) { + const from = line[index]; + const to = line[index + 1]; + const segmentM = Math.hypot(to[0] - from[0], to[1] - from[1]); + const [ax, ay] = toScreen(from); + const [bx, by] = toScreen(to); + const dx = bx - ax; + const dy = by - ay; + const lengthSquared = dx * dx + dy * dy || 1; + const t = Math.max(0, Math.min(1, ((px - ax) * dx + (py - ay) * dy) / lengthSquared)); + const distance = Math.hypot(ax + t * dx - px, ay + t * dy - py); + if (distance < bestDistance) { + bestDistance = distance; + best = { + point: [from[0] + (to[0] - from[0]) * t, from[1] + (to[1] - from[1]) * t], + chainageM: travelled + segmentM * t, + }; + } + travelled += segmentM; + } + return best; +} + +/** + * 클릭에 가장 가까운 **규칙 측점**의 누가거리(m). 그만큼 안에 없으면 null(계획서 0-9 ⑧). + * + * 눈금을 그리는 `drawStationTicks` 와 **같은 자리**를 짚는다 — 선분 길이를 누적해 측점 간격 + * 마다 한 점씩 보간한다. 눈금이 보이는 자리를 눌렀는데 안 잡히면 안 되기 때문이다. + */ +export function stationAtScreen( + line: Array<[number, number]>, + toScreen: ScreenOf, + intervalM: number, + px: number, + py: number, + maxPx: number, +): number | null { + if (line.length < 2 || !(intervalM > 0)) return null; + const cumulative: number[] = [0]; + for (let index = 1; index < line.length; index += 1) { + cumulative.push( + cumulative[index - 1] + + Math.hypot(line[index][0] - line[index - 1][0], line[index][1] - line[index - 1][1]), + ); + } + const total = cumulative[cumulative.length - 1]; + let best: number | null = null; + let bestDistance = maxPx; + let cursor = 1; + for (let chainage = 0; chainage <= total; chainage += intervalM) { + while (cursor < cumulative.length - 1 && cumulative[cursor] < chainage) cursor += 1; + const back = line[cursor - 1]; + const front = line[cursor]; + const segment = cumulative[cursor] - cumulative[cursor - 1] || 1; + const ratio = Math.min(1, Math.max(0, (chainage - cumulative[cursor - 1]) / segment)); + const [x, y] = toScreen([ + back[0] + (front[0] - back[0]) * ratio, + back[1] + (front[1] - back[1]) * ratio, + ]); + const distance = Math.hypot(x - px, y - py); + if (distance < bestDistance) { + bestDistance = distance; + best = chainage; + } + } + return best; +} + /** 등고선을 보일 화면 사각형 — 노선 경계에 `bandM` 를 두른 것. 노선이 없으면 null. * * **매 프레임 다시 잰다** — 창 크기·배율·이동이 바뀌어도 띠가 노선을 따라간다. 띠 자체는 diff --git a/B05_Profile/B05_Profile_UI_RouteEdit_Label.ts b/B05_Profile/B05_Profile_UI_RouteEdit_Label.ts index b1a37a79..c6388f8d 100644 --- a/B05_Profile/B05_Profile_UI_RouteEdit_Label.ts +++ b/B05_Profile/B05_Profile_UI_RouteEdit_Label.ts @@ -11,7 +11,10 @@ * * **자리**(2026-09-07 사용자 지시) * · 몸통은 `document.body` 에 `position: fixed` 로 띄운다 — 모달이 `overflow: hidden` 이라 - * 안에 두면 가장자리에서 **잘린다**. 화면 밖으로도 넘어갈 수 있어야 한다. + * 안에 두면 가장자리에서 **잘린다**. + * · 다만 **지도 칸 밖으로는 안 나간다**(2026-09-12 사용자 지적 ⑨) — 상자 밖이나 하단 + * 정보행 위로 넘어가면 지금 무엇을 고치는지 모달 안에서 안 보인다. 「잘리지 않게」와 + * 「상자 밖으로 나가게」는 다른 문제여서 자리 계산에서만 가둔다. * · 자동 자리는 **곡선 중심의 반대쪽**, **16방위**로 잡는다(4방위는 대각 자리에서 곡선을 물었다). * · 머리를 잡아 **손으로 옮길 수 있다**. 옮긴 자리는 그 꺾임점을 보는 동안 유지되고, * 다른 꺾임점을 고르면 자동 자리로 돌아간다. @@ -60,12 +63,17 @@ export interface CurveLabelState { at: [number, number]; /** **곡선 중심이 있는 쪽**(화면 기준 방향벡터). 패널은 이 반대쪽에 붙는다. */ centerDirection: [number, number] | null; + /** 패널이 넘어가면 안 되는 테두리(화면 좌표) — 보통 모달의 지도 칸. 없으면 안 가둔다. */ + bounds?: { left: number; top: number; right: number; bottom: number }; curveOn: boolean; radiusShown: number | null; /** 곡선 길이(m) = R·Δ. 곡선이 없으면 null. */ arcLengthShown: number | null; lock: CurveLock; innerAngleDeg: number | null; + /** **못 넘는** 반지름·곡선 길이 하한(m). 0이면 제한 없음(계획서 0-9 ④). */ + limitRadiusM?: number; + limitArcM?: number; } export interface CurveLabelHandlers { @@ -143,13 +151,25 @@ export function createCurveLabel(handlers: CurveLabelHandlers): CurveLabel { /** 손으로 옮긴 자리 — 꺾임점 기준 어긋남(px). 다른 꺾임점을 고르면 지운다. */ let manual: [number, number] | null = null; let anchor: [number, number] = [0, 0]; + /** 지금 자리의 하한 — 칸이 여기서 멈춘다. 0이면 제한 없음. */ + let limitRadius = 0; + let limitArc = 0; + /** 마지막으로 받은 테두리 — 손으로 끌 때도 같은 자리를 지키려고 들고 있는다. */ + let limit: CurveLabelState["bounds"]; - const numberOf = (input: HTMLInputElement): number | null => { + /** 칸에서 읽은 값. **하한 아래는 하한에서 멈추고, 멈춘 값을 칸에 되적어 보인다** + * (2026-09-12 사용자 확정 「아예 못 넘게 막음」) — 조용히 바꾸면 왜 안 먹었는지 모른다. */ + const numberOf = (input: HTMLInputElement, floor: number): number | null => { const value = Number(input.value); - return input.value.trim() !== "" && Number.isFinite(value) && value > 0 ? value : null; + if (input.value.trim() === "" || !Number.isFinite(value) || value <= 0) return null; + if (floor > 0 && value < floor) { + input.value = String(floor); + return floor; + } + return value; }; - radius.addEventListener("change", () => handlers.onRadius(numberOf(radius))); - arc.addEventListener("change", () => handlers.onArcLength(numberOf(arc))); + radius.addEventListener("change", () => handlers.onRadius(numberOf(radius, limitRadius))); + arc.addEventListener("change", () => handlers.onArcLength(numberOf(arc, limitArc))); toggle.addEventListener("click", () => handlers.onCurveOn(!curveOn)); lockRadius.addEventListener("click", () => handlers.onLock(lock === "radius" ? null : "radius")); lockArc.addEventListener("click", () => handlers.onLock(lock === "arc" ? null : "arc")); @@ -169,8 +189,14 @@ export function createCurveLabel(handlers: CurveLabelHandlers): CurveLabel { }); head.addEventListener("pointermove", (event) => { if (!dragFrom) return; - const left = dragFrom.left + event.clientX - dragFrom.x; - const top = dragFrom.top + event.clientY - dragFrom.y; + // 끄는 동안에도 테두리를 지킨다 — 놓은 뒤에만 가두면 손이 간 자리에서 패널이 튄다. + const [left, top] = clamp( + dragFrom.left + event.clientX - dragFrom.x, + dragFrom.top + event.clientY - dragFrom.y, + root.offsetWidth, + root.offsetHeight, + limit, + ); root.style.left = `${Math.round(left)}px`; root.style.top = `${Math.round(top)}px`; // 꺾임점 기준으로 기억한다 — 지도를 옮기거나 확대해도 같은 자리에 따라온다. @@ -183,7 +209,8 @@ export function createCurveLabel(handlers: CurveLabelHandlers): CurveLabel { head.addEventListener("pointerup", stopDrag); head.addEventListener("pointercancel", stopDrag); - /** 자동 자리 — 곡선 중심의 반대쪽, 16방위. 손으로 옮겼으면 그 어긋남을 얹는다. */ + /** 자동 자리 — 곡선 중심의 반대쪽, 16방위. 손으로 옮겼으면 그 어긋남을 얹는다. + * 마지막에 **테두리 안으로 가둔다** — 자동 자리든 손으로 옮긴 자리든 같이 갇힌다. */ function place(state: CurveLabelState): void { const width = root.offsetWidth; const height = root.offsetHeight; @@ -193,12 +220,32 @@ export function createCurveLabel(handlers: CurveLabelHandlers): CurveLabel { : ([1, 0] as [number, number]); const distance = GAP_PX + boxReach(away[0], away[1], width, height); anchor = [nx + away[0] * distance - width / 2, ny + away[1] * distance - height / 2]; - const left = anchor[0] + (manual ? manual[0] : 0); - const top = anchor[1] + (manual ? manual[1] : 0); + const [left, top] = clamp( + anchor[0] + (manual ? manual[0] : 0), + anchor[1] + (manual ? manual[1] : 0), + width, + height, + state.bounds, + ); root.style.left = `${Math.round(left)}px`; root.style.top = `${Math.round(top)}px`; } + /** 테두리 안으로 민다. 패널이 테두리보다 크면 왼쪽·위를 맞춰 **머리가 먼저 보이게** 한다. */ + function clamp( + left: number, + top: number, + width: number, + height: number, + bounds: CurveLabelState["bounds"], + ): [number, number] { + if (!bounds) return [left, top]; + return [ + Math.max(bounds.left, Math.min(left, bounds.right - width)), + Math.max(bounds.top, Math.min(top, bounds.bottom - height)), + ]; + } + return { show(state) { if (state.seat !== seat) { @@ -207,6 +254,12 @@ export function createCurveLabel(handlers: CurveLabelHandlers): CurveLabel { } curveOn = state.curveOn; lock = state.lock; + limit = state.bounds; + limitRadius = state.limitRadiusM ?? 0; + limitArc = state.limitArcM ?? 0; + // 칸 자체에도 하한을 박아 화살표·스피너가 그 아래로 안 내려가게 한다. + radius.min = limitRadius > 0 ? String(limitRadius) : "1"; + arc.min = limitArc > 0 ? String(limitArc) : "1"; root.hidden = false; seatText.textContent = `${state.seat + 1}번째 꺾임점`; toggle.textContent = state.curveOn ? "곡선 지우기" : "곡선 넣기"; @@ -223,8 +276,14 @@ export function createCurveLabel(handlers: CurveLabelHandlers): CurveLabel { const inner = state.innerAngleDeg; const held = lock === "radius" ? "반지름 고정" : lock === "arc" ? "곡선 길이 고정" : "고정 없음"; + const floors = [ + limitRadius > 0 ? `R ≥ ${limitRadius}m` : "", + limitArc > 0 ? `L ≥ ${limitArc}m` : "", + ] + .filter(Boolean) + .join(" · "); info.textContent = state.curveOn - ? `${held}${inner ? ` · 내각 ${Math.round(inner)}°` : ""}` + ? `${held}${inner ? ` · 내각 ${Math.round(inner)}°` : ""}${floors ? ` · ${floors}` : ""}` : "곡선 없음 — 직선이 그대로 꺾입니다"; place(state); // 글자가 바뀌면 상자 높이가 한 박자 늦게 자란다 — 다음 그림 직전에 한 번 더 맞춘다. diff --git a/B05_Profile/B05_Profile_UI_RouteEdit_Measure.ts b/B05_Profile/B05_Profile_UI_RouteEdit_Measure.ts new file mode 100644 index 00000000..089611ad --- /dev/null +++ b/B05_Profile/B05_Profile_UI_RouteEdit_Measure.ts @@ -0,0 +1,104 @@ +/* ============================================================================= + * B05_Profile_UI_RouteEdit_Measure.ts + * 계획노선 위 **두 점 사이 구간 재기** — 길이와 종단기울기(계획서 0-9 ⑤). + * + * Shift+클릭으로 a·b 를 찍는다. 직선·곡선을 가리지 않는다 — 그려지는 폴리라인 위라면 어디든 + * 짚을 수 있고, 누가거리는 노선 길이 표기와 같은 방식으로 잰다. + * + * 지반고는 **찍는 순간에만** 서버에 묻는다(`/route/elevations`). 확정된 지표면을 읽기만 하는 + * 통로라 「편집 중에는 계산이 안 나간다」(계획서 0-2 확정 7)와 부딪히지 않는다 — 다만 노드를 + * 끄는 동안에는 한 번도 부르지 않는다. + * ========================================================================== */ + +import { fetchRouteElevations } from "./B05_Profile_Api_Replan"; +import { routePointAtScreen, type RoutePointHit } from "./B05_Profile_UI_RouteEdit_Input"; +import { formatStation } from "./B05_Profile_Util_Station"; + +type Vertex = [number, number]; + +/** 구간 재기로 노선을 짚었다고 볼 거리(px). */ +const MEASURE_HIT_PX = 14; + +interface MeasurePoint extends RoutePointHit { + /** 그 자리의 지반고(m). 아직 못 물었거나 지표면 밖이면 null. */ + z: number | null; +} + +export interface MeasureToolParams { + projectId: string; + /** 규칙 측점 간격(m) — 측점 표기에 쓴다. */ + stationIntervalM: number; + /** 지금 그려지는 노선(원호 포함). 편집으로 바뀌므로 함수로 받는다. */ + line: () => Vertex[]; + toScreen: (vertex: Vertex) => [number, number]; + /** 창이 닫혔나 — 늦게 온 응답을 죽은 화면에 적지 않으려고. */ + isClosed: () => boolean; + /** 상태가 바뀌었다 — 호출부가 상태줄을 다시 적고 다시 그린다. */ + onChange: () => void; +} + +export interface MeasureTool { + /** 찍힌 자리(0~2개) — 그리기가 쓴다. */ + points: () => Vertex[]; + /** 상태줄에 낼 한 줄. */ + hint: () => string; + /** Shift+클릭 한 번. 두 점이 차면 지반고를 한 번만 물어 온다. */ + pick: (px: number, py: number) => Promise; +} + +export function createMeasureTool(params: MeasureToolParams): MeasureTool { + /** 찍은 두 점. 셋째를 찍으면 새 구간의 시작이 된다. */ + let picked: MeasurePoint[] = []; + + const hint = (): string => { + if (picked.length === 0) return "Shift+클릭으로 두 점을 찍으면 거리와 기울기가 보입니다."; + const first = picked[0]; + if (picked.length === 1) { + return `구간 재기 — 시작 ${formatStation(first.chainageM, params.stationIntervalM)}. 한 점 더.`; + } + const second = picked[1]; + const span = Math.abs(second.chainageM - first.chainageM); + const head = + `구간 ${formatStation(first.chainageM, params.stationIntervalM)} → ` + + `${formatStation(second.chainageM, params.stationIntervalM)} · 길이 ${span.toFixed(1)}m`; + if (first.z === null || second.z === null || span <= 1e-6) { + return `${head} · 지반고를 못 읽어 기울기는 못 냅니다.`; + } + // 기울기는 **노선을 따라간 길이** 기준이다 — 직선거리로 나누면 곡선부에서 과대평가된다. + const rise = second.z - first.z; + return ( + `${head} · 지반고 ${first.z.toFixed(1)} → ${second.z.toFixed(1)}m` + + ` · 종단기울기 ${((rise / span) * 100).toFixed(1)}%` + ); + }; + + return { + points: () => picked.map((entry) => entry.point), + hint, + async pick(px, py) { + const hit = routePointAtScreen(params.line(), params.toScreen, px, py, MEASURE_HIT_PX); + if (!hit) { + picked = []; // 노선을 빗나가면 재던 것을 접는다. + params.onChange(); + return; + } + picked = picked.length >= 2 ? [{ ...hit, z: null }] : [...picked, { ...hit, z: null }]; + params.onChange(); + if (picked.length < 2) return; + const asked = picked; + try { + const heights = await fetchRouteElevations( + params.projectId, + asked.map((entry) => entry.point), + ); + if (params.isClosed() || picked !== asked) return; // 그 사이 다시 찍었으면 버린다. + asked.forEach((entry, index) => { + entry.z = heights[index] ?? null; + }); + } catch { + /* 지반고를 못 읽으면 길이만 낸다 — `hint` 가 그렇게 말한다. */ + } + params.onChange(); + }, + }; +} diff --git a/B05_Profile/B05_Profile_UI_RouteEdit_Render.ts b/B05_Profile/B05_Profile_UI_RouteEdit_Render.ts new file mode 100644 index 00000000..b3175d89 --- /dev/null +++ b/B05_Profile/B05_Profile_UI_RouteEdit_Render.ts @@ -0,0 +1,353 @@ +/* ============================================================================= + * B05_Profile_UI_RouteEdit_Render.ts + * 계획노선 편집 모달의 **그리기** — 등고선·예상노선·계획노선·노드·곡선 손잡이, + * 그 위에 시점·종점·규칙측점 눈금. + * + * `B05_Profile_UI_RouteEdit.ts` 가 700줄을 넘겨 떼어낸 조각이다(2026-09-12). 본문 로직과 + * 수치는 그대로이고, 모달 클로저가 쥐고 있던 값만 `scene` 으로 받는다. + * + * 측점 눈금은 **B04 지도·배수유역도와 같은 한 곳**(`drawStationTicks`)을 부른다 — 표기가 + * 화면마다 갈리면 같은 자리를 두 이름으로 부르게 된다(계획서 0-9 ②). + * ========================================================================== */ + +import { + drawPreparedFeature, + drawPreparedLabels, + drawPreparedLayer, + type PreparedLayer, + type ViewState, +} from "../B04_PreProcess/B04_PreProcess_UI_MapRender"; +import type { RouteEditContours } from "./B05_Profile_UI_RouteEdit_Contour"; +import { drawStationTicks } from "../B04_PreProcess/B04_PreProcess_UI_MapOverlays"; +import type { EditedCurve, EditedNode, Vertex } from "./B05_Profile_UI_RouteEdit_Curve"; +import { contourBandRect } from "./B05_Profile_UI_RouteEdit_Input"; +import { formatStation } from "./B05_Profile_Util_Station"; + +/** 노드 반지름(px). */ +const NODE_R = 4; +/** 등고선을 보일 **노선 둘레 띠**(m) — 사용자 지시 ⑥(2026-09-07). + * + * 노선에서 이만큼 밖의 등고선은 안 그린다. **창 크기와 무관한 고정 띠**라 창을 늘리거나 + * 줄여도 띠가 흔들리지 않는다(사용자가 「다이나믹 창이라 조심」이라 한 자리). 화면 밖을 + * 걸러내는 일은 `drawPreparedLayer` 가 이미 하므로 여기서는 띠만 덧씌운다. */ +const CONTOUR_BAND_M = 300; +/** 곡선 시작·끝점 손잡이 크기(px) — 노드 동그라미와 구별되게 **속 빈 네모**로 그린다. + * 처음엔 3.5px 였는데 선과 색이 같아 눈에도 안 띄고 집기도 어려웠다(2026-09-07 실화면). */ +const CURVE_HANDLE_PX = 5; +/** 시점·종점 이름표를 끝점에서 **노선 바깥으로** 밀어내는 거리(px). */ +const OUTWARD_PX = 26; +/** 구간 재기 표시 색 — 노선(주황)·등고선(연보라)·고른 등고선(보라)과 겹치지 않는 초록. */ +const MEASURE_COLOR = "#22c55e"; + +/** 노선을 따라간 길이(m) — 원호가 이미 정점으로 펴져 있어 정점 간 거리의 합이 곧 길이다. */ +export function polylineLengthM(points: ReadonlyArray): number { + let total = 0; + for (let index = 1; index < points.length; index += 1) { + total += Math.hypot( + points[index][0] - points[index - 1][0], + points[index][1] - points[index - 1][1], + ); + } + return total; +} + +export interface RouteEditScene { + view: ViewState; + /** 사업지 좌표(m) → 캔버스 px. */ + toScreen: (vertex: Vertex) => [number, number]; + /** 화면 1m 당 픽셀 — 측점 라벨 솎기 단계를 이 값으로 정한다. */ + pxPerMeter: number; + /** 도엽 메타를 읽었나 — 못 읽었으면 등고선 띠를 씌우지 않는다. */ + hasMeta: boolean; + /** 바탕 등고선 한 벌 — LAS 것이거나 도엽 것(`_Contour` 가 고른다). */ + contours: RouteEditContours | null; + /** 등고선 말고 함께 깔 도엽 레이어(하천중심선). */ + otherSheets: ReadonlyArray; + /** 고른 등고선 가닥 — 없으면 -1(계획서 0-9 ⑦). */ + pickedContour: number; + /** 지금 화면에 낼 등고선 간격(m) — 그리기와 집기가 **같은 값**을 봐야 한다. */ + contourStepM: number; + expected: ReadonlyArray; + /** 그려 보이는 계획노선(원호 포함). */ + plannedLine: ReadonlyArray; + /** 잡아 옮기는 노드(꺾임점). */ + planned: ReadonlyArray; + nodeInfo: ReadonlyArray; + curveInfo: ReadonlyArray; + curveOn: ReadonlyArray; + /** 지금 고른 꺾임점. 없으면 -1. */ + picked: number; + /** 규칙 측점 간격(m). */ + stationIntervalM: number; + /** 구간 재기로 찍은 점(0~2개) — 노선 위 자리(계획서 0-9 ⑤). */ + measure: ReadonlyArray; +} + +export function drawRouteEditScene(context: CanvasRenderingContext2D, scene: RouteEditScene): void { + const { view, toScreen } = scene; + const style = getComputedStyle(document.documentElement); + const line = scene.plannedLine.length ? scene.plannedLine : scene.planned; + context.clearRect(0, 0, view.width, view.height); + context.fillStyle = style.getPropertyValue("--color-surface") || "#111"; + context.fillRect(0, 0, view.width, view.height); + + context.save(); + // 등고선은 **노선 둘레 300m 안**에서만 그린다 — 노선과 상관없는 산줄기까지 다 그리면 + // 화면이 등고선으로 덮여 노선이 안 보인다(2026-09-07 사용자 지시 ⑥). + const band = scene.hasMeta ? contourBandRect(line as Vertex[], toScreen, CONTOUR_BAND_M) : null; + if (band) { + context.beginPath(); + context.rect(band.x, band.y, band.width, band.height); + context.clip(); + } + context.strokeStyle = style.getPropertyValue("--map-sheet-stream") || "#2563eb"; + context.lineWidth = 1.2; + for (const layer of scene.otherSheets) drawPreparedLayer(context, layer, view, "dot"); + if (scene.contours) { + // 그리는 줄과 라벨을 **같은 눈금**으로 솎는다 — 그린 줄에만 숫자가 붙어야 짝이 맞는다. + const everyM = scene.contourStepM; + context.strokeStyle = style.getPropertyValue("--map-sheet-contour") || "#a5b4fc"; + context.lineWidth = 0.8; + drawPreparedLayer(context, scene.contours.layer, view, "dot", everyM); + // 고른 가닥은 굵고 다른 색으로 덧그린다 — 지우고 다시 그리지 않고 위에 얹는다. + if (scene.pickedContour >= 0) { + context.strokeStyle = style.getPropertyValue("--map-flow-arrow") || "#7c3aed"; + context.lineWidth = 2.6; + drawPreparedFeature(context, scene.contours.layer, scene.pickedContour, view); + } + // 등고 높이값 — 확대가 클수록 촘촘히 낸다(계획서 0-9 ③). + context.font = "10px system-ui, sans-serif"; + context.textAlign = "center"; + context.textBaseline = "middle"; + drawPreparedLabels( + context, + scene.contours.layer, + view, + style.getPropertyValue("--map-sheet-contour") || "#a5b4fc", + everyM, + ); + } + context.restore(); + + strokePolyline( + context, + toScreen, + scene.expected, + [6, 5], + style.getPropertyValue("--color-text-secondary") || "#9ca3af", + 1.6, + ); + // 선은 **폴리라인**(원호 포함)을 그리고, 잡는 동그라미는 **노드**에만 찍는다. + // 노드를 옮기는 동안에는 폴리라인이 없으므로 노드를 곧바로 이어 미리 보인다. + strokePolyline( + context, + toScreen, + line, + [], + style.getPropertyValue("--map-route") || "#f97316", + 2.4, + ); + + context.save(); + context.fillStyle = style.getPropertyValue("--map-route") || "#f97316"; + context.strokeStyle = style.getPropertyValue("--map-halo") || "rgba(255,255,255,0.9)"; + context.lineWidth = 1; + scene.planned.forEach((vertex, index) => { + const [x, y] = toScreen(vertex); + // 법정 기준을 못 맞춘 자리는 붉게 — 막지는 않고 보이기만 한다(2026-09-06 사용자 확정). + const bad = (scene.nodeInfo[index]?.violations?.length ?? 0) > 0; + context.fillStyle = bad + ? style.getPropertyValue("--color-danger") || "#dc2626" + : style.getPropertyValue("--map-route") || "#f97316"; + context.beginPath(); + context.arc(x, y, index === scene.picked ? NODE_R + 2 : NODE_R, 0, Math.PI * 2); + context.fill(); + context.stroke(); + // 곡선을 지운 자리는 가운데를 비워 「여기는 곡선이 없다」를 보인다. + if ( + scene.curveOn.length && + !scene.curveOn[index] && + index > 0 && + index < scene.planned.length - 1 + ) { + context.save(); + context.fillStyle = style.getPropertyValue("--map-halo") || "rgba(255,255,255,0.9)"; + context.beginPath(); + context.arc(x, y, NODE_R - 2, 0, Math.PI * 2); + context.fill(); + context.restore(); + } + }); + + // 곡선 시작·끝점 — 잡아서 직선 각도와 R 을 함께 바꾸는 손잡이(2026-09-07 사용자 지시). + // **속을 비우고 테두리를 굵게** 그린다 — 선·노드와 색이 같으면 눈에도 안 띄고 집기도 어렵다. + context.lineWidth = 2; + scene.curveInfo.forEach((curve) => { + // **늘 보인다**(2026-09-07 사용자 지시) — 직선이 곡선에 닿는 자리는 손잡이이기 이전에 + // **읽을 정보**다. 한때 고른 곡선만 내보였더니 「표기가 다 사라졌다」는 지적을 받았다. + // 노드를 못 집던 문제는 집기 우선순위(노드가 먼저)로 따로 풀었으므로 다 내놓아도 된다. + if (scene.curveOn[curve.node_first] === false) return; // 곡선을 지운 자리에는 접선점도 없다. + // 고른 곡선은 속을 채워 도드라지게 — 지금 끌 수 있는 것이 무엇인지 보이게. + const isPicked = curve.node_first === scene.picked; + [curve.start, curve.end].forEach((point) => { + const [x, y] = toScreen([point[0], point[1]]); + context.beginPath(); + const size = isPicked ? CURVE_HANDLE_PX + 1 : CURVE_HANDLE_PX; + context.rect(x - size, y - size, size * 2, size * 2); + context.fillStyle = isPicked + ? style.getPropertyValue("--map-route") || "#f97316" + : style.getPropertyValue("--map-halo") || "rgba(255,255,255,0.95)"; + context.fill(); + context.strokeStyle = style.getPropertyValue("--map-route") || "#f97316"; + context.stroke(); + }); + }); + context.restore(); + + drawStationMarks(context, scene, line); + drawMeasureMarks(context, scene, line); +} + +/** 구간 재기로 찍은 자리 — a·b 를 동그라미로 찍고 그 사이 노선을 굵게 덧그린다(계획서 0-9 ⑤). */ +function drawMeasureMarks( + context: CanvasRenderingContext2D, + scene: RouteEditScene, + line: ReadonlyArray, +): void { + if (scene.measure.length === 0) return; + context.save(); + if (scene.measure.length >= 2) { + const span = spanBetween(line, scene.measure[0], scene.measure[1]); + if (span.length >= 2) { + context.strokeStyle = MEASURE_COLOR; + context.lineWidth = 4; + context.beginPath(); + span.forEach((vertex, index) => { + const [x, y] = scene.toScreen(vertex); + if (index === 0) context.moveTo(x, y); + else context.lineTo(x, y); + }); + context.stroke(); + } + } + context.lineWidth = 2.4; + context.strokeStyle = MEASURE_COLOR; + context.font = "bold 11px system-ui, sans-serif"; + context.textAlign = "center"; + context.textBaseline = "middle"; + scene.measure.forEach((vertex, index) => { + const [x, y] = scene.toScreen(vertex); + context.fillStyle = "rgba(255,255,255,0.95)"; + context.beginPath(); + context.arc(x, y, 7, 0, Math.PI * 2); + context.fill(); + context.stroke(); + context.fillStyle = "#14532d"; + context.fillText(index === 0 ? "a" : "b", x, y); + }); + context.restore(); +} + +/** 두 점 사이의 노선 조각 — 가장 가까운 정점부터 정점까지. 어디를 쟀는지 보이기만 하면 된다. */ +function spanBetween(line: ReadonlyArray, from: Vertex, to: Vertex): Vertex[] { + const nearest = (target: Vertex): number => { + let best = 0; + let bestDistance = Infinity; + line.forEach((vertex, index) => { + const distance = Math.hypot(vertex[0] - target[0], vertex[1] - target[1]); + if (distance < bestDistance) { + bestDistance = distance; + best = index; + } + }); + return best; + }; + const start = nearest(from); + const end = nearest(to); + const [low, high] = start <= end ? [start, end] : [end, start]; + return [from, ...line.slice(low, high + 1), to]; +} + +/** 규칙 측점 눈금·번호와 시점·종점 이름표(계획서 0-9 ②). */ +function drawStationMarks( + context: CanvasRenderingContext2D, + scene: RouteEditScene, + line: ReadonlyArray, +): void { + if (line.length < 2) return; + // 눈금은 B04 지도·배수유역도와 같은 한 곳이 그린다 — 표기가 화면마다 갈리지 않게. + drawStationTicks( + context, + line.map(([x, y]) => ({ x, y })), + { + intervalM: scene.stationIntervalM, + pxPerMeter: scene.pxPerMeter, + toScreen: (x, y) => scene.toScreen([x, y]), + }, + ); + const total = polylineLengthM(line); + const last = line.length - 1; + endLabel(context, scene, line[0], line[1], "시점 0+0.0"); + endLabel( + context, + scene, + line[last], + line[last - 1], + `종점 ${formatStation(total, scene.stationIntervalM)}`, + ); +} + +/** 시점·종점 이름표 — 측점 라벨보다 크고 짙게 찍어 양 끝을 한눈에 알게 한다. + * + * 자리는 **노선 바깥쪽**(끝점에서 노선을 등진 방향)이다. 위로만 띄웠더니 같은 자리의 측점 + * 라벨(0+0.0 · 50+0.0)과 겹쳐 두 글자가 포개졌다 — 측점 라벨은 노선에 **직각**으로 나가므로 + * 노선을 따라 밀면 서로 안 물린다(2026-09-12 실화면). */ +function endLabel( + context: CanvasRenderingContext2D, + scene: RouteEditScene, + at: Vertex, + inward: Vertex, + text: string, +): void { + const [x0, y0] = scene.toScreen(at); + const [x1, y1] = scene.toScreen(inward); + const length = Math.hypot(x0 - x1, y0 - y1) || 1; + const x = x0 + ((x0 - x1) / length) * OUTWARD_PX; + const y = y0 + ((y0 - y1) / length) * OUTWARD_PX; + context.save(); + context.font = "bold 12px system-ui, sans-serif"; + context.textAlign = "center"; + context.textBaseline = "middle"; + const width = context.measureText(text).width + 10; + context.fillStyle = "rgba(255, 255, 255, 0.9)"; + context.fillRect(x - width / 2, y - 26, width, 17); + context.strokeStyle = "#f97316"; + context.lineWidth = 1; + context.strokeRect(x - width / 2, y - 26, width, 17); + context.fillStyle = "#111111"; + context.fillText(text, x, y - 17.5); + context.restore(); +} + +function strokePolyline( + context: CanvasRenderingContext2D, + toScreen: (vertex: Vertex) => [number, number], + points: ReadonlyArray, + dash: number[], + color: string, + width: number, +): void { + if (points.length < 2) return; + context.save(); + context.setLineDash(dash); + context.strokeStyle = color; + context.lineWidth = width; + context.beginPath(); + points.forEach((vertex, index) => { + const [x, y] = toScreen(vertex); + if (index === 0) context.moveTo(x, y); + else context.lineTo(x, y); + }); + context.stroke(); + context.restore(); +} diff --git a/B05_Profile/B05_Profile_UI_Style_RouteEdit.css b/B05_Profile/B05_Profile_UI_Style_RouteEdit.css index 789350c7..361a73f2 100644 --- a/B05_Profile/B05_Profile_UI_Style_RouteEdit.css +++ b/B05_Profile/B05_Profile_UI_Style_RouteEdit.css @@ -241,3 +241,53 @@ color: var(--color-text-secondary); line-height: 1.35; } + +/* ── 측점 횡단 미리보기 창 (계획서 0-9 ⑧) ──────────────────────────────── + 곡선 조작 패널과 같은 까닭으로 `document.body` 에 띄운다 — 모달이 `overflow: hidden` + 이라 안에 두면 가장자리에서 잘린다. 머리를 잡아 옮길 수 있다. */ +.b05-routeedit__cross { + position: fixed; + z-index: calc(var(--z-modal, 1000) + 2); + display: flex; + flex-direction: column; + gap: var(--spacing-8, 8px); + width: 452px; + padding: var(--spacing-8); + border: 1px solid var(--color-border); + border-radius: var(--radius-8, 6px); + background: var(--color-surface-raised); + box-shadow: 0 8px 28px rgb(0 0 0 / 40%); +} + +.b05-routeedit__cross-head { + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--spacing-8, 8px); + cursor: move; + touch-action: none; +} + +.b05-routeedit__cross-close { + padding: 0 6px; + border: 1px solid var(--color-border); + border-radius: var(--radius-4, 4px); + background: transparent; + color: var(--color-text-secondary); + cursor: pointer; +} + +.b05-routeedit__cross-canvas { + display: block; + width: 100%; + height: auto; + border: 1px solid var(--color-border); + border-radius: var(--radius-4, 4px); + background: var(--color-surface); +} + +.b05-routeedit__cross-foot { + color: var(--color-text-secondary); + font-size: var(--text-caption); + line-height: 1.5; +} diff --git a/B08_Quantity/B08_Quantity_UI_ConversionFactors.ts b/B08_Quantity/B08_Quantity_UI_ConversionFactors.ts index 1a2497c9..443f5b2c 100644 --- a/B08_Quantity/B08_Quantity_UI_ConversionFactors.ts +++ b/B08_Quantity/B08_Quantity_UI_ConversionFactors.ts @@ -157,9 +157,10 @@ export function renderConversionFactorFields( if (!entries.length) return null; const box = document.createElement("div"); - box.className = "b08-quantity__factors"; + // 제 제목을 제 안에 들고 있어 이 구획 자신이 공용 접기 컨테이너가 된다(B03~B07 과 같은 틀). + box.className = "b08-quantity__factors ui-collapsible"; const title = document.createElement("div"); - title.className = "b08-quantity__field"; + title.className = "b08-quantity__field ui-collapsible__title"; const titleName = document.createElement("span"); titleName.textContent = L("B08_Quantity_Side_Factors"); title.append(titleName); diff --git a/B08_Quantity/B08_Quantity_UI_EarthworkGrid_Style.ts b/B08_Quantity/B08_Quantity_UI_EarthworkGrid_Style.ts index 5102228d..5e2d567e 100644 --- a/B08_Quantity/B08_Quantity_UI_EarthworkGrid_Style.ts +++ b/B08_Quantity/B08_Quantity_UI_EarthworkGrid_Style.ts @@ -188,6 +188,33 @@ const CSS = ` .b08-quantity__hint { margin: 0 0 6px; font-size: 11px; line-height: 1.4; color: var(--color-text-secondary); } /* 품셈 범위 밖을 고른 칸 — **막지 않고** 사유를 받는 자리라 경고 색만 준다. */ .b08-quantity__hint--warn { color: var(--color-warning, #b45309); } +/* 좌측 산출조건 패널 — B03~B07 과 같은 공통 틀을 쓴다(접히는 상자 ui-collapsible + + 공통 외곽선 ui-sidebar-section + 바닥 고정 액션 줄 ui-sidebar-actions). + ⚠ 테두리는 공용 .ui-sidebar-section(ui_template_overlay.css)이 전담한다 — + 여기서 border 를 다시 선언하면 로드 순서상 공통 색을 덮어 흐려진다(B04 주석과 같은 까닭). */ +.b08-quantity__panel { display: flex; flex-direction: column; gap: 8px; } +.b08-quantity__section { + display: flex; + flex-direction: column; + gap: 2px; + margin: 0; + padding: 10px 12px; + border-radius: var(--radius-cards); + background-color: var(--color-surface-raised); +} +.b08-quantity__section-title { + margin: 0 0 2px; + font-size: 12px; + font-weight: 600; + color: var(--color-text-secondary); +} +/* 개발 전용 줄 — ⚠ 단추 묶음에 공용 ui-sidebar-actions 를 쓰면 공용 코드가 **이 줄**을 + 패널 바닥 액션으로 잘못 집어(첫 번째 것을 찾는다) 스크롤 영역이 이 줄 안에 갇히고 + 아래 칸들이 통째로 잘린다(2026-09-12 사용자 보고). 생김새만 같게 두고 클래스는 따로 쓴다. */ +.b08-quantity__dev { display: flex; flex-direction: column; gap: 4px; } +.b08-quantity__dev-actions { display: flex; gap: 8px; } +.b08-quantity__dev-actions > * { flex: 1 1 0; min-width: 0; } +.b08-quantity__note { margin: 0; font-size: 11px; line-height: 1.4; color: var(--color-text-secondary); } /* 토량환산계수 구획 — 갈래마다 (값 · 안내 · 사유)가 한 덩어리로 붙는다. */ .b08-quantity__factors { margin: 4px 0 10px; } .b08-quantity__factor { margin-bottom: 6px; } diff --git a/B08_Quantity/B08_Quantity_UI_Page.ts b/B08_Quantity/B08_Quantity_UI_Page.ts index e0bd7259..3e6b092a 100644 --- a/B08_Quantity/B08_Quantity_UI_Page.ts +++ b/B08_Quantity/B08_Quantity_UI_Page.ts @@ -11,6 +11,8 @@ import { ui_locales, currentLanguageIndex } from "@ui/ui_template_locale"; import { createButton, showToast } from "@ui/ui_template_elements"; import { API_BASE_URL, CURRENT_PROJECT_ID_KEY } from "@config/config_frontend"; import { createWorkflowLayout } from "@ui/ui_template_workflow_layout"; +import { attachCollapsible } from "@ui/ui_template_collapsible"; +import { groupPanelSections } from "./B08_Quantity_UI_SidePanel_Sections"; import { workflowSteps } from "../A00_Common/b_page_scaffold"; import { fetchWorkflowState, @@ -353,7 +355,10 @@ function devUnlockRow(projectId: string, reload: () => void): HTMLElement { onClick: () => call("DELETE", relock), }); const buttons = document.createElement("div"); - buttons.className = "b08-quantity__actions ui-sidebar-actions"; + // ⚠ 공용 `ui-sidebar-actions` 를 쓰지 않는다 — 공용 코드가 **첫 번째** 그 클래스를 + // 패널 바닥 액션 줄로 집어(`ui_template_overlay.ts` splitSidebarActions), + // 스크롤 영역이 이 줄 안에 갇히고 아래 칸들이 통째로 잘린다(2026-09-12). + buttons.className = "b08-quantity__dev-actions"; buttons.append(unlock, relock); row.append(buttons); return row; @@ -640,6 +645,8 @@ function buildQuantitySidePanel( }, ), ); + // ⚠ `?.` 이 빠지면 표를 못 받은 때(`table === null`) 여기서 터져 **페이지가 통째로 + // 백지**가 된다 — 정작 보여야 할 「표를 못 불렀다」 안내까지 같이 사라진다(2026-09-12 실측). const placing = ( table as unknown as { concrete_placing?: { @@ -647,8 +654,8 @@ function buildQuantitySidePanel( is_default: boolean; price_hint?: { basis?: string; values?: Record }; }; - } - ).concrete_placing; + } | null + )?.concrete_placing; if (placing) { // ⚠ 방식 이름을 **늘** 값 옆에 보인다 — 코드(`12-01-01`)만으로는 무엇을 쓰는지 모른다. const label = PLACING_LABELS[placing.method] ?? placing.method; @@ -743,6 +750,10 @@ function buildQuantitySidePanel( // TODO(미결) — 설정의 초기값을 무엇으로 볼지 사용자 확인 뒤에 붙인다. actions.append(saveButton, confirmButton); panel.append(actions); + + // 조건 칸을 B03~B07 공통 상자로 묶고 제목 클릭으로 접히게 한다. + groupPanelSections(panel); + attachCollapsible(panel); return panel; } diff --git a/B08_Quantity/B08_Quantity_UI_SidePanel_Sections.ts b/B08_Quantity/B08_Quantity_UI_SidePanel_Sections.ts new file mode 100644 index 00000000..d696cbb0 --- /dev/null +++ b/B08_Quantity/B08_Quantity_UI_SidePanel_Sections.ts @@ -0,0 +1,64 @@ +/* ============================================================================= + * B08_Quantity_UI_SidePanel_Sections.ts + * 좌측 산출조건 패널을 **B03~B07 공통 상자**로 묶는 자리. + * + * 페이지 본문(`B08_Quantity_UI_Page.ts`)이 이미 700줄을 크게 넘어 새 코드를 그리로 + * 보내지 않고 이 파일로 뀜다(CLAUDE.md 4장 700줄 제한). + * ========================================================================== */ + +/** + * 다 쌓인 조건 칸을 「제목 + 그 뒤 칸들」 덩어리로 잘라 **B03~B07 공통 상자**에 담는다. + * + * 왜 다 쌓은 뒤에 한 번 묶나 + * 칸을 쌓는 코드가 400줄에 흩어져 있어 append 를 하나하나 고치면 손댈 자리가 너무 많다. + * 제목은 `field(이름, "")` 이 낸 **값이 빈 줄**이고, 그것이 나올 때마다 새 상자가 열린다. + * 상자 겉모습·접기는 공용 클래스가 전담한다 — B04·B06 과 같은 틀이다. + * + * ⚠ 개발용 줄과 맨 아래 액션 줄은 **상자 밖에 남긴다.** 액션 줄은 공용 코드가 패널 바닥에 + * 고정하는 줄이라 상자 안으로 들어가면 바닥에 안 붙는다. + * ⚠ 첫 제목보다 앞에 오는 것(산출법 한 줄 · 토량환산계수 구획)은 **제목 없는 상자**에 담는다 — + * 토량환산계수는 제 제목을 제 안에 이미 들고 있어 따로 붙이면 제목이 둘이 된다. + */ +export function groupPanelSections(panel: HTMLElement): void { + const isHeading = (node: Element): boolean => { + if (node.tagName !== "DIV" || !node.classList.contains("b08-quantity__field")) return false; + const value = node.querySelector(".b08-quantity__field-value"); + return !value || !value.textContent; + }; + const newSection = (title: string | null): HTMLElement => { + const section = document.createElement("section"); + section.className = title + ? "b08-quantity__section ui-collapsible ui-sidebar-section" + : "b08-quantity__section ui-sidebar-section"; + if (title) { + const heading = document.createElement("p"); + heading.className = "b08-quantity__section-title ui-collapsible__title"; + heading.textContent = title; + section.append(heading); + } + return section; + }; + + let box: HTMLElement | null = null; + for (const node of [...panel.children]) { + // 개발용 줄·바닥 액션 줄은 건너뛰고 상자도 끊는다. + if ( + node.classList.contains("b08-quantity__dev") || + node.classList.contains("ui-sidebar-actions") + ) { + box = null; + continue; + } + if (isHeading(node)) { + box = newSection(node.firstElementChild?.textContent ?? ""); + panel.insertBefore(box, node); + node.remove(); + continue; + } + if (!box) { + box = newSection(null); + panel.insertBefore(box, node); + } + box.append(node); + } +} diff --git a/config/config_system_design.py b/config/config_system_design.py index 02c149c9..45a17e99 100644 --- a/config/config_system_design.py +++ b/config/config_system_design.py @@ -516,6 +516,31 @@ FOREST_ROAD_PROFILE_CRITERIA = { # 배향곡선(Hair Pin) 중심선 반지름 하한(m, 별표2 Ⅰ.2.다.(2)). 이보다 급하면 **경고만** # 낸다 — 자동 보정·차단은 하지 않는다(2026-09-06 사용자 확정). "hairpin_min_radius_m": 10.0, + # 임도 종류별 **못 넘는 하한**(m) — 계획노선 편집 화면이 값을 막는 기준이다 + # (2026-09-12 사용자 확정). 위 `min_plan_radius_m` 은 **기본값·위반 표시 기준**이고 + # 여기는 **제한**이라 서로 다르다. 둘을 한 값으로 묶으면 하한 0 이 곧 반지름 0 이 되어 + # 곡선이 아예 안 그려진다. + # · None = 위 표(설계속도 × 지형)를 그대로 하한으로 쓴다. + # · 0.0 = 제한 없음. 작업임도는 별표2에 곡선반지름 규정이 없어 열어 둔다 — + # 값이 정해지면 **이 칸만** 고치면 서버·화면이 함께 따라간다. + # ⚠ `projects.road_type` 은 main|fire|work 로 들어온다(B02 스키마) — 계획선 등급 코드 + # trunk 와 같은 뜻이라 둘 다 적어 둔다. 없는 키는 None 과 같게(법정 표) 다뤄진다. + "plan_radius_limit_by_grade_m": { + "main": None, + "trunk": None, + "fire": None, + "work": 0.0, + "branch": None, + }, + # 평면 **곡선 길이(L)** 하한(m). 법령·교본에 값이 없어 지금은 전부 0(제한 없음)이다. + # 자리만 만들어 두고, 실무값이 정해지면 여기에 적는다(2026-09-12 사용자 확정). + "plan_curve_length_limit_by_grade_m": { + "main": 0.0, + "trunk": 0.0, + "fire": 0.0, + "work": 0.0, + "branch": 0.0, + }, # 임도 종류 → **기본** 설계속도(km/h). 임도는 속도를 낼 수 없는 노선이라 20이 # 기본이다(2026-08-19 사용자 확정). 별표2상 간선·산불진화는 20~40 범위에서 # 설계자가 고르고, 작업임도는 20 이하이므로 20 고정이다. 사용자가 화면에서 고른 diff --git a/docs/wiki/concepts/browser_verification_operations.md b/docs/wiki/concepts/browser_verification_operations.md new file mode 100644 index 00000000..22eb3205 --- /dev/null +++ b/docs/wiki/concepts/browser_verification_operations.md @@ -0,0 +1,37 @@ +--- +type: concept +status: stable +related_pages: ["[[multi_environment_safety]]", "[[design_data_lifecycle]]"] +last_updated: 2026-09-12 +source: ["docs/raw/verification/2026-09-12_공용_브라우저_운용.md"] +--- + +# 화면 검증 브라우저 운용 + +## 기본 선택 + +- 화면 검증 기본은 Orca 내장 브라우저다. 공용 브라우저는 사용자가 명시한 때만 쓴다. +- 공용 창과 Orca 탭을 동시에 띄우면 `snapshot`·`screenshot`이 충돌하므로 함께 사용하지 않는다. +- 검증은 직접 조작하고 `sessionStorage`, SVG 좌표, 툴팁, 스크린샷 등 수치 근거로 판정한다. 바꾼 값은 원래 상태로 복원한다. + +## 공용 브라우저 시동과 조작 + +| 항목 | 위치·명령 | 역할 | +|---|---|---| +| 시동 | `./venv/Scripts/python.exe .claude/dev_up.py` | 서버와 공용 창을 시작하거나 살아 있는 프로세스 재사용 | +| Orca용 시동 | `dev_up.py --no-browser` | 서버만 시작 | +| 명령 큐 | `tmp/browser/cmd/NN_이름.py` | `page`, `log`, `shot`, `time` 전역으로 이름순 조작 | +| 드라이버 로그 | `tmp/browser/driver.log` | RUN·OK·ERROR·SHOT 결과 기록 | +| 스크린샷 | `tmp/browser/shots/` | 화면 검증 증거 저장 | + +`tmp/`는 환경 사이에 전달되지 않는다. 남길 시험은 `resources/tester/`에 둔다. 브라우저 창 종료·재시작은 사용자 지시가 있을 때만 하며, 캐시는 CDP `Network.clearBrowserCache` 뒤 `page.reload()`로 비운다. + +## 변경 종류별 반영 + +| 변경 | 공용 브라우저 | Orca | +|---|---|---| +| 페이지·공용 TypeScript | `page.reload()` | `orca reload` | +| B07 WebCAD | `npm run build` 후 캐시 비우기 | 빌드 후 `orca reload`; 캐시 잔존 여부 미확인 | +| Python·도면 템플릿 JSON | 백엔드만 재시작 | 백엔드만 재시작 | + +공용 서버·브라우저의 포트와 주인은 현재 `OWNERS.md`를 따른다. `sessionStorage`는 포트별로 갈리므로 검증 포트에서 상태를 다시 세운다. diff --git a/docs/wiki/concepts/multi_environment_safety.md b/docs/wiki/concepts/multi_environment_safety.md index 71e8dec1..46fc286b 100644 --- a/docs/wiki/concepts/multi_environment_safety.md +++ b/docs/wiki/concepts/multi_environment_safety.md @@ -1,9 +1,9 @@ --- type: concept status: stable -related_pages: ["[[architecture/shared_resources]]", "[[storage_paths]]", "[[workflow_state]]", "[[design_data_lifecycle]]"] -last_updated: 2026-09-11 -source: ["docs/raw/verification/2026-09-09d_OWNERS_이력.md", "docs/raw/verification/2026-09-09e_계획서_완료근거_이관.md", "docs/raw/verification/2026-09-09f_계획서_공통기반과_참고_이관.md", "docs/raw/verification/2026-09-11_창환경_링크와_깃운영_조사.md", "docs/raw/plans/2026-09-11_plan_창환경_여섯워크트리_링크_깃운영.md"] +related_pages: ["[[architecture/shared_resources]]", "[[storage_paths]]", "[[workflow_state]]", "[[design_data_lifecycle]]", "[[browser_verification_operations]]"] +last_updated: 2026-09-12 +source: ["docs/raw/verification/2026-09-09d_OWNERS_이력.md", "docs/raw/verification/2026-09-09e_계획서_완료근거_이관.md", "docs/raw/verification/2026-09-09f_계획서_공통기반과_참고_이관.md", "docs/raw/verification/2026-09-11_창환경_링크와_깃운영_조사.md", "docs/raw/plans/2026-09-11_plan_창환경_여섯워크트리_링크_깃운영.md", "docs/raw/verification/2026-09-12_깃_합류점_dev_전환.md"] --- # 다중 환경 저장소·공용 DB 안전 @@ -31,15 +31,26 @@ source: ["docs/raw/verification/2026-09-09d_OWNERS_이력.md", "docs/raw/verific | 구분 | 확정 운영 | |---|---| | 코드 환경 | `main_laptop_1`, `sub_laptop_1`, `main_desktop_1`, `sub_desktop_1` | -| AI 환경 | 데스크탑의 `CODEX`, `안티그래비티`; AI 브랜치는 `docs/`만 전달 | +| AI 환경 | 데스크탑의 `CODEX`, `안티그래비티`; 코드 작업은 사용자 지시가 있을 때만 수행 | | 메인 동기화 | 두 메인 폴더의 `.claude`, `.codex`, 루트 지침·장부는 Synology가 전달 | | 보조·AI 링크 | 폴더 `.claude`·`.codex`·`venv`는 정션, 루트 파일 넷은 심볼릭 링크 | | 링크 원본 | 각 PC의 `OWNERS.md`에 적힌 자기 PC 메인 경로 | | 신규 워크트리 | Orca가 생성·삭제, `worktree_setup.ps1`가 설치 후 `worktree_link.ps1` 실행 | -| Git 동기화 | 기존 스크립트가 fetch·merge·자동 push 담당; 브랜치 이름 패턴은 넓히지 않음 | +| Git 동기화 | `main`은 정본, `dev`는 합류점, 환경 브랜치 6개는 작업 자리 | 링크는 Synology 동기화 루트 밖에만 만들고, 지침·장부를 `.claude`나 `.codex` 안으로 옮기지 않는다. `worktree_link.ps1`는 살아 있는 하드링크만 심볼릭 링크로 갈아타며 갈라진 실물은 지우지 않는다. +## Git 한 바퀴 + +| 단계 | 규칙 | +|---|---| +| 받기 | 작업 시작 전 자기 워크트리에서 `.claude\git-sync.ps1`를 인자 없이 한 번 실행 | +| 작업 | 자기 환경 브랜치에서 지시받은 범위만 변경 | +| 밀기 | 경로를 지정해 커밋한 뒤 `git push origin HEAD`로 자기 브랜치에만 push | +| 모으기 | 사용자가 Git 싱크를 지시한 때만 `git-sync.ps1 -Converge` 실행 | + +`git-sync.ps1`는 `origin/dev`를 받고, `dev`가 아직 품지 않은 환경 브랜치를 한 번의 옥토퍼스 머지로 담은 뒤 `dev`와 현재 환경 브랜치를 빨리감기한다. `-Brief`는 작업 중 HEAD를 바꾸지 않고 미수신 커밋만 알린다. 미커밋이 있으면 받기를 통째로 건너뛰며, `main`과 `dev`에 손으로 push하지 않는다. + ## 완료 판정 - 랩탑 AI 워크트리 둘 제거, 데스크탑 AI 워크트리 둘 생성, 랩탑·데스크탑 보조 및 AI 워크트리 링크 구성을 완료했다. diff --git a/docs/wiki/graphify-out/.graphify_labels.json b/docs/wiki/graphify-out/.graphify_labels.json index 0989da7b..2c8332da 100644 --- a/docs/wiki/graphify-out/.graphify_labels.json +++ b/docs/wiki/graphify-out/.graphify_labels.json @@ -171,14 +171,21 @@ "169": "B08_DesignDetail_Engine_Cad_Basin.py", "170": "B08_DesignDetail_Engine_Cad_MassHaul.py", "171": "B08 CAD·납품 도면 후속", + "172": "2026-09-04 완료 항목", + "173": "multi_environment_safety.md", + "174": "Workflow 상태 관리", + "175": "DB 스키마 개요", "176": "OpenWebCAD Core", "177": "common_util_mass_haul_settle.ts", "178": "Drainage Watershed (유역도)", "179": "Mass Haul Diagram (토적도)", + "180": "다중 환경 저장소·공용 DB 안전", + "181": "저장 경로 규칙 (Workflow-based Folder Structure)", "182": "2026-09-02 완료 항목", "183": "2026-09-03 완료 — 입력·배수·종횡단·CAD", "184": "2026-09-03 추가 완료 — 화면·종단·횡단", "185": "Query: 임도 집수정 형태정보", + "186": "설계 데이터 생명주기", "187": "B03 File Input Backend", "188": "B03 File Input Frontend", "189": "B04 PreProcess Backend", diff --git a/docs/wiki/graphify-out/2026-09-12/.graphify_analysis.json b/docs/wiki/graphify-out/2026-09-12/.graphify_analysis.json new file mode 100644 index 00000000..49611912 --- /dev/null +++ b/docs/wiki/graphify-out/2026-09-12/.graphify_analysis.json @@ -0,0 +1,1735 @@ +{ + "communities": { + "0": [ + "concepts_crs_metadata", + "concepts_crs_metadata_crs_메타데이터_정상화", + "concepts_crs_metadata_검증_범위와_모순_이력", + "concepts_crs_metadata_검증된_판정", + "concepts_crs_metadata_데이터_흐름", + "concepts_crs_metadata_사용처", + "concepts_dependencies", + "concepts_dependencies_백엔드_python_3_12_7", + "concepts_dependencies_선정_원칙_agent_md_3절", + "concepts_dependencies_외부_라이브러리_의존성", + "concepts_dependencies_프론트엔드_typescript_node_js", + "concepts_design", + "concepts_design_디자인_시스템_design_system", + "concepts_design_레이아웃_및_둥근_테두리_radius_spacing", + "concepts_design_비주얼_테마", + "concepts_design_전역_스크롤바_디자인_scrollbars", + "concepts_design_타이포그래피_typography", + "concepts_design_핵심_색상_토큰_colors", + "concepts_ui_templates", + "concepts_ui_templates_theme_css_스타일_변수", + "concepts_ui_templates_ui_template_elements_ts_공통_엘리먼트_템플릿", + "concepts_ui_templates_ui_template_general_blocks_ts_일반업무_공용_블록", + "concepts_ui_templates_ui_template_general_layout_ts_일반업무_레이아웃", + "concepts_ui_templates_ui_template_locale_ts_다국어_관리", + "concepts_ui_templates_ui_template_overlay_ts_오버레이_컴포넌트", + "concepts_ui_templates_ui_template_palette_ts_지도_팔레트_캐싱_유틸", + "concepts_ui_templates_ui_template_resizer_ts_패널_리사이저_템플릿", + "concepts_ui_templates_ui_template_workflow_layout_ts_엔지니어링_레이아웃", + "concepts_ui_templates_ui_templates_localization_components", + "concepts_ui_templates_남은_파일_한계", + "concepts_ui_templates_제약_backend_md_1" + ], + "1": [ + "concepts_api_common", + "concepts_api_common_api_공통_여러_페이지가_공유하는_엔드포인트", + "concepts_api_common_공통_오류_응답_포맷_전_라우터", + "concepts_api_common_워크플로우_상태_조회", + "concepts_api_common_폴링_패턴_legacy_workflow_json_설계_현재_구현은_workflow_state_api_사용", + "concepts_auth_rbac", + "concepts_auth_rbac_otp_비밀번호_및_디바이스_신뢰", + "concepts_auth_rbac_권한_검증_헬퍼_b01_dashboard", + "concepts_auth_rbac_라우팅_가드_frontend_md_5_2", + "concepts_auth_rbac_사용자_상태_생명주기", + "concepts_auth_rbac_사용처_역참조", + "concepts_auth_rbac_세션_인증_backend_md_6_3", + "concepts_auth_rbac_역할_users_role", + "concepts_auth_rbac_인증_rbac", + "concepts_auth_rbac_인증_갱신_및_만료_일원화", + "concepts_common_util", + "concepts_common_util_공통_유틸_common_util", + "concepts_common_util_리소스_모니터링_common_util_resource_monitor_py", + "concepts_common_util_이메일_발송_common_util_email_py", + "concepts_db_schema_users_auth", + "concepts_db_schema_users_auth_companies_회사", + "concepts_db_schema_users_auth_db_사용자_인증_조직_테이블", + "concepts_db_schema_users_auth_email_otps_이메일_otp", + "concepts_db_schema_users_auth_join_requests_회사_가입_신청", + "concepts_db_schema_users_auth_sessions_세션", + "concepts_db_schema_users_auth_trusted_devices_신뢰_기기", + "concepts_db_schema_users_auth_user_consents_약관_동의", + "concepts_db_schema_users_auth_users_사용자", + "concepts_schema_common", + "concepts_schema_common_검증_원칙_backend_md_4절", + "concepts_schema_common_공통_스키마_pydantic_요청_응답_규칙", + "concepts_schema_common_명명_규칙", + "concepts_workflow_state", + "concepts_workflow_state_r1_워크플로우_단계_재편_2026_08_08_반영", + "concepts_workflow_state_ssot_project_workflow_stages_테이블_실_db_확인", + "concepts_workflow_state_workflow_상태_관리", + "concepts_workflow_state_공통_유틸_common_util_common_util_workflow_state_py", + "concepts_workflow_state_무효화의_실제_범위", + "concepts_workflow_state_백그라운드_자동_계산_체인_및_사용자_설정_이월", + "concepts_workflow_state_조회_api", + "concepts_workflow_state_프론트엔드_게이팅_및_스텝바_연동" + ], + "2": [ + "concepts_a00_app_shell_framework", + "concepts_a00_app_shell_framework_a00_common_app_shell_framework", + "concepts_a00_app_shell_framework_app_shell_구성요소", + "concepts_a00_app_shell_framework_router_라우팅_테이블", + "concepts_a00_app_shell_framework_scaffold", + "concepts_a00_app_shell_framework_scaffold_a00_common_스캐폴드_css_종속성", + "concepts_a00_app_shell_framework_scaffold_b_page_scaffold", + "concepts_a00_app_shell_framework_scaffold_css_인젝션", + "concepts_a00_app_shell_framework_scaffold_사용처", + "concepts_a00_app_shell_framework_scaffold_종속성", + "concepts_a00_app_shell_framework_세부_스캐폴드_css_종속성", + "concepts_a00_app_shell_framework_인증_가드", + "concepts_a00_app_shell_framework_테마_언어_관리", + "concepts_a00_app_shell_framework_파일_구성", + "concepts_a00_app_shell_framework_헤더_구성_64px_높이_sticky" + ], + "3": [ + "b01_dashboard_b01_frontend", + "b03_fileinput_b03_backend", + "b03_fileinput_b03_frontend", + "b04_preprocess_b04_frontend", + "b05_profile_b05_frontend", + "b05_profile_b05_frontend_alignment", + "b05_profile_b05_frontend_viewer", + "b05_profile_b05_profile_interaction_2026_09", + "b05_profile_b05_structure_stations", + "b05_profile_b05_structures", + "b06_section_b06_frontend", + "b08_designdetail_b08_cross_structure_sheets", + "common_util", + "concepts_completed_2026_09_04", + "drainage_watershed", + "ui_templates" + ], + "4": [ + "concepts_drainage_watershed", + "concepts_drainage_watershed_1_b04_vs_b05_역할_분담_및_일원화", + "concepts_drainage_watershed_2_공용_배수_엔진_및_wamis_강우량_연동_phase_1_2_2026_08_13_관측소_전환", + "concepts_drainage_watershed_3_구조물_3단_옵션_체계_ui_phase_3_5", + "concepts_drainage_watershed_4_해석_알고리즘_등고선_하강_contour_descent", + "concepts_drainage_watershed_5_적색_청색_판정_및_유역_확장", + "concepts_drainage_watershed_6_평균_흐름_화살표_flow_arrows_및_흐름강도_램프", + "concepts_drainage_watershed_7_영구저장소_산출물_구조", + "concepts_drainage_watershed_8_b08_수리집수면적유역도", + "concepts_drainage_watershed_배수유역_해석_및_세부설계_drainage_watershed", + "concepts_las_free_sheet_surface", + "concepts_las_free_sheet_surface_e2e_결과", + "concepts_las_free_sheet_surface_las_없는_도엽등고선_서피스", + "concepts_las_free_sheet_surface_계약과_확정값", + "concepts_las_free_sheet_surface_미결", + "concepts_las_free_sheet_surface_흐름" + ], + "5": [ + "concepts_db_schema_logs_monitoring", + "concepts_db_schema_logs_monitoring_activity_logs_사용자_활동_로그", + "concepts_db_schema_logs_monitoring_audit_logs_감사_로그", + "concepts_db_schema_logs_monitoring_change_logs_설계_변경_이력", + "concepts_db_schema_logs_monitoring_db_로그_모니터링_테이블", + "concepts_db_schema_logs_monitoring_login_logs_로그인_시도_로그", + "concepts_db_schema_logs_monitoring_support_requests_기술_지원_요청", + "concepts_db_schema_logs_monitoring_system_admin_logs_시스템_관리자_행위_로그", + "concepts_db_schema_logs_monitoring_system_audit_logs_사용처_b01_b02", + "concepts_db_schema_logs_monitoring_system_audit_logs_프로젝트_조직_변경_감사_로그", + "concepts_db_schema_logs_monitoring_system_resources_시스템_자원_계측", + "concepts_db_schema_logs_monitoring_리소스_api_system_admin_전용" + ], + "6": [ + "pages_a09_security_a09_backend", + "pages_a09_security_a09_backend_a09_security_backend", + "pages_a09_security_a09_backend_api_엔드포인트", + "pages_a09_security_a09_backend_db_저장_activity_logs", + "pages_a09_security_a09_backend_권한_헬퍼", + "pages_a09_security_a09_backend_마스터_회사_관리자_전용_require_master", + "pages_a09_security_a09_backend_시스템_관리자_전용_require_system_admin", + "pages_a09_security_a09_backend_요청_스키마_pydantic", + "pages_a09_security_a09_backend_의존성_공통_유틸", + "pages_a09_security_a09_backend_인증_사용자_공통_verify_session", + "pages_a09_security_a09_backend_참고", + "pages_a09_security_a09_backend_파일_구조" + ], + "7": [ + "concepts_completed_2026_08_29", + "concepts_completed_2026_08_29_2026_08_29_완료_반영", + "concepts_completed_2026_08_29_b03_재업로드_b05_최신_조회", + "concepts_completed_2026_08_29_b05_b06_구조물_ui_통합", + "concepts_completed_2026_08_29_b07_b08_순서", + "concepts_completed_2026_08_29_b07_cad_고정_척도_횡단_장_배치", + "concepts_completed_2026_08_29_b07_cad_테마", + "concepts_completed_2026_08_29_b07_cad_확대_팬", + "concepts_completed_2026_08_29_배수시설_추천_기준", + "concepts_completed_2026_08_29_초기값_보전", + "concepts_completed_2026_08_29_초기화_복원_실측" + ], + "8": [ + "concepts_db_schema_files_surface", + "concepts_db_schema_files_surface_db_파일_지표면분석_테이블", + "concepts_db_schema_files_surface_input_files_status_값", + "concepts_db_schema_files_surface_input_files_입력_원본_파일", + "concepts_db_schema_files_surface_processed_point_cloud_status_값", + "concepts_db_schema_files_surface_processed_point_cloud_필터_변환_포인트클라우드", + "concepts_db_schema_files_surface_surface_models_status_값", + "concepts_db_schema_files_surface_surface_models_지표면_모델_및_등고선", + "concepts_db_schema_files_surface_terrain_layers_지형_레이어", + "concepts_db_schema_files_surface_upload_chunks_업로드_청크_데이터", + "concepts_db_schema_files_surface_upload_sessions_업로드_세션" + ], + "9": [ + "concepts_db_schema_route_profile", + "concepts_db_schema_route_profile_cross_sections_data_structures", + "concepts_db_schema_route_profile_cross_sections_횡단면_설계", + "concepts_db_schema_route_profile_data_컬럼_내_options_스냅샷_구조_2026_07_19_도입", + "concepts_db_schema_route_profile_data_컬럼_내_profile_alignment_구조_2026_07_23_도입", + "concepts_db_schema_route_profile_db_경로_종횡단_테이블", + "concepts_db_schema_route_profile_longitudinal_sections_종단면_설계", + "concepts_db_schema_route_profile_route_points_경로_좌표점", + "concepts_db_schema_route_profile_route_statistics_노선_통계", + "concepts_db_schema_route_profile_routes_status_흐름", + "concepts_db_schema_route_profile_routes_노선_경로" + ], + "10": [ + "pages_a04_newshistory_a04_frontend", + "pages_a04_newshistory_a04_frontend_a04_newshistory_frontend", + "pages_a04_newshistory_a04_frontend_css_클래스_구조", + "pages_a04_newshistory_a04_frontend_mock_데이터_구조", + "pages_a04_newshistory_a04_frontend_로컬라이제이션", + "pages_a04_newshistory_a04_frontend_미해결_사항", + "pages_a04_newshistory_a04_frontend_반응형", + "pages_a04_newshistory_a04_frontend_스타일_css", + "pages_a04_newshistory_a04_frontend_의존성", + "pages_a04_newshistory_a04_frontend_컴포넌트_섹션_빌더", + "pages_a04_newshistory_a04_frontend_파일_구조" + ], + "11": [ + "pages_a07_register_a07_frontend", + "pages_a07_register_a07_frontend_a07_register_frontend", + "pages_a07_register_a07_frontend_api_클라이언트_함수", + "pages_a07_register_a07_frontend_로컬라이제이션", + "pages_a07_register_a07_frontend_스타일_css", + "pages_a07_register_a07_frontend_약관_동의_아코디언", + "pages_a07_register_a07_frontend_의존성", + "pages_a07_register_a07_frontend_이벤트_핸들러", + "pages_a07_register_a07_frontend_제출_로직_2단계_폼_전환", + "pages_a07_register_a07_frontend_컴포넌트_함수_ui_auth_page_실사용", + "pages_a07_register_a07_frontend_파일_구조" + ], + "12": [ + "pages_a08_support_a08_frontend", + "pages_a08_support_a08_frontend_a08_support_frontend", + "pages_a08_support_a08_frontend_로컬라이제이션", + "pages_a08_support_a08_frontend_세션_자동_채움", + "pages_a08_support_a08_frontend_스타일_css", + "pages_a08_support_a08_frontend_의존성", + "pages_a08_support_a08_frontend_이벤트_핸들러", + "pages_a08_support_a08_frontend_제출_로직", + "pages_a08_support_a08_frontend_참고", + "pages_a08_support_a08_frontend_컴포넌트_함수", + "pages_a08_support_a08_frontend_파일_구조" + ], + "13": [ + "pages_b02_projregister_b02_frontend", + "pages_b02_projregister_b02_frontend_b02_projregister_frontend", + "pages_b02_projregister_b02_frontend_로컬라이제이션", + "pages_b02_projregister_b02_frontend_스타일_css", + "pages_b02_projregister_b02_frontend_의존성", + "pages_b02_projregister_b02_frontend_이벤트_핸들러", + "pages_b02_projregister_b02_frontend_입력_필드", + "pages_b02_projregister_b02_frontend_제출_로직", + "pages_b02_projregister_b02_frontend_참고", + "pages_b02_projregister_b02_frontend_컴포넌트_함수", + "pages_b02_projregister_b02_frontend_파일_구조" + ], + "14": [ + "pages_a01_home_a01_frontend", + "pages_a01_home_a01_frontend_a01_home_frontend", + "pages_a01_home_a01_frontend_hero_섹션", + "pages_a01_home_a01_frontend_로컬라이제이션", + "pages_a01_home_a01_frontend_세부_구현", + "pages_a01_home_a01_frontend_이벤트_핸들러", + "pages_a01_home_a01_frontend_주요_기능_섹션", + "pages_a01_home_a01_frontend_최신_소식_섹션", + "pages_a01_home_a01_frontend_컴포넌트", + "pages_a01_home_a01_frontend_파일_구조" + ], + "15": [ + "pages_a05_edudetail_a05_frontend", + "pages_a05_edudetail_a05_frontend_a05_edudetail_frontend", + "pages_a05_edudetail_a05_frontend_css_클래스_구조", + "pages_a05_edudetail_a05_frontend_로컬라이제이션", + "pages_a05_edudetail_a05_frontend_반응형", + "pages_a05_edudetail_a05_frontend_스타일_css", + "pages_a05_edudetail_a05_frontend_의존성", + "pages_a05_edudetail_a05_frontend_이벤트_핸들러", + "pages_a05_edudetail_a05_frontend_컴포넌트_섹션_빌더", + "pages_a05_edudetail_a05_frontend_파일_구조" + ], + "16": [ + "pages_a06_login_a06_frontend", + "pages_a06_login_a06_frontend_a06_login_frontend", + "pages_a06_login_a06_frontend_api_클라이언트_함수", + "pages_a06_login_a06_frontend_로컬라이제이션", + "pages_a06_login_a06_frontend_스타일_css", + "pages_a06_login_a06_frontend_의존성", + "pages_a06_login_a06_frontend_이벤트_핸들러", + "pages_a06_login_a06_frontend_제출_및_otp_제어_로직_2단계_폼_전환", + "pages_a06_login_a06_frontend_컴포넌트_함수", + "pages_a06_login_a06_frontend_파일_구조" + ], + "17": [ + "pages_a08_support_a08_backend", + "pages_a08_support_a08_backend_a08_support_backend", + "pages_a08_support_a08_backend_api_엔드포인트", + "pages_a08_support_a08_backend_db_저장_컬럼_실_코드_insert_기준", + "pages_a08_support_a08_backend_내부_헬퍼", + "pages_a08_support_a08_backend_요청_스키마_pydantic", + "pages_a08_support_a08_backend_의존성_공통_유틸", + "pages_a08_support_a08_backend_접수_로직", + "pages_a08_support_a08_backend_특징", + "pages_a08_support_a08_backend_파일_구조" + ], + "18": [ + "pages_a09_security_a09_frontend", + "pages_a09_security_a09_frontend_a09_security_frontend", + "pages_a09_security_a09_frontend_api_클라이언트_함수_미사용_정의만", + "pages_a09_security_a09_frontend_로컬라이제이션", + "pages_a09_security_a09_frontend_스타일_css", + "pages_a09_security_a09_frontend_약관_데이터_a09_security_terms_ts", + "pages_a09_security_a09_frontend_약관_텍스트와_실_코드_불일치", + "pages_a09_security_a09_frontend_의존성", + "pages_a09_security_a09_frontend_컴포넌트_함수", + "pages_a09_security_a09_frontend_파일_구조" + ], + "19": [ + "pages_b02_projregister_b02_backend", + "pages_b02_projregister_b02_backend_api_엔드포인트", + "pages_b02_projregister_b02_backend_b02_projregister_backend", + "pages_b02_projregister_b02_backend_db_저장_컬럼_projects_insert", + "pages_b02_projregister_b02_backend_생성_로직_create_project_트랜잭션", + "pages_b02_projregister_b02_backend_요청_응답_스키마_pydantic", + "pages_b02_projregister_b02_backend_의존성_공통_유틸", + "pages_b02_projregister_b02_backend_참고", + "pages_b02_projregister_b02_backend_파일_구조", + "pages_b02_projregister_b02_backend_함수" + ], + "20": [ + "pages_b04_preprocess_b04_backend", + "pages_b04_preprocess_b04_backend_2d_gis_미표시_원인_분석_및_조치", + "pages_b04_preprocess_b04_backend_b04_preprocess_backend", + "pages_b04_preprocess_b04_backend_구현_예외_처리_검토_항목_plan", + "pages_b04_preprocess_b04_backend_설정_및_환경_파일_정합성", + "pages_b04_preprocess_b04_backend_수치지형도_도엽_오버레이_아키텍처_2026_07_26_2026_08_01_s8_개편", + "pages_b04_preprocess_b04_backend_엔진_서브모듈", + "pages_b04_preprocess_b04_backend_워크플로우_상태_전이_및_자동_확정", + "pages_b04_preprocess_b04_backend_주요_함수_router_repository_engine_utility", + "pages_b04_preprocess_b04_backend_파일_구성_오케스트레이터_저장소_라우터" + ], + "21": [ + "pages_b04_preprocess_b04_frontend", + "pages_b04_preprocess_b04_frontend_3d_뷰어_dom_마운트_버그_수리", + "pages_b04_preprocess_b04_frontend_3d_뷰어_테마_연동_및_가독성_개선", + "pages_b04_preprocess_b04_frontend_3d_카메라_커서_피봇_2d_오버레이_ui_개선_2026_08_01_02_일원화", + "pages_b04_preprocess_b04_frontend_b04_preprocess_frontend", + "pages_b04_preprocess_b04_frontend_계획서와_실_코드_불일치_3d_뷰어", + "pages_b04_preprocess_b04_frontend_의존성", + "pages_b04_preprocess_b04_frontend_처리_흐름", + "pages_b04_preprocess_b04_frontend_컴포넌트_api_함수", + "pages_b04_preprocess_b04_frontend_파일_구조" + ], + "22": [ + "pages_b05_profile_b05_structures", + "pages_b05_profile_b05_structures_api", + "pages_b05_profile_b05_structures_b05_구조물_정본_통합_편집", + "pages_b05_profile_b05_structures_b06_경계와_남은_범위", + "pages_b05_profile_b05_structures_검증", + "pages_b05_profile_b05_structures_배수관_시설_옵션", + "pages_b05_profile_b05_structures_백엔드_파일", + "pages_b05_profile_b05_structures_유역_추천_개략_단면", + "pages_b05_profile_b05_structures_정본과_타입_레지스트리", + "pages_b05_profile_b05_structures_프론트엔드_파일과_동작" + ], + "23": [ + "pages_b06_section_b06_frontend", + "pages_b06_section_b06_frontend_2026_08_22_파일_한계_정리", + "pages_b06_section_b06_frontend_api_클라이언트", + "pages_b06_section_b06_frontend_b06_section_frontend", + "pages_b06_section_b06_frontend_svg_렌더러_및_유틸리티", + "pages_b06_section_b06_frontend_ui_패널_크기_및_리사이저_규칙_2026_08_02_신설", + "pages_b06_section_b06_frontend_기술부채_해결됨", + "pages_b06_section_b06_frontend_입력_옵션_표시_옵션_및_횡단_반폭_제어", + "pages_b06_section_b06_frontend_파일_구성", + "pages_b06_section_b06_frontend_화면_workflow_조회_및_확정_전용" + ], + "24": [ + "pages_a03_compdetail_a03_frontend", + "pages_a03_compdetail_a03_frontend_a03_compdetail_frontend", + "pages_a03_compdetail_a03_frontend_css_클래스_구조", + "pages_a03_compdetail_a03_frontend_로컬라이제이션", + "pages_a03_compdetail_a03_frontend_반응형", + "pages_a03_compdetail_a03_frontend_스타일_css", + "pages_a03_compdetail_a03_frontend_의존성", + "pages_a03_compdetail_a03_frontend_컴포넌트_섹션_빌더", + "pages_a03_compdetail_a03_frontend_파일_구조" + ], + "25": [ + "pages_a06_login_a06_backend", + "pages_a06_login_a06_backend_a06_login_backend", + "pages_a06_login_a06_backend_api_엔드포인트", + "pages_a06_login_a06_backend_내부_헬퍼", + "pages_a06_login_a06_backend_로그인_로직_흐름", + "pages_a06_login_a06_backend_보안_정책_실_코드_기준", + "pages_a06_login_a06_backend_요청_스키마_pydantic", + "pages_a06_login_a06_backend_의존성_공통_유틸", + "pages_a06_login_a06_backend_파일_구조" + ], + "26": [ + "concepts_mass_haul_diagram", + "concepts_mass_haul_diagram_1_개요_및_분석_목적", + "concepts_mass_haul_diagram_2_주요_계산_수식_및_원리_실무_관례_반영", + "concepts_mass_haul_diagram_3_지반유형별_토량환산계수_기본값_config_system_py", + "concepts_mass_haul_diagram_4_토공_운반장비_선정거리_및_분배_기준_config_system_py", + "concepts_mass_haul_diagram_5_유토곡선_곡선_사양_b06_구현_v2", + "concepts_mass_haul_diagram_6_웹앱_연동_및_시각화_명세_2026_08_02_확정", + "concepts_mass_haul_diagram_유토곡선_mass_haul_diagram_계산_명세", + "pages_B08_Quantity_B08_overview_2026_09" + ], + "27": [ + "pages_a07_register_a07_backend", + "pages_a07_register_a07_backend_a07_register_backend", + "pages_a07_register_a07_backend_api_엔드포인트", + "pages_a07_register_a07_backend_가입_로직_흐름", + "pages_a07_register_a07_backend_요청_스키마_pydantic", + "pages_a07_register_a07_backend_의존성_공통_유틸", + "pages_a07_register_a07_backend_참고", + "pages_a07_register_a07_backend_파일_구조" + ], + "28": [ + "pages_b06_section_b06_culvert_controls", + "pages_b06_section_b06_culvert_controls_4축_조작과_재질", + "pages_b06_section_b06_culvert_controls_b06_배수관_구조물_조작_표시", + "pages_b06_section_b06_culvert_controls_계산_보기_분리", + "pages_b06_section_b06_culvert_controls_구현_파일", + "pages_b06_section_b06_culvert_controls_자체검증_기록", + "pages_b06_section_b06_culvert_controls_조정창", + "pages_b06_section_b06_culvert_controls_집수정_9키_조작" + ], + "29": [ + "pages_b06_section_b06_revetment_link_controls", + "pages_b06_section_b06_revetment_link_controls_b06_기슭막이_연동_경사_단별_제어", + "pages_b06_section_b06_revetment_link_controls_검증", + "pages_b06_section_b06_revetment_link_controls_단별_구간값", + "pages_b06_section_b06_revetment_link_controls_선택과_하이라이트", + "pages_b06_section_b06_revetment_link_controls_연동과_경사", + "pages_b06_section_b06_revetment_link_controls_정본과_공용_모델", + "pages_b06_section_b06_revetment_link_controls_형태와_조정창" + ], + "30": [ + "pages_b08_designdetail_b08_backend", + "pages_b08_designdetail_b08_backend_b08_designdetail_backend", + "pages_b08_designdetail_b08_backend_도각_템플릿_변환_및_종단도_a1_도각_병합_2026_07_26", + "pages_b08_designdetail_b08_backend_도면_관리_종단_30측점_분할_cad_수량산출표_및_도면_템플릿_파이프라인", + "pages_b08_designdetail_b08_backend_워크플로우_게이팅_연동", + "pages_b08_designdetail_b08_backend_종단도_30측점_n분할_및_납품_양식_측점_테이블_2026_07_25_n_1_1", + "pages_b08_designdetail_b08_backend_현재_책임_경계", + "pages_b08_designdetail_b08_backend_횡단도_4개_선별_레이어_및_cad_수량산출표_2026_07_25_n_1_2_n_1_3" + ], + "31": [ + "pages_b08_designdetail_b08_drawing_masshaul_watershed", + "pages_b08_designdetail_b08_drawing_masshaul_watershed_b08_토적도_수리집수면적유역도", + "pages_b08_designdetail_b08_drawing_masshaul_watershed_검증_한계", + "pages_b08_designdetail_b08_drawing_masshaul_watershed_구현_검증_완료", + "pages_b08_designdetail_b08_drawing_masshaul_watershed_남은_결정", + "pages_b08_designdetail_b08_drawing_masshaul_watershed_데이터_흐름", + "pages_b08_designdetail_b08_drawing_masshaul_watershed_도면_기준", + "pages_b08_designdetail_b08_drawing_masshaul_watershed_유역_정보표" + ], + "32": [ + "pages_b09_estimation_b09_frontend", + "pages_b09_estimation_b09_frontend_b09_estimation_frontend", + "pages_b09_estimation_b09_frontend_로컬라이제이션", + "pages_b09_estimation_b09_frontend_백엔드_db_미착수", + "pages_b09_estimation_b09_frontend_의존성", + "pages_b09_estimation_b09_frontend_참고", + "pages_b09_estimation_b09_frontend_컴포넌트_함수", + "pages_b09_estimation_b09_frontend_파일_구조" + ], + "33": [ + "architecture_implementation_status", + "architecture_implementation_status_구현_상태_용어", + "architecture_implementation_status_단계별_판정", + "architecture_implementation_status_미결_설계", + "architecture_implementation_status_반드시_유지할_구분", + "architecture_implementation_status_비워크플로_영역_판정", + "architecture_implementation_status_현재_구현_현황_소스_읽기_감사" + ], + "34": [ + "concepts_db_schema_structure_output", + "concepts_db_schema_structure_output_db_구조물_수량_산출물_테이블", + "concepts_db_schema_structure_output_output_files_개별_산출_파일_리스트", + "concepts_db_schema_structure_output_outputs_최종_견적_도면_산출_세션", + "concepts_db_schema_structure_output_quantity_items_수량_산출_항목", + "concepts_db_schema_structure_output_quantity_items_총비용_계산_예", + "concepts_db_schema_structure_output_structures_배치_구조물" + ], + "35": [ + "pages_b01_dashboard_b01_backend", + "pages_b01_dashboard_b01_backend_b01_dashboard_backend", + "pages_b01_dashboard_b01_backend_기술부채", + "pages_b01_dashboard_b01_backend_라우터_권한_헬퍼", + "pages_b01_dashboard_b01_backend_세분화_백엔드_위키_명세", + "pages_b01_dashboard_b01_backend_요청_스키마", + "pages_b01_dashboard_b01_backend_저장소_및_삭제_함수" + ], + "36": [ + "pages_b01_dashboard_b01_frontend", + "pages_b01_dashboard_b01_frontend_b01_dashboard_frontend", + "pages_b01_dashboard_b01_frontend_ui_권한_헬퍼", + "pages_b01_dashboard_b01_frontend_공유_자원_연결", + "pages_b01_dashboard_b01_frontend_모달", + "pages_b01_dashboard_b01_frontend_분할된_ui_컴포넌트_파일", + "pages_b01_dashboard_b01_frontend_파일과_진입점" + ], + "37": [ + "pages_b03_fileinput_b03_backend", + "pages_b03_fileinput_b03_backend_b03_fileinput_backend", + "pages_b03_fileinput_b03_backend_workflow_알림", + "pages_b03_fileinput_b03_backend_메타데이터_분석_및_파일_지문", + "pages_b03_fileinput_b03_backend_임시_보관함_r2_temp_upload", + "pages_b03_fileinput_b03_backend_입력_검증_파일_처리", + "pages_b03_fileinput_b03_backend_저장소_및_초기화" + ], + "38": [ + "pages_b05_profile_b05_corridor_turn_correction_plan", + "pages_b05_profile_b05_corridor_turn_correction_plan_b05_급선회_3d_국부_보정_계획", + "pages_b05_profile_b05_corridor_turn_correction_plan_구조물_연동", + "pages_b05_profile_b05_corridor_turn_correction_plan_국부_패치_절차", + "pages_b05_profile_b05_corridor_turn_correction_plan_목적과_경계", + "pages_b05_profile_b05_corridor_turn_correction_plan_완료_조건", + "pages_b05_profile_b05_corridor_turn_correction_plan_확인된_노견_확장_회귀" + ], + "39": [ + "pages_b06_section_b06_culvert_basin_multitier", + "pages_b06_section_b06_culvert_basin_multitier_b06_집수정_다단_기슭막이", + "pages_b06_section_b06_culvert_basin_multitier_미결", + "pages_b06_section_b06_culvert_basin_multitier_유입_구조물", + "pages_b06_section_b06_culvert_basin_multitier_유출_성토부_다단", + "pages_b06_section_b06_culvert_basin_multitier_자체검증_기록", + "pages_b06_section_b06_culvert_basin_multitier_집수정_계류측_성토부" + ], + "40": [ + "pages_b06_section_b06_culvert_geometry_redesign", + "pages_b06_section_b06_culvert_geometry_redesign_b06_배수관_구조물_기하_조작_체계", + "pages_b06_section_b06_culvert_geometry_redesign_검증_상태", + "pages_b06_section_b06_culvert_geometry_redesign_구현_파일", + "pages_b06_section_b06_culvert_geometry_redesign_기슭막이_관_핵심_규칙", + "pages_b06_section_b06_culvert_geometry_redesign_설계선_트림", + "pages_b06_section_b06_culvert_geometry_redesign_접속선" + ], + "41": [ + "pages_b06_section_b06_culvert_set", + "pages_b06_section_b06_culvert_set_b06_배수관_횡단도_세트", + "pages_b06_section_b06_culvert_set_검증_근거와_후속", + "pages_b06_section_b06_culvert_set_계획선_규칙", + "pages_b06_section_b06_culvert_set_구현_항목", + "pages_b06_section_b06_culvert_set_입력_판정", + "pages_b06_section_b06_culvert_set_형상_표시_순서_2026_08_20_스냅샷" + ], + "42": [ + "pages_b10_payment_b10_frontend", + "pages_b10_payment_b10_frontend_b10_payment_frontend", + "pages_b10_payment_b10_frontend_로컬라이제이션", + "pages_b10_payment_b10_frontend_비즈니스_로직_전제_목업", + "pages_b10_payment_b10_frontend_의존성", + "pages_b10_payment_b10_frontend_주요_컴포넌트_및_함수_mockup", + "pages_b10_payment_b10_frontend_파일_구조" + ], + "43": [ + "pages_b11_status_b11_frontend", + "pages_b11_status_b11_frontend_b11_status_frontend", + "pages_b11_status_b11_frontend_결재_상태_흐름_payment_flow_status", + "pages_b11_status_b11_frontend_로컬라이제이션", + "pages_b11_status_b11_frontend_의존성", + "pages_b11_status_b11_frontend_주요_컴포넌트_및_기능_mockup", + "pages_b11_status_b11_frontend_파일_구조" + ], + "44": [ + "concepts_db_schema_overview", + "concepts_db_schema_overview_db_스키마_개요", + "concepts_db_schema_overview_설계_원칙", + "concepts_db_schema_overview_테이블_관계_핵심_흐름", + "concepts_db_schema_overview_테이블_그룹_9개", + "concepts_db_schema_overview_파일_경로_추적_컬럼_db에_경로만_기록_실_파일은_파일시스템", + "concepts_storage_paths", + "concepts_storage_paths_db_컬럼_실제_경로_매핑", + "concepts_storage_paths_경로_패턴", + "concepts_storage_paths_원칙_backend_md_3절", + "concepts_storage_paths_저장_경로_규칙_workflow_based_folder_structure", + "concepts_storage_paths_코드_감사_주의사항", + "concepts_storage_paths_파일명_규칙_structure_md_1절" + ], + "45": [ + "concepts_db_schema_projects", + "concepts_db_schema_projects_db_프로젝트_관리_테이블", + "concepts_db_schema_projects_project_automations_프로젝트_자동화_정책", + "concepts_db_schema_projects_project_versions_프로젝트_버전_스냅샷", + "concepts_db_schema_projects_project_workflow_stages_단계별_상세_상태", + "concepts_db_schema_projects_projects_프로젝트" + ], + "46": [ + "concepts_law_source_quality", + "concepts_law_source_quality_결함_유형_예시_위_파일_기준_줄번호", + "concepts_law_source_quality_원인_추정", + "concepts_law_source_quality_임도기술교본_원문_md_추출_품질_결함", + "concepts_law_source_quality_조치_상태", + "concepts_law_source_quality_확인_범위", + "concepts_standard_drawing_cost_inputs" + ], + "47": [ + "pages_a01_home_a01_components", + "pages_a01_home_a01_components_a01_home_세부_구현", + "pages_a01_home_a01_components_데이터_흐름", + "pages_a01_home_a01_components_미해결", + "pages_a01_home_a01_components_스타일", + "pages_a01_home_a01_components_의존성" + ], + "48": [ + "pages_a02_progdetail_a02_components", + "pages_a02_progdetail_a02_components_a02_progdetail_세부_구현", + "pages_a02_progdetail_a02_components_데이터_흐름", + "pages_a02_progdetail_a02_components_미해결_특이사항", + "pages_a02_progdetail_a02_components_스타일_css", + "pages_a02_progdetail_a02_components_의존성" + ], + "49": [ + "pages_a02_progdetail_a02_frontend", + "pages_a02_progdetail_a02_frontend_a02_progdetail_frontend", + "pages_a02_progdetail_a02_frontend_구조", + "pages_a02_progdetail_a02_frontend_세부_구현", + "pages_a02_progdetail_a02_frontend_제약_준수", + "pages_a02_progdetail_a02_frontend_컴포넌트_분석" + ], + "50": [ + "pages_b01_dashboard_b01_api", + "pages_b01_dashboard_b01_api_b01_dashboard_api", + "pages_b01_dashboard_b01_api_사용자_회사", + "pages_b01_dashboard_b01_api_시스템_관리자", + "pages_b01_dashboard_b01_api_프로젝트_자동화", + "pages_b01_dashboard_b01_api_회사_관리자" + ], + "51": [ + "pages_b03_fileinput_b03_frontend", + "pages_b03_fileinput_b03_frontend_api_클라이언트", + "pages_b03_fileinput_b03_frontend_b03_fileinput_frontend", + "pages_b03_fileinput_b03_frontend_ui_지원_유틸리티_분할_완료", + "pages_b03_fileinput_b03_frontend_브라우저_상태_오프라인_보조", + "pages_b03_fileinput_b03_frontend_페이지_업로드_흐름" + ], + "52": [ + "pages_b05_profile_b05_corridor_surface", + "pages_b05_profile_b05_corridor_surface_b05_계획노선_코리도_삼각망_서피스", + "pages_b05_profile_b05_corridor_surface_검증", + "pages_b05_profile_b05_corridor_surface_저장_호환성", + "pages_b05_profile_b05_corridor_surface_진행_중_계획", + "pages_b05_profile_b05_corridor_surface_프론트엔드_구성" + ], + "53": [ + "pages_b05_profile_b05_profile_plan_2026_08_18", + "pages_b05_profile_b05_profile_plan_2026_08_18_2026_08_18_b05_페이지_개선_2차_계획_기록", + "pages_b05_profile_b05_profile_plan_2026_08_18_2026_08_18_사이드_패널_입력_로직_계획_기록", + "pages_b05_profile_b05_profile_plan_2026_08_18_b05_b06_구조물_적용_범위", + "pages_b05_profile_b05_profile_plan_2026_08_18_b05_구조물_ui_현재_계획", + "pages_b05_profile_b05_profile_plan_2026_08_18_후속_결정_대기" + ], + "54": [ + "pages_b05_profile_b05_profile_plan_2026_08_19", + "pages_b05_profile_b05_profile_plan_2026_08_19_b05_구조물_입력_종단_표시_정비_2026_08_19", + "pages_b05_profile_b05_profile_plan_2026_08_19_기록된_검증", + "pages_b05_profile_b05_profile_plan_2026_08_19_기준_해석_보류", + "pages_b05_profile_b05_profile_plan_2026_08_19_완료_범위", + "pages_b05_profile_b05_profile_plan_2026_08_19_주요_항목" + ], + "55": [ + "architecture_project_map", + "architecture_project_map_aislo_프로젝트_지도", + "architecture_project_map_명칭_판정", + "architecture_project_map_탐색_순서", + "architecture_project_map_현재_명칭과_책임", + "architecture_workflow_data_flow", + "b08_designdetail_b08_frontend", + "concepts_quantity_cost_contract", + "pages_B07_DesignDetail_B07_frontend", + "pages_B07_DesignDetail_B07_standard_drawings_2026_09", + "pages_B09_Estimation_B09_overview_2026_09" + ], + "56": [ + "pages_b08_designdetail_b08_cross_structure_sheets", + "pages_b08_designdetail_b08_cross_structure_sheets_b08_횡단도_구조물_장_배치", + "pages_b08_designdetail_b08_cross_structure_sheets_결과", + "pages_b08_designdetail_b08_cross_structure_sheets_데이터_구현_흐름", + "pages_b08_designdetail_b08_cross_structure_sheets_문제와_결정", + "pages_b08_designdetail_b08_cross_structure_sheets_한계" + ], + "57": [ + "b05_profile_b05_backend", + "concepts_completed_2026_09_07", + "pages_b06_section_b06_backend", + "pages_b07_quantity_b07_frontend", + "pages_b07_quantity_b07_frontend_b07_quantity_frontend", + "pages_b07_quantity_b07_frontend_현재_사용자_동작" + ], + "58": [ + "concepts_b07_external_webcad_demos", + "concepts_b07_external_webcad_demos_b07_외부_webcad_비교_실행환경", + "concepts_b07_external_webcad_demos_검증_상태", + "concepts_b07_external_webcad_demos_라이선스_주의", + "concepts_b07_external_webcad_demos_실행과_종료" + ], + "59": [ + "concepts_temp_upload", + "concepts_temp_upload_temp_upload_프로젝트_생성_전_임시_보관함", + "concepts_temp_upload_사용처", + "concepts_temp_upload_주요_개념_및_스펙", + "concepts_temp_upload_주요_구성_요소" + ], + "60": [ + "graphify_out_memory_query_20260821_070423_배수관_매설시_각도의_제약조건이_있는지_확인해줘_임도에서", + "graphify_out_memory_query_20260821_070423_배수관_매설시_각도의_제약조건이_있는지_확인해줘_임도에서_answer", + "graphify_out_memory_query_20260821_070423_배수관_매설시_각도의_제약조건이_있는지_확인해줘_임도에서_outcome", + "graphify_out_memory_query_20260821_070423_배수관_매설시_각도의_제약조건이_있는지_확인해줘_임도에서_q_배수관_매설시_각도의_제약조건이_있는지_확인해줘_임도에서", + "graphify_out_memory_query_20260821_070423_배수관_매설시_각도의_제약조건이_있는지_확인해줘_임도에서_source_nodes" + ], + "61": [ + "graphify_out_memory_query_20260821_101018_임도_기술정보db에서_집수정의_형태정보는_어떤게_있는지_확인해줘", + "graphify_out_memory_query_20260821_101018_임도_기술정보db에서_집수정의_형태정보는_어떤게_있는지_확인해줘_answer", + "graphify_out_memory_query_20260821_101018_임도_기술정보db에서_집수정의_형태정보는_어떤게_있는지_확인해줘_outcome", + "graphify_out_memory_query_20260821_101018_임도_기술정보db에서_집수정의_형태정보는_어떤게_있는지_확인해줘_q_임도_기술정보db에서_집수정의_형태정보는_어떤게_있는지_확인해줘", + "graphify_out_memory_query_20260821_101018_임도_기술정보db에서_집수정의_형태정보는_어떤게_있는지_확인해줘_source_nodes" + ], + "62": [ + "pages_b02_projregister_b02_db", + "pages_b02_projregister_b02_db_b02_projregister_db", + "pages_b02_projregister_b02_db_쓰는_테이블", + "pages_b02_projregister_b02_db_저장소_파일시스템", + "pages_b02_projregister_b02_db_참고_계획_당시_의도" + ], + "63": [ + "pages_b03_fileinput_b03_api", + "pages_b03_fileinput_b03_api_b03_fileinput_api", + "pages_b03_fileinput_b03_api_workflow_조회", + "pages_b03_fileinput_b03_api_일반_업로드", + "pages_b03_fileinput_b03_api_청크_업로드" + ], + "64": [ + "pages_b04_preprocess_b04_db", + "pages_b04_preprocess_b04_db_b04_preprocess_db", + "pages_b04_preprocess_b04_db_repository_함수", + "pages_b04_preprocess_b04_db_쓰는_테이블", + "pages_b04_preprocess_b04_db_참고" + ], + "65": [ + "pages_b05_profile_b05_api", + "pages_b05_profile_b05_api_api_스키마_및_반환_필드", + "pages_b05_profile_b05_api_b05_profile_api", + "pages_b05_profile_b05_api_post_project_id_route_confirm_요청_routeconfirmrequest", + "pages_b05_profile_b05_api_엔드포인트" + ], + "66": [ + "pages_b05_profile_b05_corridor_patch_finish", + "pages_b05_profile_b05_corridor_patch_finish_b05_변형_성토면_마감_날개_패치", + "pages_b05_profile_b05_corridor_patch_finish_세월교_날개_패치", + "pages_b05_profile_b05_corridor_patch_finish_저장_검증", + "pages_b05_profile_b05_corridor_patch_finish_패치_마감" + ], + "67": [ + "pages_b05_profile_b05_frontend_alignment", + "pages_b05_profile_b05_frontend_alignment_12행_도면_테이블_및_가로_스크롤_정렬_개편_ui_profile_table_ts_ui_profile_panel_ts", + "pages_b05_profile_b05_frontend_alignment_b05_profile_profile_alignment_table", + "pages_b05_profile_b05_frontend_alignment_비정규_측점_구조물_테이블_오버레이_런타임_검증_ui_profile_table_ts_ui_irregularstations_ts", + "pages_b05_profile_b05_frontend_alignment_종단_계획고_편집_인터랙션_ui_profile_edit_ts_ui_profile_panel_ts_ui_page_ts" + ], + "68": [ + "pages_b05_profile_b05_structure_stations", + "pages_b05_profile_b05_structure_stations_b05_구조물_비정규_측점_공급", + "pages_b05_profile_b05_structure_stations_검증", + "pages_b05_profile_b05_structure_stations_공급_경로", + "pages_b05_profile_b05_structure_stations_정본_규칙" + ], + "69": [ + "pages_b05_profile_frontend_b05_profile_ui_drainage_parts", + "pages_b05_profile_frontend_b05_profile_ui_drainage_parts_1_개요_및_역할", + "pages_b05_profile_frontend_b05_profile_ui_drainage_parts_2_주요_기능_및_함수", + "pages_b05_profile_frontend_b05_profile_ui_drainage_parts_3_의존성", + "pages_b05_profile_frontend_b05_profile_ui_drainage_parts_b05_profile_ui_drainage_parts_배수유역_공용_ui_파츠" + ], + "70": [ + "pages_b05_profile_frontend_ui_drainage_render", + "pages_b05_profile_frontend_ui_drainage_render_1_개요_및_역할", + "pages_b05_profile_frontend_ui_drainage_render_2_주요_기능_및_함수", + "pages_b05_profile_frontend_ui_drainage_render_3_의존성", + "pages_b05_profile_frontend_ui_drainage_render_ui_drainage_render_배수유역도_canvas_렌더러" + ], + "71": [ + "pages_b05_profile_frontend_ui_profile_structures", + "pages_b05_profile_frontend_ui_profile_structures_1_개요_및_역할", + "pages_b05_profile_frontend_ui_profile_structures_2_주요_기능_및_함수", + "pages_b05_profile_frontend_ui_profile_structures_3_의존성", + "pages_b05_profile_frontend_ui_profile_structures_ui_profile_structures_종단_구조물_렌더링_및_인터랙션" + ], + "72": [ + "pages_b05_profile_frontend_ui_selection", + "pages_b05_profile_frontend_ui_selection_1_개요_및_역할", + "pages_b05_profile_frontend_ui_selection_2_주요_기능_및_함수", + "pages_b05_profile_frontend_ui_selection_3_의존성", + "pages_b05_profile_frontend_ui_selection_ui_selection_배수_구조물_3자_선택_동기화" + ], + "73": [ + "pages_b06_section_b06_culvert_link_trim", + "pages_b06_section_b06_culvert_link_trim_b06_인접_측점_구조물_트림_정리", + "pages_b06_section_b06_culvert_link_trim_검증", + "pages_b06_section_b06_culvert_link_trim_원인과_경계", + "pages_b06_section_b06_culvert_link_trim_처리_항목" + ], + "74": [ + "pages_b06_section_b06_pavement_revetment", + "pages_b06_section_b06_pavement_revetment_b06_물넘이포장_콘크리트_포장_독립_기슭막이", + "pages_b06_section_b06_pavement_revetment_검증", + "pages_b06_section_b06_pavement_revetment_독립_기슭막이", + "pages_b06_section_b06_pavement_revetment_포장과_물넘이" + ], + "75": [ + "pages_b06_section_backend_b06_section_engine_areas", + "pages_b06_section_backend_b06_section_engine_areas_1_개요_및_역할", + "pages_b06_section_backend_b06_section_engine_areas_2_주요_기능_및_함수", + "pages_b06_section_backend_b06_section_engine_areas_3_의존성", + "pages_b06_section_backend_b06_section_engine_areas_b06_section_engine_areas_횡단_면적_적분_연산_엔진" + ], + "76": [ + "pages_b06_section_backend_b06_section_router_confirm", + "pages_b06_section_backend_b06_section_router_confirm_1_개요_및_역할", + "pages_b06_section_backend_b06_section_router_confirm_2_주요_기능_및_엔드포인트", + "pages_b06_section_backend_b06_section_router_confirm_3_의존성", + "pages_b06_section_backend_b06_section_router_confirm_b06_section_router_confirm_임시_저장_및_확정_라우터" + ], + "77": [ + "pages_b06_section_frontend_b06_section_ui_cross_areas", + "pages_b06_section_frontend_b06_section_ui_cross_areas_1_개요_및_역할", + "pages_b06_section_frontend_b06_section_ui_cross_areas_2_주요_기능_및_함수", + "pages_b06_section_frontend_b06_section_ui_cross_areas_3_의존성", + "pages_b06_section_frontend_b06_section_ui_cross_areas_b06_section_ui_cross_areas_횡단_단면적_표기_및_밴드_하이라이트" + ], + "78": [ + "pages_b06_section_frontend_b06_section_ui_cross_design", + "pages_b06_section_frontend_b06_section_ui_cross_design_1_개요_및_역할", + "pages_b06_section_frontend_b06_section_ui_cross_design_2_주요_기능_및_함수", + "pages_b06_section_frontend_b06_section_ui_cross_design_3_의존성", + "pages_b06_section_frontend_b06_section_ui_cross_design_b06_section_ui_cross_design_횡단_측점별_세부_설계_컨트롤" + ], + "79": [ + "pages_b06_section_frontend_b06_section_ui_masshaul", + "pages_b06_section_frontend_b06_section_ui_masshaul_1_개요_및_역할", + "pages_b06_section_frontend_b06_section_ui_masshaul_2_주요_기능_및_함수", + "pages_b06_section_frontend_b06_section_ui_masshaul_3_의존성", + "pages_b06_section_frontend_b06_section_ui_masshaul_b06_section_ui_masshaul_유토곡선_적분_계산_엔진" + ], + "80": [ + "pages_b06_section_frontend_b06_section_ui_masshaul_balance", + "pages_b06_section_frontend_b06_section_ui_masshaul_balance_1_개요_및_역할", + "pages_b06_section_frontend_b06_section_ui_masshaul_balance_2_주요_기능_및_알고리즘", + "pages_b06_section_frontend_b06_section_ui_masshaul_balance_3_의존성", + "pages_b06_section_frontend_b06_section_ui_masshaul_balance_b06_section_ui_masshaul_balance_평형선_및_장비_띠_분할_엔진" + ], + "81": [ + "pages_b06_section_frontend_b06_section_ui_masshaul_balance_view", + "pages_b06_section_frontend_b06_section_ui_masshaul_balance_view_1_개요_및_역할", + "pages_b06_section_frontend_b06_section_ui_masshaul_balance_view_2_주요_기능_및_렌더링", + "pages_b06_section_frontend_b06_section_ui_masshaul_balance_view_3_의존성", + "pages_b06_section_frontend_b06_section_ui_masshaul_balance_view_b06_section_ui_masshaul_balance_view_운반_띠_시각화_렌더러" + ], + "82": [ + "pages_b06_section_frontend_b06_section_ui_masshaul_balloon", + "pages_b06_section_frontend_b06_section_ui_masshaul_balloon_1_개요_및_역할", + "pages_b06_section_frontend_b06_section_ui_masshaul_balloon_2_주요_기능_및_알고리즘", + "pages_b06_section_frontend_b06_section_ui_masshaul_balloon_3_의존성", + "pages_b06_section_frontend_b06_section_ui_masshaul_balloon_b06_section_ui_masshaul_balloon_물량_말풍선_배치_및_조작" + ], + "83": [ + "pages_b06_section_frontend_b06_section_ui_masshaul_curve", + "pages_b06_section_frontend_b06_section_ui_masshaul_curve_1_개요_및_역할", + "pages_b06_section_frontend_b06_section_ui_masshaul_curve_2_주요_기능_및_기하_수학", + "pages_b06_section_frontend_b06_section_ui_masshaul_curve_3_의존성", + "pages_b06_section_frontend_b06_section_ui_masshaul_curve_b06_section_ui_masshaul_curve_유토곡선_궤적_보간_및_렌더링" + ], + "84": [ + "pages_b06_section_frontend_b06_section_ui_masshaul_settle", + "pages_b06_section_frontend_b06_section_ui_masshaul_settle_1_개요_및_역할", + "pages_b06_section_frontend_b06_section_ui_masshaul_settle_2_주요_기능_및_로직", + "pages_b06_section_frontend_b06_section_ui_masshaul_settle_3_의존성", + "pages_b06_section_frontend_b06_section_ui_masshaul_settle_b06_section_ui_masshaul_settle_토량_정산_및_장거리_상쇄_엔진" + ], + "85": [ + "pages_b06_section_frontend_b06_section_ui_masshaul_view", + "pages_b06_section_frontend_b06_section_ui_masshaul_view_1_개요_및_역할", + "pages_b06_section_frontend_b06_section_ui_masshaul_view_2_주요_기능_및_함수", + "pages_b06_section_frontend_b06_section_ui_masshaul_view_3_의존성", + "pages_b06_section_frontend_b06_section_ui_masshaul_view_b06_section_ui_masshaul_view_유토곡선_시각화_렌더러" + ], + "86": [ + "pages_b06_section_frontend_b06_section_ui_page", + "pages_b06_section_frontend_b06_section_ui_page_1_개요_및_역할", + "pages_b06_section_frontend_b06_section_ui_page_2_주요_기능_및_함수", + "pages_b06_section_frontend_b06_section_ui_page_3_의존성", + "pages_b06_section_frontend_b06_section_ui_page_b06_section_ui_page_b06_메인_페이지_오케스트레이터" + ], + "87": [ + "pages_b06_section_frontend_b06_section_ui_section_view", + "pages_b06_section_frontend_b06_section_ui_section_view_1_개요_및_역할", + "pages_b06_section_frontend_b06_section_ui_section_view_2_주요_기능_및_함수", + "pages_b06_section_frontend_b06_section_ui_section_view_3_의존성", + "pages_b06_section_frontend_b06_section_ui_section_view_b06_section_ui_section_view_종_횡단_및_유토곡선_뷰_조립" + ], + "88": [ + "pages_b07_quantity_b07_backend", + "pages_b07_quantity_b07_backend_b07_quantity_backend", + "pages_b07_quantity_b07_backend_구현되지_않은_항목", + "pages_b07_quantity_b07_backend_구현된_항목", + "pages_b07_quantity_b07_backend_책임_경계_미결" + ], + "89": [ + "pages_b08_designdetail_b08_cad_blocks", + "pages_b08_designdetail_b08_cad_blocks_b08_cad_블록_라이브러리_사진", + "pages_b08_designdetail_b08_cad_blocks_검증", + "pages_b08_designdetail_b08_cad_blocks_구현", + "pages_b08_designdetail_b08_cad_blocks_범위_결정" + ], + "90": [ + "pages_b08_designdetail_b08_cad_commands", + "pages_b08_designdetail_b08_cad_commands_b08_openwebcad_명령_체계", + "pages_b08_designdetail_b08_cad_commands_검증_제한", + "pages_b08_designdetail_b08_cad_commands_구현_범위", + "pages_b08_designdetail_b08_cad_commands_핵심_구성" + ], + "91": [ + "pages_b08_designdetail_b08_cad_table_entity", + "pages_b08_designdetail_b08_cad_table_entity_검증_후속", + "pages_b08_designdetail_b08_cad_table_entity_기능", + "pages_b08_designdetail_b08_cad_table_entity_모델", + "pages_b08_designdetail_b08_cad_table_entity_이관_범위" + ], + "92": [ + "architecture_public_admin_map", + "architecture_public_admin_map_공개_인증_관리_영역_지도", + "architecture_public_admin_map_공통_의존", + "architecture_public_admin_map_직접_구현_관계" + ], + "93": [ + "architecture_shared_resources", + "architecture_shared_resources_공유_자원_영향_지도", + "architecture_shared_resources_단계별_직접_연결", + "architecture_shared_resources_영향_분석_규칙" + ], + "94": [ + "pages_a00_common_a00_common", + "pages_a00_common_a00_common_a00_common_공통_프레임워크_유틸", + "pages_a00_common_a00_common_개요", + "pages_a00_common_a00_common_세분화_마크다운_문서_목록" + ], + "95": [ + "pages_a00_common_frontend_a00_common_appshell", + "pages_a00_common_frontend_a00_common_appshell_app_shell_ts", + "pages_a00_common_frontend_a00_common_appshell_연관_개념_및_의존성", + "pages_a00_common_frontend_a00_common_appshell_주요_함수_목록" + ], + "96": [ + "pages_a00_common_frontend_a00_common_router", + "pages_a00_common_frontend_a00_common_router_router_ts", + "pages_a00_common_frontend_a00_common_router_연관_개념_및_의존성", + "pages_a00_common_frontend_a00_common_router_주요_함수_목록" + ], + "97": [ + "pages_b04_preprocess_b04_api", + "pages_b04_preprocess_b04_api_b04_preprocess_api", + "pages_b04_preprocess_b04_api_엔드포인트", + "pages_b04_preprocess_b04_api_요청_응답_스키마_pydantic" + ], + "98": [ + "pages_b04_preprocess_b04_dependencies", + "pages_b04_preprocess_b04_dependencies_b04_preprocess_dependencies", + "pages_b04_preprocess_b04_dependencies_백엔드_python", + "pages_b04_preprocess_b04_dependencies_프론트엔드_typescript" + ], + "99": [ + "pages_b05_profile_b05_backend", + "pages_b05_profile_b05_backend_b05_profile_backend", + "pages_b05_profile_b05_backend_소스코드_1_1_세분화_위키_파일_목록", + "pages_b05_profile_b05_backend_핵심_백엔드_아키텍처_개요" + ], + "100": [ + "pages_b05_profile_b05_db", + "pages_b05_profile_b05_db_b05_profile_db_사용_관계", + "pages_b05_profile_b05_db_repository_함수", + "pages_b05_profile_b05_db_저장_경로" + ], + "101": [ + "pages_b05_profile_b05_frontend_viewer", + "pages_b05_profile_b05_frontend_viewer_3d_마커_직접_드래그_이동_0_old_i_401_이식", + "pages_b05_profile_b05_frontend_viewer_3d_지형_뷰포트_시각화_ui_viewer_ts_ui_markers_ts", + "pages_b05_profile_b05_frontend_viewer_b05_profile_3d_viewer_interaction" + ], + "102": [ + "pages_b05_profile_backend_b05_profile_engine_sections", + "pages_b05_profile_backend_b05_profile_engine_sections_런타임_검증_주의사항_2026_07_24_검증_보고서_기준", + "pages_b05_profile_backend_b05_profile_engine_sections_연관_개념_및_의존성", + "pages_b05_profile_backend_b05_profile_engine_sections_주요_함수_목록" + ], + "103": [ + "pages_b05_profile_frontend_b05_profile_api_fetch", + "pages_b05_profile_frontend_b05_profile_api_fetch_b05_profile_api_fetch_ts", + "pages_b05_profile_frontend_b05_profile_api_fetch_연관_개념_및_의존성", + "pages_b05_profile_frontend_b05_profile_api_fetch_주요_api_함수_목록" + ], + "104": [ + "pages_b05_profile_frontend_b05_profile_ui_drainage_panel", + "pages_b05_profile_frontend_b05_profile_ui_drainage_panel_b05_profile_ui_drainage_panel", + "pages_b05_profile_frontend_b05_profile_ui_drainage_panel_개요_및_특징", + "pages_b05_profile_frontend_b05_profile_ui_drainage_panel_주요_함수_심볼_목록" + ], + "105": [ + "pages_b05_profile_frontend_b05_profile_ui_drainage_pipes", + "pages_b05_profile_frontend_b05_profile_ui_drainage_pipes_b05_profile_ui_drainage_pipes", + "pages_b05_profile_frontend_b05_profile_ui_drainage_pipes_개요_및_특징", + "pages_b05_profile_frontend_b05_profile_ui_drainage_pipes_주요_함수_심볼_목록" + ], + "106": [ + "pages_b05_profile_frontend_b05_profile_ui_profile_panel", + "pages_b05_profile_frontend_b05_profile_ui_profile_panel_연관_개념_및_의존성", + "pages_b05_profile_frontend_b05_profile_ui_profile_panel_주요_기능_및_개선사항_2026_08_06", + "pages_b05_profile_frontend_b05_profile_ui_profile_panel_주요_함수_목록" + ], + "107": [ + "pages_b06_section_b06_db", + "pages_b06_section_b06_db_b06_section_db_사용_관계", + "pages_b06_section_b06_db_repository_함수", + "pages_b06_section_b06_db_파일_경로" + ], + "108": [ + "pages_b06_section_frontend_b06_section_api_fetch", + "pages_b06_section_frontend_b06_section_api_fetch_1_개요_및_역할", + "pages_b06_section_frontend_b06_section_api_fetch_2_주요_연동_api_함수", + "pages_b06_section_frontend_b06_section_api_fetch_b06_section_api_fetch_b06_프론트엔드_api_클라이언트" + ], + "109": [ + "pages_b06_section_frontend_b06_section_ui_standard_diagram", + "pages_b06_section_frontend_b06_section_ui_standard_diagram_1_개요_및_역할", + "pages_b06_section_frontend_b06_section_ui_standard_diagram_2_주요_기능", + "pages_b06_section_frontend_b06_section_ui_standard_diagram_b06_section_ui_standard_diagram_표준단면_모식도_컴포넌트" + ], + "110": [ + "pages_b06_section_frontend_b06_section_ui_standard_panel", + "pages_b06_section_frontend_b06_section_ui_standard_panel_1_개요_및_역할", + "pages_b06_section_frontend_b06_section_ui_standard_panel_2_주요_기능", + "pages_b06_section_frontend_b06_section_ui_standard_panel_b06_section_ui_standard_panel_표준단면_입력_및_제어_패널" + ], + "111": [ + "pages_b08_designdetail_b08_dependencies", + "pages_b08_designdetail_b08_dependencies_b08_designdetail_dependencies", + "pages_b08_designdetail_b08_dependencies_backend_requirements_txt", + "pages_b08_designdetail_b08_dependencies_frontend_package_json_tsconfig_json" + ], + "112": [ + "concepts_common_util_common_util_project_delete", + "concepts_common_util_common_util_project_delete_역참조_사용처", + "concepts_common_util_common_util_project_delete_주요_함수_목록" + ], + "113": [ + "concepts_common_util_common_util_storage", + "concepts_common_util_common_util_storage_역참조_사용처", + "concepts_common_util_common_util_storage_주요_함수_목록" + ], + "114": [ + "concepts_common_util_common_util_workflow_state", + "concepts_common_util_common_util_workflow_state_역참조_사용처", + "concepts_common_util_common_util_workflow_state_주요_함수_목록" + ], + "115": [ + "concepts_db_schema_unconfirmed_readme", + "concepts_db_schema_unconfirmed_readme_미확정_테이블_보관소_unconfirmed_db_schemas", + "concepts_db_schema_unconfirmed_readme_운영_규칙" + ], + "116": [ + "pages_a01_home_frontend_a01_home_ui_page", + "pages_a01_home_frontend_a01_home_ui_page_연관_개념_및_의존성", + "pages_a01_home_frontend_a01_home_ui_page_주요_함수_및_인터페이스_목록" + ], + "117": [ + "pages_a02_progdetail_frontend_a02_progdetail_ui_page", + "pages_a02_progdetail_frontend_a02_progdetail_ui_page_연관_개념_및_의존성", + "pages_a02_progdetail_frontend_a02_progdetail_ui_page_주요_함수_목록" + ], + "118": [ + "pages_a06_login_backend_a06_login_router", + "pages_a06_login_backend_a06_login_router_라우터_api_및_주요_헬퍼_함수_목록", + "pages_a06_login_backend_a06_login_router_연관_개념_및_의존성" + ], + "119": [ + "pages_a07_register_backend_a07_register_router", + "pages_a07_register_backend_a07_register_router_라우터_api_및_주요_함수_목록", + "pages_a07_register_backend_a07_register_router_연관_개념_및_의존성" + ], + "120": [ + "pages_a08_support_backend_a08_support_router", + "pages_a08_support_backend_a08_support_router_라우터_api_및_주요_함수_목록", + "pages_a08_support_backend_a08_support_router_연관_개념_및_의존성" + ], + "121": [ + "pages_a09_security_backend_a09_security_router", + "pages_a09_security_backend_a09_security_router_라우터_api_및_주요_함수_목록", + "pages_a09_security_backend_a09_security_router_연관_개념_및_의존성" + ], + "122": [ + "pages_b01_dashboard_b01_db", + "pages_b01_dashboard_b01_db_b01_dashboard_db_사용_관계", + "pages_b01_dashboard_b01_db_트랜잭션_경계" + ], + "123": [ + "pages_b01_dashboard_b01_dependencies", + "pages_b01_dashboard_b01_dependencies_b01_dashboard_dependencies", + "pages_b01_dashboard_b01_dependencies_프로젝트_공통_모듈" + ], + "124": [ + "pages_b01_dashboard_backend_b01_dashboard_router", + "pages_b01_dashboard_backend_b01_dashboard_router_라우터_api_및_주요_함수_목록", + "pages_b01_dashboard_backend_b01_dashboard_router_연관_개념_및_의존성" + ], + "125": [ + "pages_b01_dashboard_frontend_b01_dashboard_ui_page", + "pages_b01_dashboard_frontend_b01_dashboard_ui_page_연관_개념_및_의존성", + "pages_b01_dashboard_frontend_b01_dashboard_ui_page_주요_함수_목록" + ], + "126": [ + "pages_b02_projregister_backend_b02_projregister_router", + "pages_b02_projregister_backend_b02_projregister_router_연관_개념_및_의존성", + "pages_b02_projregister_backend_b02_projregister_router_주요_함수_목록" + ], + "127": [ + "pages_b03_fileinput_b03_db", + "pages_b03_fileinput_b03_db_b03_fileinput_db_사용_관계", + "pages_b03_fileinput_b03_db_파일_경로" + ], + "128": [ + "pages_b03_fileinput_b03_dependencies", + "pages_b03_fileinput_b03_dependencies_b03_fileinput_dependencies", + "pages_b03_fileinput_b03_dependencies_공통_모듈" + ], + "129": [ + "pages_b03_fileinput_backend_b03_fileinput_router", + "pages_b03_fileinput_backend_b03_fileinput_router_연관_개념_및_의존성", + "pages_b03_fileinput_backend_b03_fileinput_router_주요_함수_목록" + ], + "130": [ + "pages_b04_preprocess_backend_b04_preprocess_router", + "pages_b04_preprocess_backend_b04_preprocess_router_연관_개념_및_의존성", + "pages_b04_preprocess_backend_b04_preprocess_router_주요_함수_목록" + ], + "131": [ + "pages_b05_profile_b05_dependencies", + "pages_b05_profile_b05_dependencies_b05_profile_dependencies", + "pages_b05_profile_b05_dependencies_페이지_파일별_연결" + ], + "132": [ + "pages_b05_profile_backend_b05_profile_engine_grade", + "pages_b05_profile_backend_b05_profile_engine_grade_연관_개념_및_의존성", + "pages_b05_profile_backend_b05_profile_engine_grade_주요_클래스_및_함수_목록" + ], + "133": [ + "pages_b05_profile_backend_b05_profile_engine_solver", + "pages_b05_profile_backend_b05_profile_engine_solver_엔진_핵심_함수_목록", + "pages_b05_profile_backend_b05_profile_engine_solver_연관_개념_및_의존성" + ], + "134": [ + "pages_b05_profile_backend_b05_profile_repository", + "pages_b05_profile_backend_b05_profile_repository_db_접근_함수_목록", + "pages_b05_profile_backend_b05_profile_repository_연관_개념_및_의존성" + ], + "135": [ + "pages_b05_profile_backend_b05_profile_router", + "pages_b05_profile_backend_b05_profile_router_라우터_api_및_주요_함수_목록", + "pages_b05_profile_backend_b05_profile_router_연관_모듈_및_의존성" + ], + "136": [ + "pages_b05_profile_backend_b05_profile_router_confirm", + "pages_b05_profile_backend_b05_profile_router_confirm_연관_모듈", + "pages_b05_profile_backend_b05_profile_router_confirm_주요_헬퍼_함수_목록" + ], + "137": [ + "pages_b05_profile_backend_b05_profile_schema", + "pages_b05_profile_backend_b05_profile_schema_pydantic_모델_및_검증_헬퍼_목록", + "pages_b05_profile_backend_b05_profile_schema_연관_개념_및_의존성" + ], + "138": [ + "pages_b05_profile_frontend_b05_profile_ui_irregularstations", + "pages_b05_profile_frontend_b05_profile_ui_irregularstations_연관_개념_및_의존성", + "pages_b05_profile_frontend_b05_profile_ui_irregularstations_주요_인터페이스_및_함수_목록" + ], + "139": [ + "pages_b05_profile_frontend_b05_profile_ui_page", + "pages_b05_profile_frontend_b05_profile_ui_page_연관_개념_및_의존성", + "pages_b05_profile_frontend_b05_profile_ui_page_주요_컴포넌트_및_함수_목록" + ], + "140": [ + "pages_b05_profile_frontend_b05_profile_ui_panel", + "pages_b05_profile_frontend_b05_profile_ui_panel_연관_개념_및_의존성", + "pages_b05_profile_frontend_b05_profile_ui_panel_주요_함수_목록" + ], + "141": [ + "pages_b05_profile_frontend_b05_profile_ui_profile_alignment", + "pages_b05_profile_frontend_b05_profile_ui_profile_alignment_연관_개념_및_의존성", + "pages_b05_profile_frontend_b05_profile_ui_profile_alignment_주요_함수_목록" + ], + "142": [ + "pages_b05_profile_frontend_b05_profile_ui_profile_table", + "pages_b05_profile_frontend_b05_profile_ui_profile_table_연관_개념_및_의존성", + "pages_b05_profile_frontend_b05_profile_ui_profile_table_주요_함수_목록" + ], + "143": [ + "pages_b05_profile_frontend_b05_profile_ui_viewer", + "pages_b05_profile_frontend_b05_profile_ui_viewer_연관_개념_및_의존성", + "pages_b05_profile_frontend_b05_profile_ui_viewer_주요_함수_목록" + ], + "144": [ + "pages_b06_section_b06_dependencies", + "pages_b06_section_b06_dependencies_b06_section_dependencies", + "pages_b06_section_b06_dependencies_공통_모듈" + ], + "145": [ + "pages_b06_section_backend_b06_section_router", + "pages_b06_section_backend_b06_section_router_라우터_api_및_주요_함수_목록", + "pages_b06_section_backend_b06_section_router_연관_개념_및_의존성" + ], + "146": [ + "architecture_workflow_data_flow_b01_b09_workflow_데이터_흐름", + "architecture_workflow_data_flow_b04_b06_자동_계산과_재설계", + "architecture_workflow_data_flow_단계_관계", + "architecture_workflow_data_flow_상태와_산출물_무효화", + "architecture_workflow_data_flow_정본_위치" + ], + "147": [ + "pages_b08_designdetail_b08_api", + "pages_b08_designdetail_b08_api_api_엔드포인트", + "pages_b08_designdetail_b08_api_b08_designdetail_api" + ], + "148": [ + "concepts_db_schema_route_profile_longitudinal_alignment", + "concepts_db_schema_route_profile_longitudinal_alignment_db_longitudinal_sections_data_profile_alignment_구조" + ], + "149": [ + "pages_b03_fileinput_b03_fileinput_plan_lidar_multi_file", + "pages_b03_fileinput_b03_fileinput_plan_lidar_multi_file_b03_다중_라이다_파일_대용량_처리_보류_계획" + ], + "150": [ + "pages_b05_profile_b05_completed_followups", + "pages_b05_profile_b05_completed_followups_b05_후속_완료_항목" + ], + "151": [ + "pages_b05_profile_b05_corridor_followup_decisions", + "pages_b05_profile_b05_corridor_followup_decisions_b05_구조물_3d_후속_판정" + ], + "152": [ + "pages_b06_section_b06_api", + "pages_b06_section_b06_api_b06_section_api" + ], + "153": [ + "pages_b07_quantity_b07_db", + "pages_b07_quantity_b07_db_b07_quantity_db" + ], + "154": [ + "pages_b08_designdetail_backend_b08_designdetail_router", + "pages_b08_designdetail_backend_b08_designdetail_router_실제_api" + ], + "155": [ + "pages_b09_estimation_frontend_b09_estimation_ui_page", + "pages_b09_estimation_frontend_b09_estimation_ui_page_주요_함수_목록" + ], + "156": [ + "pages_b10_payment_frontend_b10_payment_ui_page", + "pages_b10_payment_frontend_b10_payment_ui_page_주요_함수_목록" + ], + "157": [ + "pages_b11_status_frontend_b11_status_ui_page", + "pages_b11_status_frontend_b11_status_ui_page_주요_함수_목록" + ], + "158": [ + "b03_fileinput_route_snapshot_crs" + ], + "159": [ + "b03_fileinput_upload_ui_2026_09" + ], + "160": [ + "b04_preprocess_compass_crs_2026_09" + ], + "161": [ + "b04_preprocess_drainage_compass_crs" + ], + "162": [ + "b05_profile_corridor_cut_fill" + ], + "163": [ + "b05_profile_corridor_plan_curves" + ], + "164": [ + "b05_profile_frontend" + ], + "165": [ + "b05_profile_masshaul_structure_2026_09" + ], + "166": [ + "b05_profile_profile_interaction_2026_09" + ], + "167": [ + "b06_section_cross_design_ui_2026_09" + ], + "168": [ + "b06_section_masshaul_culvert_2026_09" + ], + "169": [ + "b08_designdetail_b08_designdetail_engine_cad_basin_py" + ], + "170": [ + "b08_designdetail_b08_designdetail_engine_cad_masshaul_py" + ], + "171": [ + "b08_designdetail_cad_delivery_2026_09" + ], + "172": [ + "b08_designdetail_cad_interaction" + ], + "173": [ + "b08_designdetail_cad_title_block" + ], + "174": [ + "b08_designdetail_cad_usability_2026_09_01" + ], + "175": [ + "b08_designdetail_frontend" + ], + "176": [ + "b08_designdetail_openwebcad_app" + ], + "177": [ + "common_util_common_util_mass_haul_settle_ts" + ], + "178": [ + "concept_drainage_watershed" + ], + "179": [ + "concept_mass_haul_diagram" + ], + "180": [ + "concepts_completed_2026_09_01" + ], + "181": [ + "concepts_completed_2026_09_01_followups" + ], + "182": [ + "concepts_completed_2026_09_02" + ], + "183": [ + "concepts_completed_2026_09_03" + ], + "184": [ + "concepts_completed_2026_09_03_additional" + ], + "185": [ + "graphify_out_memory_query_20260821_101018_임도_기술정보db에서_집수정의_형태정보는_어떤게_있는지_확인해줘_md_query" + ], + "186": [ + "index" + ], + "187": [ + "pages_b03_fileinput_backend" + ], + "188": [ + "pages_b03_fileinput_frontend" + ], + "189": [ + "pages_b04_preprocess_backend" + ], + "190": [ + "pages_b04_preprocess_frontend" + ], + "191": [ + "pages_b07_quantity_backend_b07_quantity_router" + ], + "192": [ + "pages_b08_designdetail_cad_blocks" + ], + "193": [ + "pages_b08_designdetail_cad_table_entity" + ], + "194": [ + "pages_b08_designdetail_cross_structure_sheets" + ], + "195": [ + "query_20260821_070423_배수관_매설시_각도의_제약조건이_있는지_확인해줘__임도_md_query" + ], + "196": [ + "pages_b06_section_b06_backend_b06_section_backend", + "pages_b06_section_b06_backend_계산_엔진", + "pages_b06_section_b06_backend_데이터_영구_저장_및_환경설정", + "pages_b06_section_b06_backend_라우터_workflow_조회_확정_타_프로젝트_불러오기_및_재생성", + "pages_b06_section_b06_backend_요청_응답_모델" + ] + }, + "cohesion": { + "0": 0.06451612903225806, + "1": 0.04878048780487805, + "2": 0.13333333333333333, + "3": 0.125, + "4": 0.125, + "5": 0.16666666666666666, + "6": 0.16666666666666666, + "7": 0.18181818181818182, + "8": 0.18181818181818182, + "9": 0.18181818181818182, + "10": 0.18181818181818182, + "11": 0.18181818181818182, + "12": 0.18181818181818182, + "13": 0.18181818181818182, + "14": 0.2, + "15": 0.2, + "16": 0.2, + "17": 0.2, + "18": 0.2, + "19": 0.2, + "20": 0.2, + "21": 0.2, + "22": 0.2, + "23": 0.2, + "24": 0.2222222222222222, + "25": 0.2222222222222222, + "26": 0.2222222222222222, + "27": 0.25, + "28": 0.25, + "29": 0.25, + "30": 0.25, + "31": 0.25, + "32": 0.25, + "33": 0.2857142857142857, + "34": 0.2857142857142857, + "35": 0.2857142857142857, + "36": 0.2857142857142857, + "37": 0.2857142857142857, + "38": 0.2857142857142857, + "39": 0.2857142857142857, + "40": 0.2857142857142857, + "41": 0.2857142857142857, + "42": 0.2857142857142857, + "43": 0.2857142857142857, + "44": 0.15384615384615385, + "45": 0.3333333333333333, + "46": 0.2857142857142857, + "47": 0.3333333333333333, + "48": 0.3333333333333333, + "49": 0.3333333333333333, + "50": 0.3333333333333333, + "51": 0.3333333333333333, + "52": 0.3333333333333333, + "53": 0.3333333333333333, + "54": 0.3333333333333333, + "55": 0.2, + "56": 0.3333333333333333, + "57": 0.3333333333333333, + "58": 0.4, + "59": 0.4, + "60": 0.4, + "61": 0.4, + "62": 0.4, + "63": 0.4, + "64": 0.4, + "65": 0.4, + "66": 0.4, + "67": 0.4, + "68": 0.4, + "69": 0.4, + "70": 0.4, + "71": 0.4, + "72": 0.4, + "73": 0.4, + "74": 0.4, + "75": 0.4, + "76": 0.4, + "77": 0.4, + "78": 0.4, + "79": 0.4, + "80": 0.4, + "81": 0.4, + "82": 0.4, + "83": 0.4, + "84": 0.4, + "85": 0.4, + "86": 0.4, + "87": 0.4, + "88": 0.4, + "89": 0.4, + "90": 0.4, + "91": 0.4, + "92": 0.5, + "93": 0.5, + "94": 0.5, + "95": 0.5, + "96": 0.5, + "97": 0.5, + "98": 0.5, + "99": 0.5, + "100": 0.5, + "101": 0.5, + "102": 0.5, + "103": 0.5, + "104": 0.5, + "105": 0.5, + "106": 0.5, + "107": 0.5, + "108": 0.5, + "109": 0.5, + "110": 0.5, + "111": 0.5, + "112": 0.6666666666666666, + "113": 0.6666666666666666, + "114": 0.6666666666666666, + "115": 0.6666666666666666, + "116": 0.6666666666666666, + "117": 0.6666666666666666, + "118": 0.6666666666666666, + "119": 0.6666666666666666, + "120": 0.6666666666666666, + "121": 0.6666666666666666, + "122": 0.6666666666666666, + "123": 0.6666666666666666, + "124": 0.6666666666666666, + "125": 0.6666666666666666, + "126": 0.6666666666666666, + "127": 0.6666666666666666, + "128": 0.6666666666666666, + "129": 0.6666666666666666, + "130": 0.6666666666666666, + "131": 0.6666666666666666, + "132": 0.6666666666666666, + "133": 0.6666666666666666, + "134": 0.6666666666666666, + "135": 0.6666666666666666, + "136": 0.6666666666666666, + "137": 0.6666666666666666, + "138": 0.6666666666666666, + "139": 0.6666666666666666, + "140": 0.6666666666666666, + "141": 0.6666666666666666, + "142": 0.6666666666666666, + "143": 0.6666666666666666, + "144": 0.6666666666666666, + "145": 0.6666666666666666, + "146": 0.4, + "147": 0.6666666666666666, + "148": 1.0, + "149": 1.0, + "150": 1.0, + "151": 1.0, + "152": 1.0, + "153": 1.0, + "154": 1.0, + "155": 1.0, + "156": 1.0, + "157": 1.0, + "158": 1.0, + "159": 1.0, + "160": 1.0, + "161": 1.0, + "162": 1.0, + "163": 1.0, + "164": 1.0, + "165": 1.0, + "166": 1.0, + "167": 1.0, + "168": 1.0, + "169": 1.0, + "170": 1.0, + "171": 1.0, + "172": 1.0, + "173": 1.0, + "174": 1.0, + "175": 1.0, + "176": 1.0, + "177": 1.0, + "178": 1.0, + "179": 1.0, + "180": 1.0, + "181": 1.0, + "182": 1.0, + "183": 1.0, + "184": 1.0, + "185": 1.0, + "186": 1.0, + "187": 1.0, + "188": 1.0, + "189": 1.0, + "190": 1.0, + "191": 1.0, + "192": 1.0, + "193": 1.0, + "194": 1.0, + "195": 1.0, + "196": 0.4 + }, + "gods": [ + { + "id": "concepts_completed_2026_09_04", + "label": "2026-09-04 완료 항목", + "degree": 17 + }, + { + "id": "concepts_ui_templates_ui_templates_localization_components", + "label": "UI Templates — Localization & Components", + "degree": 12 + }, + { + "id": "concepts_db_schema_logs_monitoring_db_로그_모니터링_테이블", + "label": "DB: 로그/모니터링 테이블", + "degree": 11 + }, + { + "id": "concepts_completed_2026_08_29_2026_08_29_완료_반영", + "label": "2026-08-29 완료 반영", + "degree": 10 + }, + { + "id": "concepts_db_schema_files_surface_db_파일_지표면분석_테이블", + "label": "DB: 파일/지표면분석 테이블", + "degree": 10 + }, + { + "id": "pages_a07_register_a07_frontend_a07_register_frontend", + "label": "A07_Register — Frontend", + "degree": 10 + }, + { + "id": "pages_a08_support_a08_frontend_a08_support_frontend", + "label": "A08_Support — Frontend", + "degree": 10 + }, + { + "id": "pages_b02_projregister_b02_frontend_b02_projregister_frontend", + "label": "B02_ProjRegister — Frontend", + "degree": 10 + }, + { + "id": "concepts_auth_rbac_인증_rbac", + "label": "인증 / RBAC", + "degree": 9 + }, + { + "id": "concepts_drainage_watershed_배수유역_해석_및_세부설계_drainage_watershed", + "label": "배수유역 해석 및 세부설계 (Drainage Watershed)", + "degree": 9 + } + ], + "surprises": [ + { + "source": "2026-09-04 완료 항목", + "target": "B05_Profile/B05_backend", + "source_files": [ + "concepts/completed_2026-09-04.md", + "B05_Profile/B05_backend.md" + ], + "confidence": "EXTRACTED", + "relation": "references", + "why": "connects across different repos/directories; bridges separate communities; peripheral node `B05_Profile/B05_backend` unexpectedly reaches hub `2026-09-04 완료 항목`" + }, + { + "source": "2026-09-04 완료 항목", + "target": "B08_DesignDetail/B08_frontend", + "source_files": [ + "concepts/completed_2026-09-04.md", + "B08_DesignDetail/B08_frontend.md" + ], + "confidence": "EXTRACTED", + "relation": "references", + "why": "connects across different repos/directories; bridges separate communities; peripheral node `B08_DesignDetail/B08_frontend` unexpectedly reaches hub `2026-09-04 완료 항목`" + }, + { + "source": "B07 구조물 표준도 — 조사·합의와 현재 통로", + "target": "표준도·수량·원가 입력의 미결 경계", + "source_files": [ + "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md", + "concepts/standard_drawing_cost_inputs.md" + ], + "confidence": "EXTRACTED", + "relation": "references", + "why": "connects across different repos/directories; bridges separate communities; peripheral node `표준도·수량·원가 입력의 미결 경계` unexpectedly reaches hub `B07 구조물 표준도 — 조사·합의와 현재 통로`" + }, + { + "source": "2026-09-04 완료 항목", + "target": "B01_Dashboard/B01_frontend", + "source_files": [ + "concepts/completed_2026-09-04.md", + "B01_Dashboard/B01_frontend.md" + ], + "confidence": "EXTRACTED", + "relation": "references", + "why": "connects across different repos/directories; peripheral node `B01_Dashboard/B01_frontend` unexpectedly reaches hub `2026-09-04 완료 항목`" + }, + { + "source": "2026-09-04 완료 항목", + "target": "B03_FileInput/B03_backend", + "source_files": [ + "concepts/completed_2026-09-04.md", + "B03_FileInput/B03_backend.md" + ], + "confidence": "EXTRACTED", + "relation": "references", + "why": "connects across different repos/directories; peripheral node `B03_FileInput/B03_backend` unexpectedly reaches hub `2026-09-04 완료 항목`" + } + ], + "questions": [ + { + "type": "bridge_node", + "question": "Why does `B07 구조물 표준도 — 조사·합의와 현재 통로` connect `B07 구조물 표준도 — 조사·합의와 현재 통로` to `유토곡선 (Mass Haul Diagram) 계산 명세`, `임도기술교본 원문 md 추출 품질 결함`?", + "why": "High betweenness centrality (0.002) - this node is a cross-community bridge." + }, + { + "type": "bridge_node", + "question": "Why does `2026-09-04 완료 항목` connect `2026-09-04 완료 항목` to `2026-09-07 완료·보류 요약`, `B07 구조물 표준도 — 조사·합의와 현재 통로`?", + "why": "High betweenness centrality (0.002) - this node is a cross-community bridge." + }, + { + "type": "isolated_nodes", + "question": "What connects `단계별 판정`, `비워크플로 영역 판정`, `구현 상태 용어` to the rest of the system?", + "why": "675 weakly-connected nodes found - possible documentation gaps or missing edges." + }, + { + "type": "low_cohesion", + "question": "Should `UI Templates — Localization & Components` be split into smaller, more focused modules?", + "why": "Cohesion score 0.06451612903225806 - nodes in this community are weakly interconnected." + }, + { + "type": "low_cohesion", + "question": "Should `인증 / RBAC` be split into smaller, more focused modules?", + "why": "Cohesion score 0.04878048780487805 - nodes in this community are weakly interconnected." + }, + { + "type": "low_cohesion", + "question": "Should `A00_Common — App Shell Framework` be split into smaller, more focused modules?", + "why": "Cohesion score 0.13333333333333333 - nodes in this community are weakly interconnected." + }, + { + "type": "low_cohesion", + "question": "Should `2026-09-04 완료 항목` be split into smaller, more focused modules?", + "why": "Cohesion score 0.125 - nodes in this community are weakly interconnected." + } + ] +} \ No newline at end of file diff --git a/docs/wiki/graphify-out/2026-09-12/.graphify_labels.json b/docs/wiki/graphify-out/2026-09-12/.graphify_labels.json new file mode 100644 index 00000000..0989da7b --- /dev/null +++ b/docs/wiki/graphify-out/2026-09-12/.graphify_labels.json @@ -0,0 +1,191 @@ +{ + "0": "UI Templates — Localization & Components", + "1": "인증 / RBAC", + "2": "A00_Common — App Shell Framework", + "3": "2026-09-04 완료 항목", + "4": "배수유역 해석 및 세부설계 (Drainage Watershed)", + "5": "DB: 로그/모니터링 테이블", + "6": "A09_Security — Backend", + "7": "2026-08-29 완료 반영", + "8": "DB: 파일/지표면분석 테이블", + "9": "DB: 경로/종횡단 테이블", + "10": "A04_NewsHistory — Frontend", + "11": "A07_Register — Frontend", + "12": "A08_Support — Frontend", + "13": "B02_ProjRegister — Frontend", + "14": "A01_Home — Frontend", + "15": "A05_EduDetail — Frontend", + "16": "A06_Login — Frontend", + "17": "A08_Support — Backend", + "18": "A09_Security — Frontend", + "19": "B02_ProjRegister — Backend", + "20": "B04_PreProcess — Backend", + "21": "B04_PreProcess — Frontend", + "22": "B05 구조물 정본·통합 편집", + "23": "B06_Section — Frontend", + "24": "A03_CompDetail — Frontend", + "25": "A06_Login — Backend", + "26": "유토곡선 (Mass Haul Diagram) 계산 명세", + "27": "A07_Register — Backend", + "28": "B06 배수관 구조물 조작·표시", + "29": "B06 기슭막이 연동·경사·단별 제어", + "30": "B08_DesignDetail — Backend", + "31": "B08 토적도·수리집수면적유역도", + "32": "B09_Estimation — Frontend", + "33": "현재 구현 현황 — 소스 읽기 감사", + "34": "DB: 구조물/수량/산출물 테이블", + "35": "B01_Dashboard — Backend", + "36": "B01_Dashboard — Frontend", + "37": "B03_FileInput — Backend", + "38": "B05 급선회 3D 국부 보정 계획", + "39": "B06 집수정·다단 기슭막이", + "40": "B06 배수관 구조물 기하·조작 체계", + "41": "B06 배수관 횡단도 세트", + "42": "B10_Payment — Frontend", + "43": "B11_Status — Frontend", + "44": "저장 경로 규칙 (Workflow-based Folder Structure)", + "45": "DB: 프로젝트 관리 테이블", + "46": "임도기술교본 원문 md 추출 품질 결함", + "47": "A01_Home — 세부 구현", + "48": "A02_ProgDetail — 세부 구현", + "49": "A02_ProgDetail — Frontend", + "50": "B01_Dashboard — API", + "51": "B03_FileInput — Frontend", + "52": "B05 계획노선 코리도 삼각망 서피스", + "53": "B05 구조물·UI 현재 계획", + "54": "B05 구조물 입력·종단 표시 정비 — 2026-08-19", + "55": "B07 구조물 표준도 — 조사·합의와 현재 통로", + "56": "B08 횡단도 구조물·장 배치", + "57": "2026-09-07 완료·보류 요약", + "58": "B07 외부 WebCAD 비교 실행환경", + "59": "Temp Upload (프로젝트 생성 전 임시 보관함)", + "60": "Q: 배수관 매설시 각도의 제약조건이 있는지 확인해줘. 임도에서", + "61": "Q: 임도 기술정보DB에서 집수정의 형태정보는 어떤게 있는지 확인해줘.", + "62": "B02_ProjRegister — DB", + "63": "B03_FileInput — API", + "64": "B04_PreProcess — DB", + "65": "B05_Profile — API", + "66": "B05 변형 성토면 마감·날개 패치", + "67": "B05_Profile — Profile Alignment & Table", + "68": "B05 구조물 비정규 측점 공급", + "69": "B05_Profile_UI_Drainage_Parts — 배수유역 공용 UI 파츠", + "70": "_UI_Drainage_Render — 배수유역도 Canvas 렌더러", + "71": "_UI_Profile_Structures — 종단 구조물 렌더링 및 인터랙션", + "72": "_UI_Selection — 배수/구조물 3자 선택 동기화", + "73": "B06 인접 측점 구조물 트림 정리", + "74": "B06 물넘이포장·콘크리트 포장·독립 기슭막이", + "75": "B06_Section_Engine_Areas — 횡단 면적 적분 연산 엔진", + "76": "B06_Section_Router_Confirm — 임시 저장 및 확정 라우터", + "77": "B06_Section_UI_Cross_Areas — 횡단 단면적 표기 및 밴드 하이라이트", + "78": "B06_Section_UI_Cross_Design — 횡단 측점별 세부 설계 컨트롤", + "79": "B06_Section_UI_MassHaul — 유토곡선 적분 계산 엔진", + "80": "B06_Section_UI_MassHaul_Balance — 평형선 및 장비 띠 분할 엔진", + "81": "B06_Section_UI_MassHaul_Balance_View — 운반 띠 시각화 렌더러", + "82": "B06_Section_UI_MassHaul_Balloon — 물량 말풍선 배치 및 조작", + "83": "B06_Section_UI_MassHaul_Curve — 유토곡선 궤적 보간 및 렌더링", + "84": "B06_Section_UI_MassHaul_Settle — 토량 정산 및 장거리 상쇄 엔진", + "85": "B06_Section_UI_MassHaul_View — 유토곡선 시각화 렌더러", + "86": "B06_Section_UI_Page — B06 메인 페이지 오케스트레이터", + "87": "B06_Section_UI_Section_View — 종/횡단 및 유토곡선 뷰 조립", + "88": "B07 Quantity — Backend", + "89": "B08 CAD 블록 라이브러리·사진", + "90": "B08 OpenWebCAD 명령 체계", + "91": "B08_CAD_table_entity.md", + "92": "공개·인증·관리 영역 지도", + "93": "공유 자원 영향 지도", + "94": "A00_Common — 공통 프레임워크 & 유틸", + "95": "app_shell.ts", + "96": "router.ts", + "97": "B04_PreProcess — API", + "98": "B04_PreProcess — Dependencies", + "99": "B05_Profile — Backend", + "100": "B05_Profile — DB 사용 관계", + "101": "B05_Profile — 3D Viewer & Interaction", + "102": "B05_Profile_Engine_Sections.md", + "103": "B05_Profile_Api_Fetch.ts", + "104": "B05_Profile_UI_Drainage_Panel", + "105": "B05_Profile_UI_Drainage_Pipes", + "106": "B05_Profile_UI_Profile_Panel.md", + "107": "B06_Section — DB 사용 관계", + "108": "B06_Section_Api_Fetch — B06 프론트엔드 API 클라이언트", + "109": "B06_Section_UI_Standard_Diagram — 표준단면 모식도 컴포넌트", + "110": "B06_Section_UI_Standard_Panel — 표준단면 입력 및 제어 패널", + "111": "B08_DesignDetail — Dependencies", + "112": "common_util_project_delete.md", + "113": "common_util_storage.md", + "114": "common_util_workflow_state.md", + "115": "미확정 테이블 보관소 (Unconfirmed DB Schemas)", + "116": "A01_Home_UI_Page.md", + "117": "A02_ProgDetail_UI_Page.md", + "118": "A06_Login_Router.md", + "119": "A07_Register_Router.md", + "120": "A08_Support_Router.md", + "121": "A09_Security_Router.md", + "122": "B01_Dashboard — DB 사용 관계", + "123": "B01_Dashboard — Dependencies", + "124": "B01_Dashboard_Router.md", + "125": "B01_Dashboard_UI_Page.md", + "126": "B02_ProjRegister_Router.md", + "127": "B03_FileInput — DB 사용 관계", + "128": "B03_FileInput — Dependencies", + "129": "B03_FileInput_Router.md", + "130": "B04_PreProcess_Router.md", + "131": "B05_Profile — Dependencies", + "132": "B05_Profile_Engine_Grade.md", + "133": "B05_Profile_Engine_Solver.md", + "134": "B05_Profile_Repository.md", + "135": "B05_Profile_Router.md", + "136": "B05_Profile_Router_Confirm.md", + "137": "B05_Profile_Schema.md", + "138": "B05_Profile_UI_IrregularStations.md", + "139": "B05_Profile_UI_Page.md", + "140": "B05_Profile_UI_Panel.md", + "141": "B05_Profile_UI_Profile_Alignment.md", + "142": "B05_Profile_UI_Profile_Table.md", + "143": "B05_Profile_UI_Viewer.md", + "144": "B06_Section — Dependencies", + "145": "B06_Section_Router.md", + "146": "B01~B09 Workflow 데이터 흐름", + "147": "B08_DesignDetail — API", + "148": "longitudinal_alignment.md", + "149": "B03_FileInput_plan_lidar_multi_file.md", + "150": "B05_completed_followups.md", + "151": "B05_corridor_followup_decisions.md", + "152": "B06_api.md", + "153": "B07_db.md", + "154": "B08_DesignDetail_Router.md", + "155": "B09_Estimation_UI_Page.md", + "156": "B10_Payment_UI_Page.md", + "157": "B11_Status_UI_Page.md", + "158": "B03 계획노선 정본·좌표계 후속", + "159": "B03 파일 입력 화면 정리", + "160": "B04 3D 방위·좌표계 최신 결정", + "161": "B04 세부유역·방위·좌표계", + "162": "B05 구조물 구간 절취·측벽·성토 패치", + "163": "B05 구조물 3D 투영 커브", + "164": "B05_Profile — Frontend", + "165": "B05 유토곡선·구조물 후속", + "166": "B05 종단곡선·실시간 횡단 연동", + "167": "B06 횡단 계산 미러·카드 표기", + "168": "B06 횡단 관 형상·유토곡선 후속", + "169": "B08_DesignDetail_Engine_Cad_Basin.py", + "170": "B08_DesignDetail_Engine_Cad_MassHaul.py", + "171": "B08 CAD·납품 도면 후속", + "176": "OpenWebCAD Core", + "177": "common_util_mass_haul_settle.ts", + "178": "Drainage Watershed (유역도)", + "179": "Mass Haul Diagram (토적도)", + "182": "2026-09-02 완료 항목", + "183": "2026-09-03 완료 — 입력·배수·종횡단·CAD", + "184": "2026-09-03 추가 완료 — 화면·종단·횡단", + "185": "Query: 임도 집수정 형태정보", + "187": "B03 File Input Backend", + "188": "B03 File Input Frontend", + "189": "B04 PreProcess Backend", + "190": "B04 PreProcess Frontend", + "191": "B07_Quantity_Router.md", + "192": "B08 CAD Blocks Library", + "193": "B08 CAD Table Entity", + "194": "B08 Cross Section Structure Sheets", + "195": "Query: 배수관 매설 각도 제약조건 (임도)" +} diff --git a/docs/wiki/graphify-out/2026-09-12/.graphify_semantic_marker b/docs/wiki/graphify-out/2026-09-12/.graphify_semantic_marker new file mode 100644 index 00000000..b0cd2155 --- /dev/null +++ b/docs/wiki/graphify-out/2026-09-12/.graphify_semantic_marker @@ -0,0 +1 @@ +{"output_tokens": 2385} \ No newline at end of file diff --git a/docs/wiki/graphify-out/2026-09-12/GRAPH_REPORT.md b/docs/wiki/graphify-out/2026-09-12/GRAPH_REPORT.md new file mode 100644 index 00000000..b800b319 --- /dev/null +++ b/docs/wiki/graphify-out/2026-09-12/GRAPH_REPORT.md @@ -0,0 +1,891 @@ +# Graph Report - wiki (2026-09-11) + +## Corpus Check +- 206 files · ~57,686 words +- Verdict: corpus is large enough that graph structure adds value. + +## Summary +- 1170 nodes · 996 edges · 189 communities (155 shown, 34 thin omitted) +- Extraction: 100% EXTRACTED · 0% INFERRED · 0% AMBIGUOUS +- Token cost: 0 input · 0 output + +## Graph Freshness +- Built from commit: `e49e4d85` +- Run `git rev-parse HEAD` and compare to check if the graph is stale. +- Run `graphify update .` after code changes (no API cost). + +## Community Hubs (Navigation) +- UI Templates — Localization & Components +- 인증 / RBAC +- A00_Common — App Shell Framework +- 2026-09-04 완료 항목 +- 배수유역 해석 및 세부설계 (Drainage Watershed) +- DB: 로그/모니터링 테이블 +- A09_Security — Backend +- 2026-08-29 완료 반영 +- DB: 파일/지표면분석 테이블 +- DB: 경로/종횡단 테이블 +- A04_NewsHistory — Frontend +- A07_Register — Frontend +- A08_Support — Frontend +- B02_ProjRegister — Frontend +- A01_Home — Frontend +- A05_EduDetail — Frontend +- A06_Login — Frontend +- A08_Support — Backend +- A09_Security — Frontend +- B02_ProjRegister — Backend +- B04_PreProcess — Backend +- B04_PreProcess — Frontend +- B05 구조물 정본·통합 편집 +- B06_Section — Frontend +- A03_CompDetail — Frontend +- A06_Login — Backend +- 유토곡선 (Mass Haul Diagram) 계산 명세 +- A07_Register — Backend +- B06 배수관 구조물 조작·표시 +- B06 기슭막이 연동·경사·단별 제어 +- B08_DesignDetail — Backend +- B08 토적도·수리집수면적유역도 +- B09_Estimation — Frontend +- 현재 구현 현황 — 소스 읽기 감사 +- DB: 구조물/수량/산출물 테이블 +- B01_Dashboard — Backend +- B01_Dashboard — Frontend +- B03_FileInput — Backend +- B05 급선회 3D 국부 보정 계획 +- B06 집수정·다단 기슭막이 +- B06 배수관 구조물 기하·조작 체계 +- B06 배수관 횡단도 세트 +- B10_Payment — Frontend +- B11_Status — Frontend +- 저장 경로 규칙 (Workflow-based Folder Structure) +- DB: 프로젝트 관리 테이블 +- 임도기술교본 원문 md 추출 품질 결함 +- A01_Home — 세부 구현 +- A02_ProgDetail — 세부 구현 +- A02_ProgDetail — Frontend +- B01_Dashboard — API +- B03_FileInput — Frontend +- B05 계획노선 코리도 삼각망 서피스 +- B05 구조물·UI 현재 계획 +- B05 구조물 입력·종단 표시 정비 — 2026-08-19 +- B07 구조물 표준도 — 조사·합의와 현재 통로 +- B08 횡단도 구조물·장 배치 +- 2026-09-07 완료·보류 요약 +- B07 외부 WebCAD 비교 실행환경 +- Temp Upload (프로젝트 생성 전 임시 보관함) +- Q: 배수관 매설시 각도의 제약조건이 있는지 확인해줘. 임도에서 +- Q: 임도 기술정보DB에서 집수정의 형태정보는 어떤게 있는지 확인해줘. +- B02_ProjRegister — DB +- B03_FileInput — API +- B04_PreProcess — DB +- B05_Profile — API +- B05 변형 성토면 마감·날개 패치 +- B05_Profile — Profile Alignment & Table +- B05 구조물 비정규 측점 공급 +- B05_Profile_UI_Drainage_Parts — 배수유역 공용 UI 파츠 +- _UI_Drainage_Render — 배수유역도 Canvas 렌더러 +- _UI_Profile_Structures — 종단 구조물 렌더링 및 인터랙션 +- _UI_Selection — 배수/구조물 3자 선택 동기화 +- B06 인접 측점 구조물 트림 정리 +- B06 물넘이포장·콘크리트 포장·독립 기슭막이 +- B06_Section_Engine_Areas — 횡단 면적 적분 연산 엔진 +- B06_Section_Router_Confirm — 임시 저장 및 확정 라우터 +- B06_Section_UI_Cross_Areas — 횡단 단면적 표기 및 밴드 하이라이트 +- B06_Section_UI_Cross_Design — 횡단 측점별 세부 설계 컨트롤 +- B06_Section_UI_MassHaul — 유토곡선 적분 계산 엔진 +- B06_Section_UI_MassHaul_Balance — 평형선 및 장비 띠 분할 엔진 +- B06_Section_UI_MassHaul_Balance_View — 운반 띠 시각화 렌더러 +- B06_Section_UI_MassHaul_Balloon — 물량 말풍선 배치 및 조작 +- B06_Section_UI_MassHaul_Curve — 유토곡선 궤적 보간 및 렌더링 +- B06_Section_UI_MassHaul_Settle — 토량 정산 및 장거리 상쇄 엔진 +- B06_Section_UI_MassHaul_View — 유토곡선 시각화 렌더러 +- B06_Section_UI_Page — B06 메인 페이지 오케스트레이터 +- B06_Section_UI_Section_View — 종/횡단 및 유토곡선 뷰 조립 +- B07 Quantity — Backend +- B08 CAD 블록 라이브러리·사진 +- B08 OpenWebCAD 명령 체계 +- B08_CAD_table_entity.md +- 공개·인증·관리 영역 지도 +- 공유 자원 영향 지도 +- A00_Common — 공통 프레임워크 & 유틸 +- app_shell.ts +- router.ts +- B04_PreProcess — API +- B04_PreProcess — Dependencies +- B05_Profile — Backend +- B05_Profile — DB 사용 관계 +- B05_Profile — 3D Viewer & Interaction +- B05_Profile_Engine_Sections.md +- B05_Profile_Api_Fetch.ts +- B05_Profile_UI_Drainage_Panel +- B05_Profile_UI_Drainage_Pipes +- B05_Profile_UI_Profile_Panel.md +- B06_Section — DB 사용 관계 +- B06_Section_Api_Fetch — B06 프론트엔드 API 클라이언트 +- B06_Section_UI_Standard_Diagram — 표준단면 모식도 컴포넌트 +- B06_Section_UI_Standard_Panel — 표준단면 입력 및 제어 패널 +- B08_DesignDetail — Dependencies +- common_util_project_delete.md +- common_util_storage.md +- common_util_workflow_state.md +- 미확정 테이블 보관소 (Unconfirmed DB Schemas) +- A01_Home_UI_Page.md +- A02_ProgDetail_UI_Page.md +- A06_Login_Router.md +- A07_Register_Router.md +- A08_Support_Router.md +- A09_Security_Router.md +- B01_Dashboard — DB 사용 관계 +- B01_Dashboard — Dependencies +- B01_Dashboard_Router.md +- B01_Dashboard_UI_Page.md +- B02_ProjRegister_Router.md +- B03_FileInput — DB 사용 관계 +- B03_FileInput — Dependencies +- B03_FileInput_Router.md +- B04_PreProcess_Router.md +- B05_Profile — Dependencies +- B05_Profile_Engine_Grade.md +- B05_Profile_Engine_Solver.md +- B05_Profile_Repository.md +- B05_Profile_Router.md +- B05_Profile_Router_Confirm.md +- B05_Profile_Schema.md +- B05_Profile_UI_IrregularStations.md +- B05_Profile_UI_Page.md +- B05_Profile_UI_Panel.md +- B05_Profile_UI_Profile_Alignment.md +- B05_Profile_UI_Profile_Table.md +- B05_Profile_UI_Viewer.md +- B06_Section — Dependencies +- B06_Section_Router.md +- B01~B09 Workflow 데이터 흐름 +- B08_DesignDetail — API +- longitudinal_alignment.md +- B03_FileInput_plan_lidar_multi_file.md +- B05_completed_followups.md +- B05_corridor_followup_decisions.md +- B06_api.md +- B07_db.md +- B08_DesignDetail_Router.md +- B09_Estimation_UI_Page.md +- B10_Payment_UI_Page.md +- B11_Status_UI_Page.md +- B03 계획노선 정본·좌표계 후속 +- B03 파일 입력 화면 정리 +- B04 3D 방위·좌표계 최신 결정 +- B04 세부유역·방위·좌표계 +- B05 구조물 구간 절취·측벽·성토 패치 +- B05 구조물 3D 투영 커브 +- B05_Profile — Frontend +- B05 유토곡선·구조물 후속 +- B05 종단곡선·실시간 횡단 연동 +- B06 횡단 계산 미러·카드 표기 +- B06 횡단 관 형상·유토곡선 후속 +- B08_DesignDetail_Engine_Cad_Basin.py +- B08_DesignDetail_Engine_Cad_MassHaul.py +- B08 CAD·납품 도면 후속 +- OpenWebCAD Core +- common_util_mass_haul_settle.ts +- Drainage Watershed (유역도) +- Mass Haul Diagram (토적도) +- 2026-09-02 완료 항목 +- 2026-09-03 완료 — 입력·배수·종횡단·CAD +- 2026-09-03 추가 완료 — 화면·종단·횡단 +- Query: 임도 집수정 형태정보 +- B03 File Input Backend +- B03 File Input Frontend +- B04 PreProcess Backend +- B04 PreProcess Frontend +- B07_Quantity_Router.md +- B08 CAD Blocks Library +- B08 CAD Table Entity +- B08 Cross Section Structure Sheets +- Query: 배수관 매설 각도 제약조건 (임도) + +## God Nodes (most connected - your core abstractions) +1. `UI Templates — Localization & Components` - 12 edges +2. `DB: 로그/모니터링 테이블` - 11 edges +3. `B07 구조물 표준도 — 조사·합의와 현재 통로` - 11 edges +4. `2026-08-29 완료 반영` - 10 edges +5. `DB: 파일/지표면분석 테이블` - 10 edges +6. `A07_Register — Frontend` - 10 edges +7. `A08_Support — Frontend` - 10 edges +8. `B02_ProjRegister — Frontend` - 10 edges +9. `인증 / RBAC` - 9 edges +10. `배수유역 해석 및 세부설계 (Drainage Watershed)` - 9 edges + +## Surprising Connections (you probably didn't know these) +- `B07 구조물 표준도 — 조사·합의와 현재 통로` --references--> `B07 DesignDetail — 현재 책임` [EXTRACTED] + pages/B07_DesignDetail/B07_standard_drawings_2026_09.md → pages/B07_DesignDetail/B07_frontend.md +- `B07 구조물 표준도 — 조사·합의와 현재 통로` --references--> `B08 Quantity — 2026-09 수량산출` [EXTRACTED] + pages/B07_DesignDetail/B07_standard_drawings_2026_09.md → pages/B08_Quantity/B08_overview_2026_09.md +- `B07 구조물 표준도 — 조사·합의와 현재 통로` --references--> `B09 Estimation — 2026-09 원가계산` [EXTRACTED] + pages/B07_DesignDetail/B07_standard_drawings_2026_09.md → pages/B09_Estimation/B09_overview_2026_09.md + +## Import Cycles +- None detected. + +## Hyperedges (group relationships) +- **B03-B08 Workflow Data Flow** — b03_fileinput_route_snapshot_crs, b04_preprocess_drainage_compass_crs, b05_profile_frontend, b06_section_cross_design_ui_2026_09, b08_designdetail_frontend [INFERRED 0.90] +- **Shared Mass Haul Calculation and UI** — b05_profile_masshaul_structure_2026_09, b06_section_masshaul_culvert_2026_09, b08_designdetail_cad_delivery_2026_09 [EXTRACTED 0.85] +- **CAD Delivery and Usability Framework** — b08_designdetail_cad_interaction, b08_designdetail_cad_title_block, b08_designdetail_cad_usability_2026_09_01, b08_designdetail_cad_delivery_2026_09 [EXTRACTED 0.95] +- **LAS-Free Analysis Workflow** — concepts_las_free_sheet_surface, pages_b03_fileinput_backend, pages_b04_preprocess_backend [EXTRACTED 1.00] +- **B08 Drawing Generation Flow** — b08_designdetail_b08_designdetail_engine_cad_masshaul_py, b08_designdetail_b08_designdetail_engine_cad_basin_py, common_util_common_util_mass_haul_settle_ts [EXTRACTED 0.90] +- **Drainage System Workflow** — concepts_drainage_watershed, pages_b05_profile_b05_structures, pages_b06_section_b06_culvert_set, pages_b06_section_b06_culvert_geometry_redesign [EXTRACTED 0.95] +- **Mass Haul Diagram System** — concepts_mass_haul_diagram, pages_b06_section_b06_frontend, pages_b08_designdetail_b08_drawing_masshaul_watershed [EXTRACTED 0.90] +- **3D Corridor Generation Flow** — pages_b05_profile_b05_corridor_surface, pages_b05_profile_b05_corridor_plan_curves, pages_b05_profile_b05_corridor_cut_fill, pages_b05_profile_b05_corridor_patch_finish [EXTRACTED 0.90] +- **Late Workflow Stages (B07-B09)** — pages_b07_quantity_b07_frontend, pages_b08_designdetail_b08_frontend, pages_b09_estimation_b09_frontend [EXTRACTED 1.00] + +## Communities (189 total, 34 thin omitted) + +### Community 0 - "UI Templates — Localization & Components" +Cohesion: 0.05 +Nodes (38): 2026-09-04 완료 항목, 700줄 제한 분리, 보존된 미완료 범위, 상시계획서 추가 완료 범위, 완료 범위, 추가 완료 범위, 디자인 시스템 (Design System), 레이아웃 및 둥근 테두리 (Radius & Spacing) (+30 more) + +### Community 1 - "인증 / RBAC" +Cohesion: 0.06 +Nodes (31): OTP / 비밀번호 및 디바이스 신뢰, 권한 검증 헬퍼 (B01_Dashboard), 라우팅 가드 (frontend.md 5.2), 사용자 상태 생명주기, 사용처 (역참조), 세션 인증 (backend.md 6.3), 역할 (users.role), 인증 / RBAC (+23 more) + +### Community 2 - "A00_Common — App Shell Framework" +Cohesion: 0.08 +Nodes (22): A00_Common — App Shell Framework, app_shell 구성요소, router 라우팅 테이블, A00_Common — 스캐폴드·CSS·종속성, b_page_scaffold, CSS 인젝션, 사용처, 종속성 (+14 more) + +### Community 3 - "2026-09-04 완료 항목" +Cohesion: 0.07 +Nodes (25): API 공통 (여러 페이지가 공유하는 엔드포인트), 공통 오류 응답 포맷 (전 라우터), 워크플로우 상태 조회, 폴링 패턴 (legacy workflow.json 설계; 현재 구현은 workflow-state API 사용), 계산 구현 원칙, 계획노선 규칙, 설계 데이터 생명주기, 정본 세 벌 (+17 more) + +### Community 4 - "배수유역 해석 및 세부설계 (Drainage Watershed)" +Cohesion: 0.25 +Nodes (7): B08_DesignDetail — Frontend, CAD 계획선 레이어 연동 및 편집 지원 (2026-07-22), openwebcad 단위 정합, 선 특성/폰트 UI 및 Fit-in-all (2026-07-20), 독립형 CAD 임베드 및 데이터 연동 아키텍처, 의존성, 주요 컴포넌트 / 함수, 파일 구조 + +### Community 5 - "DB: 로그/모니터링 테이블" +Cohesion: 0.17 +Nodes (11): activity_logs (사용자 활동 로그), audit_logs (감사 로그), change_logs (설계 변경 이력), DB: 로그/모니터링 테이블, login_logs (로그인 시도 로그), support_requests (기술 지원 요청), system_admin_logs (시스템 관리자 행위 로그), system_audit_logs — 사용처 (B01, B02) (+3 more) + +### Community 6 - "A09_Security — Backend" +Cohesion: 0.17 +Nodes (11): A09_Security — Backend, API 엔드포인트, DB 저장 (activity_logs), 권한 헬퍼, 마스터(회사 관리자) 전용 — `require_master`, 시스템 관리자 전용 — `require_system_admin`, 요청 스키마 (Pydantic), 의존성 (공통 유틸) (+3 more) + +### Community 7 - "2026-08-29 완료 반영" +Cohesion: 0.10 +Nodes (17): 2026-08-29 완료 반영, B03 재업로드·B05 최신 조회, B05/B06 구조물 UI 통합, B07↔B08 순서, B07 CAD 고정 척도·횡단 장 배치, B07 CAD 테마, B07 CAD 확대·팬, 배수시설 추천 기준 (+9 more) + +### Community 8 - "DB: 파일/지표면분석 테이블" +Cohesion: 0.18 +Nodes (10): DB: 파일/지표면분석 테이블, input_files.status 값, input_files (입력 원본 파일), processed_point_cloud.status 값, processed_point_cloud (필터/변환 포인트클라우드), surface_models.status 값, surface_models (지표면 모델 및 등고선), terrain_layers (지형 레이어) (+2 more) + +### Community 9 - "DB: 경로/종횡단 테이블" +Cohesion: 0.18 +Nodes (10): cross_sections.data.structures, cross_sections (횡단면 설계), `data` 컬럼 내 `options` 스냅샷 구조 (2026-07-19 도입), `data` 컬럼 내 `profile_alignment` 구조 (2026-07-23 도입), DB: 경로/종횡단 테이블, longitudinal_sections (종단면 설계), route_points (경로 좌표점), route_statistics (노선 통계) (+2 more) + +### Community 10 - "A04_NewsHistory — Frontend" +Cohesion: 0.18 +Nodes (10): A04_NewsHistory — Frontend, CSS 클래스 구조, Mock 데이터 구조, 로컬라이제이션, 미해결 사항, 반응형, 스타일 (CSS), 의존성 (+2 more) + +### Community 11 - "A07_Register — Frontend" +Cohesion: 0.18 +Nodes (10): A07_Register — Frontend, API 클라이언트 함수, 로컬라이제이션, 스타일 (CSS), 약관 동의 (아코디언), 의존성, 이벤트 핸들러, 제출 로직 (2단계 폼 전환) (+2 more) + +### Community 12 - "A08_Support — Frontend" +Cohesion: 0.18 +Nodes (10): A08_Support — Frontend, 로컬라이제이션, 세션 자동 채움, 스타일 (CSS), 의존성, 이벤트 핸들러, 제출 로직, 참고 (+2 more) + +### Community 13 - "B02_ProjRegister — Frontend" +Cohesion: 0.18 +Nodes (10): B02_ProjRegister — Frontend, 로컬라이제이션, 스타일 (CSS), 의존성, 이벤트 핸들러, 입력 필드, 제출 로직, 참고 (+2 more) + +### Community 14 - "A01_Home — Frontend" +Cohesion: 0.20 +Nodes (9): A01_Home — Frontend, Hero 섹션, 로컬라이제이션, 세부 구현, 이벤트 핸들러, 주요 기능 섹션, 최신 소식 섹션, 컴포넌트 (+1 more) + +### Community 15 - "A05_EduDetail — Frontend" +Cohesion: 0.20 +Nodes (9): A05_EduDetail — Frontend, CSS 클래스 구조, 로컬라이제이션, 반응형, 스타일 (CSS), 의존성, 이벤트 핸들러, 컴포넌트 (섹션 빌더) (+1 more) + +### Community 16 - "A06_Login — Frontend" +Cohesion: 0.20 +Nodes (9): A06_Login — Frontend, API 클라이언트 함수, 로컬라이제이션, 스타일 (CSS), 의존성, 이벤트 핸들러, 제출 및 OTP 제어 로직 (2단계 폼 전환), 컴포넌트 / 함수 (+1 more) + +### Community 17 - "A08_Support — Backend" +Cohesion: 0.20 +Nodes (9): A08_Support — Backend, API 엔드포인트, DB 저장 컬럼 (실 코드 INSERT 기준), 내부 헬퍼, 요청 스키마 (Pydantic), 의존성 (공통 유틸), 접수 로직, 특징 (+1 more) + +### Community 18 - "A09_Security — Frontend" +Cohesion: 0.20 +Nodes (9): A09_Security — Frontend, API 클라이언트 함수 (⚠️ 미사용, 정의만), 로컬라이제이션, 스타일 (CSS), 약관 데이터 (A09_Security_Terms.ts), ⚠️ 약관 텍스트와 실 코드 불일치, 의존성, 컴포넌트 / 함수 (+1 more) + +### Community 19 - "B02_ProjRegister — Backend" +Cohesion: 0.20 +Nodes (9): API 엔드포인트, B02_ProjRegister — Backend, DB 저장 컬럼 (projects INSERT), 생성 로직 (create_project 트랜잭션), 요청/응답 스키마 (Pydantic), 의존성 (공통 유틸), 참고, 파일 구조 (+1 more) + +### Community 20 - "B04_PreProcess — Backend" +Cohesion: 0.20 +Nodes (9): 2D/GIS 미표시 원인 분석 및 조치, B04_PreProcess — Backend, 📋 구현 예외 처리 검토 항목 (PLAN), ⚙️ 설정 및 환경 파일 정합성, 수치지형도 도엽 오버레이 아키텍처 (2026-07-26, 2026-08-01 S8 개편), 엔진 서브모듈, 워크플로우 상태 전이 및 자동 확정, 주요 함수 (Router / Repository / Engine / Utility) (+1 more) + +### Community 21 - "B04_PreProcess — Frontend" +Cohesion: 0.20 +Nodes (9): 3D 뷰어 DOM 마운트 버그 수리, 3D 뷰어 테마 연동 및 가독성 개선, 3D 카메라 커서 피봇 & 2D 오버레이 UI 개선 (2026-08-01~02 일원화), B04_PreProcess — Frontend, ⚠️ 계획서와 실 코드 불일치 (3D 뷰어), 의존성, 처리 흐름, 컴포넌트 & API 함수 (+1 more) + +### Community 22 - "B05 구조물 정본·통합 편집" +Cohesion: 0.20 +Nodes (9): API, B05 구조물 정본·통합 편집, B06 경계와 남은 범위, 검증, 배수관·시설 옵션, 백엔드 파일, 유역 추천·개략 단면, 정본과 타입 레지스트리 (+1 more) + +### Community 23 - "B06_Section — Frontend" +Cohesion: 0.20 +Nodes (9): 2026-08-22 파일 한계 정리, API 클라이언트, B06_Section — Frontend, SVG 렌더러 및 유틸리티, UI 패널 크기 및 리사이저 규칙 (2026-08-02 신설), 기술부채 (해결됨), 입력 옵션 (표시 옵션 및 횡단 반폭 제어), 파일 구성 (+1 more) + +### Community 24 - "A03_CompDetail — Frontend" +Cohesion: 0.22 +Nodes (8): A03_CompDetail — Frontend, CSS 클래스 구조, 로컬라이제이션, 반응형, 스타일 (CSS), 의존성, 컴포넌트 (섹션 빌더), 파일 구조 + +### Community 25 - "A06_Login — Backend" +Cohesion: 0.22 +Nodes (8): A06_Login — Backend, API 엔드포인트, 내부 헬퍼, 로그인 로직 흐름, 보안 정책 (실 코드 기준), 요청 스키마 (Pydantic), 의존성 (공통 유틸), 파일 구조 + +### Community 26 - "유토곡선 (Mass Haul Diagram) 계산 명세" +Cohesion: 0.15 +Nodes (11): 1. 개요 및 분석 목적, 2. 주요 계산 수식 및 원리 (실무 관례 반영), 3. 지반유형별 토량환산계수 기본값 (`config_system.py`), 4. 토공 운반장비 선정거리 및 분배 기준 (`config_system.py`), 5. 유토곡선 곡선 사양 (B06 구현 v2), 6. 웹앱 연동 및 시각화 명세 (2026-08-02 확정), 유토곡선 (Mass Haul Diagram) 계산 명세, B08 Quantity — 2026-09 수량산출 (+3 more) + +### Community 27 - "A07_Register — Backend" +Cohesion: 0.25 +Nodes (7): A07_Register — Backend, API 엔드포인트, 가입 로직 흐름, 요청 스키마 (Pydantic), 의존성 (공통 유틸), 참고, 파일 구조 + +### Community 28 - "B06 배수관 구조물 조작·표시" +Cohesion: 0.25 +Nodes (7): 4축 조작과 재질, B06 배수관 구조물 조작·표시, 계산·보기 분리, 구현 파일, 자체검증 기록, 조정창, 집수정 9키 조작 + +### Community 29 - "B06 기슭막이 연동·경사·단별 제어" +Cohesion: 0.25 +Nodes (7): B06 기슭막이 연동·경사·단별 제어, 검증, 단별 구간값, 선택과 하이라이트, 연동과 경사, 정본과 공용 모델, 형태와 조정창 + +### Community 30 - "B08_DesignDetail — Backend" +Cohesion: 0.25 +Nodes (7): B08_DesignDetail — Backend, 도각 템플릿 변환 및 종단도 A1 도각 병합 (2026-07-26), 도면 관리, 종단 30측점 분할, CAD 수량산출표 및 도면 템플릿 파이프라인, 워크플로우 게이팅 연동, 종단도 30측점 N분할 및 납품 양식 측점 테이블 (2026-07-25 N-1-1), 현재 책임 경계, 횡단도 4개 선별 레이어 및 CAD 수량산출표 (2026-07-25 N-1-2/N-1-3) + +### Community 31 - "B08 토적도·수리집수면적유역도" +Cohesion: 0.25 +Nodes (7): B08 토적도·수리집수면적유역도, 검증 한계, 구현·검증 완료, 남은 결정, 데이터 흐름, 도면 기준, 유역 정보표 + +### Community 32 - "B09_Estimation — Frontend" +Cohesion: 0.25 +Nodes (7): B09_Estimation — Frontend, 로컬라이제이션, 백엔드/DB — 미착수, 의존성, 참고, 컴포넌트 / 함수, 파일 구조 + +### Community 33 - "현재 구현 현황 — 소스 읽기 감사" +Cohesion: 0.06 +Nodes (28): 구현 상태 용어, 단계별 판정, 미결 설계, 반드시 유지할 구분, 비워크플로 영역 판정, 현재 구현 현황 — 소스 읽기 감사, Aislo 프로젝트 지도, 명칭 판정 (+20 more) + +### Community 34 - "DB: 구조물/수량/산출물 테이블" +Cohesion: 0.29 +Nodes (6): DB: 구조물/수량/산출물 테이블, output_files (개별 산출 파일 리스트), outputs (최종 견적/도면 산출 세션), quantity_items (수량 산출 항목), quantity_items 총비용 계산 예, structures (배치 구조물) + +### Community 35 - "B01_Dashboard — Backend" +Cohesion: 0.29 +Nodes (6): B01_Dashboard — Backend, 기술부채, 라우터 권한 헬퍼, 세분화 백엔드 위키 명세, 요청 스키마, 저장소 및 삭제 함수 + +### Community 36 - "B01_Dashboard — Frontend" +Cohesion: 0.29 +Nodes (6): B01_Dashboard — Frontend, UI 권한 헬퍼, 공유 자원 연결, 모달, 분할된 UI 컴포넌트 파일, 파일과 진입점 + +### Community 37 - "B03_FileInput — Backend" +Cohesion: 0.29 +Nodes (6): B03_FileInput — Backend, workflow·알림, 메타데이터 분석 및 파일 지문, 임시 보관함 (R2 Temp Upload), 입력 검증·파일 처리, 저장소 및 초기화 + +### Community 38 - "B05 급선회 3D 국부 보정 계획" +Cohesion: 0.29 +Nodes (6): B05 급선회 3D 국부 보정 계획, 구조물 연동, 국부 패치 절차, 목적과 경계, 완료 조건, 확인된 노견 확장 회귀 + +### Community 39 - "B06 집수정·다단 기슭막이" +Cohesion: 0.29 +Nodes (6): B06 집수정·다단 기슭막이, 미결, 유입 구조물, 유출 성토부·다단, 자체검증 기록, 집수정 계류측 성토부 + +### Community 40 - "B06 배수관 구조물 기하·조작 체계" +Cohesion: 0.29 +Nodes (6): B06 배수관 구조물 기하·조작 체계, 검증 상태, 구현 파일, 기슭막이·관 핵심 규칙, 설계선 트림, 접속선 + +### Community 41 - "B06 배수관 횡단도 세트" +Cohesion: 0.29 +Nodes (6): B06 배수관 횡단도 세트, 검증 근거와 후속, 계획선 규칙, 구현 항목, 입력·판정, 형상·표시 순서 (2026-08-20 스냅샷) + +### Community 42 - "B10_Payment — Frontend" +Cohesion: 0.29 +Nodes (6): B10_Payment — Frontend, 로컬라이제이션, 비즈니스 로직 전제 (목업), 의존성, 주요 컴포넌트 및 함수 (Mockup), 파일 구조 + +### Community 43 - "B11_Status — Frontend" +Cohesion: 0.29 +Nodes (6): B11_Status — Frontend, 결재 상태 흐름 (Payment Flow Status), 로컬라이제이션, 의존성, 주요 컴포넌트 및 기능 (Mockup), 파일 구조 + +### Community 44 - "저장 경로 규칙 (Workflow-based Folder Structure)" +Cohesion: 0.29 +Nodes (6): B05 구조물 3D 투영 커브, 검증, 구조물 날개·바닥 연결, 비탈 투영·성토면 절단, 저장·호환성, 커브 생성·렌더 + +### Community 45 - "DB: 프로젝트 관리 테이블" +Cohesion: 0.33 +Nodes (5): DB: 프로젝트 관리 테이블, project_automations (프로젝트 자동화 정책), project_versions (프로젝트 버전 스냅샷), project_workflow_stages (단계별 상세 상태), projects (프로젝트) + +### Community 46 - "임도기술교본 원문 md 추출 품질 결함" +Cohesion: 0.05 +Nodes (33): 2026-09-09 완료 구현·검증, B05·B06 종횡단, B07 표준도, B08 수량산출, B09 원가계산, 검증 경계, 결함 유형 (예시 = 위 파일 기준 줄번호), 원인 추정 (+25 more) + +### Community 47 - "A01_Home — 세부 구현" +Cohesion: 0.33 +Nodes (5): A01_Home — 세부 구현, 데이터 흐름, 미해결, 스타일, 의존성 + +### Community 48 - "A02_ProgDetail — 세부 구현" +Cohesion: 0.33 +Nodes (5): A02_ProgDetail — 세부 구현, 데이터 흐름, 미해결 / 특이사항, 스타일 (CSS), 의존성 + +### Community 49 - "A02_ProgDetail — Frontend" +Cohesion: 0.33 +Nodes (5): A02_ProgDetail — Frontend, 구조, 세부 구현, 제약 준수, 컴포넌트 분석 + +### Community 50 - "B01_Dashboard — API" +Cohesion: 0.33 +Nodes (5): B01_Dashboard — API, 사용자·회사, 시스템 관리자, 프로젝트·자동화, 회사 관리자 + +### Community 51 - "B03_FileInput — Frontend" +Cohesion: 0.33 +Nodes (5): API 클라이언트, B03_FileInput — Frontend, UI 지원 유틸리티 (분할 완료), 브라우저 상태·오프라인 보조, 페이지·업로드 흐름 + +### Community 52 - "B05 계획노선 코리도 삼각망 서피스" +Cohesion: 0.33 +Nodes (5): B05 계획노선 코리도 삼각망 서피스, 검증, 저장·호환성, 진행 중 계획, 프론트엔드 구성 + +### Community 53 - "B05 구조물·UI 현재 계획" +Cohesion: 0.33 +Nodes (5): 2026-08-18 B05 페이지 개선 2차 계획 기록, 2026-08-18 사이드 패널·입력 로직 계획 기록, B05/B06 구조물 적용 범위, B05 구조물·UI 현재 계획, 후속 결정 대기 + +### Community 54 - "B05 구조물 입력·종단 표시 정비 — 2026-08-19" +Cohesion: 0.33 +Nodes (5): B05 구조물 입력·종단 표시 정비 — 2026-08-19, 기록된 검증, 기준 해석 보류, 완료 범위, 주요 항목 + +### Community 55 - "B07 구조물 표준도 — 조사·합의와 현재 통로" +Cohesion: 0.29 +Nodes (6): B05_Profile — Frontend, 남은 파일 한계, 📂 소스코드 1:1 세분화 위키 파일 목록, 종단 편집 안전장치, 종단테이블 표시 보정, 📋 핵심 프론트엔드 아키텍처 개요 + +### Community 56 - "B08 횡단도 구조물·장 배치" +Cohesion: 0.33 +Nodes (5): B08 횡단도 구조물·장 배치, 결과, 데이터·구현 흐름, 문제와 결정, 한계 + +### Community 57 - "2026-09-07 완료·보류 요약" +Cohesion: 0.14 +Nodes (11): 2026-09-07 완료·보류 요약, 성능·운영 결정, 완료 범위, 주의, B06_Section — Backend, 계산 엔진, 데이터 영구 저장 및 환경설정, 라우터·workflow (조회, 확정, 타 프로젝트 불러오기 및 재생성) (+3 more) + +### Community 58 - "B07 외부 WebCAD 비교 실행환경" +Cohesion: 0.40 +Nodes (4): B07 외부 WebCAD 비교 실행환경, 검증 상태, 라이선스 주의, 실행과 종료 + +### Community 59 - "Temp Upload (프로젝트 생성 전 임시 보관함)" +Cohesion: 0.40 +Nodes (4): Temp Upload (프로젝트 생성 전 임시 보관함), 사용처, 주요 개념 및 스펙, 주요 구성 요소 + +### Community 60 - "Q: 배수관 매설시 각도의 제약조건이 있는지 확인해줘. 임도에서" +Cohesion: 0.40 +Nodes (4): Answer, Outcome, Q: 배수관 매설시 각도의 제약조건이 있는지 확인해줘. 임도에서, Source Nodes + +### Community 61 - "Q: 임도 기술정보DB에서 집수정의 형태정보는 어떤게 있는지 확인해줘." +Cohesion: 0.40 +Nodes (4): Answer, Outcome, Q: 임도 기술정보DB에서 집수정의 형태정보는 어떤게 있는지 확인해줘., Source Nodes + +### Community 62 - "B02_ProjRegister — DB" +Cohesion: 0.40 +Nodes (4): B02_ProjRegister — DB, 쓰는 테이블, 저장소(파일시스템), 참고 (계획 당시 의도) + +### Community 63 - "B03_FileInput — API" +Cohesion: 0.40 +Nodes (4): B03_FileInput — API, workflow 조회, 일반 업로드, 청크 업로드 + +### Community 64 - "B04_PreProcess — DB" +Cohesion: 0.40 +Nodes (4): B04_PreProcess — DB, Repository 함수, 쓰는 테이블, 참고 + +### Community 65 - "B05_Profile — API" +Cohesion: 0.40 +Nodes (4): API 스키마 및 반환 필드, B05_Profile — API, `POST /{project_id}/route/confirm` 요청 (`RouteConfirmRequest`), 엔드포인트 + +### Community 66 - "B05 변형 성토면 마감·날개 패치" +Cohesion: 0.40 +Nodes (4): B05 변형 성토면 마감·날개 패치, 세월교 날개 패치, 저장·검증, 패치 마감 + +### Community 67 - "B05_Profile — Profile Alignment & Table" +Cohesion: 0.40 +Nodes (4): 12행 도면 테이블 및 가로 스크롤 정렬 개편 (`_UI_Profile_Table.ts`, `_UI_Profile_Panel.ts`), B05_Profile — Profile Alignment & Table, 비정규 측점(구조물) 테이블 오버레이 & 런타임 검증 (`_UI_Profile_Table.ts`, `_UI_IrregularStations.ts`), 종단 계획고 편집 인터랙션 (`_UI_Profile_Edit.ts`, `_UI_Profile_Panel.ts`, `_UI_Page.ts`) + +### Community 68 - "B05 구조물 비정규 측점 공급" +Cohesion: 0.40 +Nodes (4): B05 구조물 비정규 측점 공급, 검증, 공급 경로, 정본 규칙 + +### Community 69 - "B05_Profile_UI_Drainage_Parts — 배수유역 공용 UI 파츠" +Cohesion: 0.40 +Nodes (4): 1. 개요 및 역할, 2. 주요 기능 및 함수, 3. 의존성, B05_Profile_UI_Drainage_Parts — 배수유역 공용 UI 파츠 + +### Community 70 - "_UI_Drainage_Render — 배수유역도 Canvas 렌더러" +Cohesion: 0.40 +Nodes (4): 1. 개요 및 역할, 2. 주요 기능 및 함수, 3. 의존성, _UI_Drainage_Render — 배수유역도 Canvas 렌더러 + +### Community 71 - "_UI_Profile_Structures — 종단 구조물 렌더링 및 인터랙션" +Cohesion: 0.40 +Nodes (4): 1. 개요 및 역할, 2. 주요 기능 및 함수, 3. 의존성, _UI_Profile_Structures — 종단 구조물 렌더링 및 인터랙션 + +### Community 72 - "_UI_Selection — 배수/구조물 3자 선택 동기화" +Cohesion: 0.40 +Nodes (4): 1. 개요 및 역할, 2. 주요 기능 및 함수, 3. 의존성, _UI_Selection — 배수/구조물 3자 선택 동기화 + +### Community 73 - "B06 인접 측점 구조물 트림 정리" +Cohesion: 0.40 +Nodes (4): B06 인접 측점 구조물 트림 정리, 검증, 원인과 경계, 처리 항목 + +### Community 74 - "B06 물넘이포장·콘크리트 포장·독립 기슭막이" +Cohesion: 0.40 +Nodes (4): B06 물넘이포장·콘크리트 포장·독립 기슭막이, 검증, 독립 기슭막이, 포장과 물넘이 + +### Community 75 - "B06_Section_Engine_Areas — 횡단 면적 적분 연산 엔진" +Cohesion: 0.40 +Nodes (4): 1. 개요 및 역할, 2. 주요 기능 및 함수, 3. 의존성, B06_Section_Engine_Areas — 횡단 면적 적분 연산 엔진 + +### Community 76 - "B06_Section_Router_Confirm — 임시 저장 및 확정 라우터" +Cohesion: 0.40 +Nodes (4): 1. 개요 및 역할, 2. 주요 기능 및 엔드포인트, 3. 의존성, B06_Section_Router_Confirm — 임시 저장 및 확정 라우터 + +### Community 77 - "B06_Section_UI_Cross_Areas — 횡단 단면적 표기 및 밴드 하이라이트" +Cohesion: 0.40 +Nodes (4): 1. 개요 및 역할, 2. 주요 기능 및 함수, 3. 의존성, B06_Section_UI_Cross_Areas — 횡단 단면적 표기 및 밴드 하이라이트 + +### Community 78 - "B06_Section_UI_Cross_Design — 횡단 측점별 세부 설계 컨트롤" +Cohesion: 0.40 +Nodes (4): 1. 개요 및 역할, 2. 주요 기능 및 함수, 3. 의존성, B06_Section_UI_Cross_Design — 횡단 측점별 세부 설계 컨트롤 + +### Community 79 - "B06_Section_UI_MassHaul — 유토곡선 적분 계산 엔진" +Cohesion: 0.40 +Nodes (4): 1. 개요 및 역할, 2. 주요 기능 및 함수, 3. 의존성, B06_Section_UI_MassHaul — 유토곡선 적분 계산 엔진 + +### Community 80 - "B06_Section_UI_MassHaul_Balance — 평형선 및 장비 띠 분할 엔진" +Cohesion: 0.40 +Nodes (4): 1. 개요 및 역할, 2. 주요 기능 및 알고리즘, 3. 의존성, B06_Section_UI_MassHaul_Balance — 평형선 및 장비 띠 분할 엔진 + +### Community 81 - "B06_Section_UI_MassHaul_Balance_View — 운반 띠 시각화 렌더러" +Cohesion: 0.40 +Nodes (4): 1. 개요 및 역할, 2. 주요 기능 및 렌더링, 3. 의존성, B06_Section_UI_MassHaul_Balance_View — 운반 띠 시각화 렌더러 + +### Community 82 - "B06_Section_UI_MassHaul_Balloon — 물량 말풍선 배치 및 조작" +Cohesion: 0.40 +Nodes (4): 1. 개요 및 역할, 2. 주요 기능 및 알고리즘, 3. 의존성, B06_Section_UI_MassHaul_Balloon — 물량 말풍선 배치 및 조작 + +### Community 83 - "B06_Section_UI_MassHaul_Curve — 유토곡선 궤적 보간 및 렌더링" +Cohesion: 0.40 +Nodes (4): 1. 개요 및 역할, 2. 주요 기능 및 기하 수학, 3. 의존성, B06_Section_UI_MassHaul_Curve — 유토곡선 궤적 보간 및 렌더링 + +### Community 84 - "B06_Section_UI_MassHaul_Settle — 토량 정산 및 장거리 상쇄 엔진" +Cohesion: 0.40 +Nodes (4): 1. 개요 및 역할, 2. 주요 기능 및 로직, 3. 의존성, B06_Section_UI_MassHaul_Settle — 토량 정산 및 장거리 상쇄 엔진 + +### Community 85 - "B06_Section_UI_MassHaul_View — 유토곡선 시각화 렌더러" +Cohesion: 0.40 +Nodes (4): 1. 개요 및 역할, 2. 주요 기능 및 함수, 3. 의존성, B06_Section_UI_MassHaul_View — 유토곡선 시각화 렌더러 + +### Community 86 - "B06_Section_UI_Page — B06 메인 페이지 오케스트레이터" +Cohesion: 0.40 +Nodes (4): 1. 개요 및 역할, 2. 주요 기능 및 함수, 3. 의존성, B06_Section_UI_Page — B06 메인 페이지 오케스트레이터 + +### Community 87 - "B06_Section_UI_Section_View — 종/횡단 및 유토곡선 뷰 조립" +Cohesion: 0.40 +Nodes (4): 1. 개요 및 역할, 2. 주요 기능 및 함수, 3. 의존성, B06_Section_UI_Section_View — 종/횡단 및 유토곡선 뷰 조립 + +### Community 88 - "B07 Quantity — Backend" +Cohesion: 0.40 +Nodes (4): B07 Quantity — Backend, 구현되지 않은 항목, 구현된 항목, 책임 경계 미결 + +### Community 89 - "B08 CAD 블록 라이브러리·사진" +Cohesion: 0.40 +Nodes (4): B08 CAD 블록 라이브러리·사진, 검증, 구현, 범위 결정 + +### Community 90 - "B08 OpenWebCAD 명령 체계" +Cohesion: 0.40 +Nodes (4): B08 OpenWebCAD 명령 체계, 검증·제한, 구현 범위, 핵심 구성 + +### Community 91 - "B08_CAD_table_entity.md" +Cohesion: 0.33 +Nodes (5): B08 CAD TableEntity, 검증·후속, 기능, 모델, 이관 범위 + +### Community 92 - "공개·인증·관리 영역 지도" +Cohesion: 0.29 +Nodes (6): B09 원가계산 — 2026-09-09 완료 근거, 가격·조건 입력, 검증 기록, 기계·제비율·산출물, 남은 경계, 단가·밑수 완성 + +### Community 93 - "공유 자원 영향 지도" +Cohesion: 0.33 +Nodes (5): B08 수량산출 — 2026-09-09 완료 근거, 검증 기록, 구조물·수량 표시, 남은 경계, 밑수와 인계 + +### Community 94 - "A00_Common — 공통 프레임워크 & 유틸" +Cohesion: 0.50 +Nodes (3): A00_Common — 공통 프레임워크 & 유틸, 📋 개요, 📂 세분화 마크다운 문서 목록 + +### Community 95 - "app_shell.ts" +Cohesion: 0.50 +Nodes (3): app_shell.ts, 🔗 연관 개념 및 의존성, 🛠️ 주요 함수 목록 + +### Community 96 - "router.ts" +Cohesion: 0.50 +Nodes (3): router.ts, 🔗 연관 개념 및 의존성, 🛠️ 주요 함수 목록 + +### Community 97 - "B04_PreProcess — API" +Cohesion: 0.50 +Nodes (3): B04_PreProcess — API, 엔드포인트, 요청/응답 스키마 (Pydantic) + +### Community 98 - "B04_PreProcess — Dependencies" +Cohesion: 0.50 +Nodes (3): B04_PreProcess — Dependencies, 백엔드 (Python), 프론트엔드 (TypeScript) + +### Community 99 - "B05_Profile — Backend" +Cohesion: 0.50 +Nodes (3): B05_Profile — Backend, 📂 소스코드 1:1 세분화 위키 파일 목록, 📋 핵심 백엔드 아키텍처 개요 + +### Community 100 - "B05_Profile — DB 사용 관계" +Cohesion: 0.50 +Nodes (3): B05_Profile — DB 사용 관계, Repository 함수, 저장 경로 + +### Community 101 - "B05_Profile — 3D Viewer & Interaction" +Cohesion: 0.50 +Nodes (3): 3D 마커 직접 드래그 이동 (0_old I-401 이식), 3D 지형 뷰포트 시각화 (`_UI_Viewer.ts`, `_UI_Markers.ts`), B05_Profile — 3D Viewer & Interaction + +### Community 102 - "B05_Profile_Engine_Sections.md" +Cohesion: 0.40 +Nodes (4): B05_Profile_Engine_Sections.py, ⚠️ 런타임 검증 주의사항 (2026-07-24 검증 보고서 기준), 🔗 연관 개념 및 의존성, 🛠️ 주요 함수 목록 + +### Community 103 - "B05_Profile_Api_Fetch.ts" +Cohesion: 0.50 +Nodes (3): B05_Profile_Api_Fetch.ts, 🔗 연관 개념 및 의존성, 🛠️ 주요 API 함수 목록 + +### Community 104 - "B05_Profile_UI_Drainage_Panel" +Cohesion: 0.50 +Nodes (3): B05_Profile_UI_Drainage_Panel, 📋 개요 및 특징, 🛠️ 주요 함수 / 심볼 목록 + +### Community 105 - "B05_Profile_UI_Drainage_Pipes" +Cohesion: 0.50 +Nodes (3): B05_Profile_UI_Drainage_Pipes, 📋 개요 및 특징, 🛠️ 주요 함수 / 심볼 목록 + +### Community 106 - "B05_Profile_UI_Profile_Panel.md" +Cohesion: 0.40 +Nodes (4): B05_Profile_UI_Profile_Panel.ts, 🔗 연관 개념 및 의존성, 🛠️ 주요 기능 및 개선사항 (2026-08-06), 🛠️ 주요 함수 목록 + +### Community 107 - "B06_Section — DB 사용 관계" +Cohesion: 0.50 +Nodes (3): B06_Section — DB 사용 관계, Repository 함수, 파일 경로 + +### Community 108 - "B06_Section_Api_Fetch — B06 프론트엔드 API 클라이언트" +Cohesion: 0.50 +Nodes (3): 1. 개요 및 역할, 2. 주요 연동 API 함수, B06_Section_Api_Fetch — B06 프론트엔드 API 클라이언트 + +### Community 109 - "B06_Section_UI_Standard_Diagram — 표준단면 모식도 컴포넌트" +Cohesion: 0.50 +Nodes (3): 1. 개요 및 역할, 2. 주요 기능, B06_Section_UI_Standard_Diagram — 표준단면 모식도 컴포넌트 + +### Community 110 - "B06_Section_UI_Standard_Panel — 표준단면 입력 및 제어 패널" +Cohesion: 0.50 +Nodes (3): 1. 개요 및 역할, 2. 주요 기능, B06_Section_UI_Standard_Panel — 표준단면 입력 및 제어 패널 + +### Community 111 - "B08_DesignDetail — Dependencies" +Cohesion: 0.50 +Nodes (3): B08_DesignDetail — Dependencies, Backend (requirements.txt), Frontend (package.json / tsconfig.json) + +### Community 112 - "common_util_project_delete.md" +Cohesion: 0.50 +Nodes (3): common_util_project_delete.py, 🔗 역참조 (사용처), 🛠️ 주요 함수 목록 + +### Community 113 - "common_util_storage.md" +Cohesion: 0.50 +Nodes (3): common_util_storage.py, 🔗 역참조 (사용처), 🛠️ 주요 함수 목록 + +### Community 114 - "common_util_workflow_state.md" +Cohesion: 0.50 +Nodes (3): common_util_workflow_state.py, 🔗 역참조 (사용처), 🛠️ 주요 함수 목록 + +### Community 116 - "A01_Home_UI_Page.md" +Cohesion: 0.50 +Nodes (3): A01_Home_UI_Page.ts, 🔗 연관 개념 및 의존성, 🛠️ 주요 함수 및 인터페이스 목록 + +### Community 117 - "A02_ProgDetail_UI_Page.md" +Cohesion: 0.50 +Nodes (3): A02_ProgDetail_UI_Page.ts, 🔗 연관 개념 및 의존성, 🛠️ 주요 함수 목록 + +### Community 118 - "A06_Login_Router.md" +Cohesion: 0.50 +Nodes (3): A06_Login_Router.py, 🛠️ 라우터 API 및 주요 헬퍼 함수 목록, 🔗 연관 개념 및 의존성 + +### Community 119 - "A07_Register_Router.md" +Cohesion: 0.50 +Nodes (3): A07_Register_Router.py, 🛠️ 라우터 API 및 주요 함수 목록, 🔗 연관 개념 및 의존성 + +### Community 120 - "A08_Support_Router.md" +Cohesion: 0.50 +Nodes (3): A08_Support_Router.py, 🛠️ 라우터 API 및 주요 함수 목록, 🔗 연관 개념 및 의존성 + +### Community 121 - "A09_Security_Router.md" +Cohesion: 0.50 +Nodes (3): A09_Security_Router.py, 🛠️ 라우터 API 및 주요 함수 목록, 🔗 연관 개념 및 의존성 + +### Community 124 - "B01_Dashboard_Router.md" +Cohesion: 0.50 +Nodes (3): B01_Dashboard_Router.py, 🛠️ 라우터 API 및 주요 함수 목록, 🔗 연관 개념 및 의존성 + +### Community 125 - "B01_Dashboard_UI_Page.md" +Cohesion: 0.50 +Nodes (3): B01_Dashboard_UI_Page.ts, 🔗 연관 개념 및 의존성, 🛠️ 주요 함수 목록 + +### Community 126 - "B02_ProjRegister_Router.md" +Cohesion: 0.50 +Nodes (3): B02_ProjRegister_Router.py, 🔗 연관 개념 및 의존성, 🛠️ 주요 함수 목록 + +### Community 129 - "B03_FileInput_Router.md" +Cohesion: 0.50 +Nodes (3): B03_FileInput_Router.py, 🔗 연관 개념 및 의존성, 🛠️ 주요 함수 목록 + +### Community 130 - "B04_PreProcess_Router.md" +Cohesion: 0.50 +Nodes (3): B04_PreProcess_Router.py, 🔗 연관 개념 및 의존성, 🛠️ 주요 함수 목록 + +### Community 132 - "B05_Profile_Engine_Grade.md" +Cohesion: 0.50 +Nodes (3): B05_Profile_Engine_Grade.py, 🔗 연관 개념 및 의존성, 🛠️ 주요 클래스 및 함수 목록 + +### Community 133 - "B05_Profile_Engine_Solver.md" +Cohesion: 0.50 +Nodes (3): B05_Profile_Engine_Solver.py, 🛠️ 엔진 핵심 함수 목록, 🔗 연관 개념 및 의존성 + +### Community 134 - "B05_Profile_Repository.md" +Cohesion: 0.50 +Nodes (3): B05_Profile_Repository.py, 🛠️ DB 접근 함수 목록, 🔗 연관 개념 및 의존성 + +### Community 135 - "B05_Profile_Router.md" +Cohesion: 0.50 +Nodes (3): B05_Profile_Router.py, 🛠️ 라우터 API 및 주요 함수 목록, 🔗 연관 모듈 및 의존성 + +### Community 136 - "B05_Profile_Router_Confirm.md" +Cohesion: 0.50 +Nodes (3): B05_Profile_Router_Confirm.py, 🔗 연관 모듈, 🛠️ 주요 헬퍼 함수 목록 + +### Community 137 - "B05_Profile_Schema.md" +Cohesion: 0.50 +Nodes (3): B05_Profile_Schema.py, 🛠️ Pydantic 모델 및 검증 헬퍼 목록, 🔗 연관 개념 및 의존성 + +### Community 138 - "B05_Profile_UI_IrregularStations.md" +Cohesion: 0.50 +Nodes (3): B05_Profile_UI_IrregularStations.ts, 🔗 연관 개념 및 의존성, 🛠️ 주요 인터페이스 및 함수 목록 + +### Community 139 - "B05_Profile_UI_Page.md" +Cohesion: 0.50 +Nodes (3): B05_Profile_UI_Page.ts, 🔗 연관 개념 및 의존성, 🛠️ 주요 컴포넌트 및 함수 목록 + +### Community 140 - "B05_Profile_UI_Panel.md" +Cohesion: 0.50 +Nodes (3): B05_Profile_UI_Panel.ts, 🔗 연관 개념 및 의존성, 🛠️ 주요 함수 목록 + +### Community 141 - "B05_Profile_UI_Profile_Alignment.md" +Cohesion: 0.50 +Nodes (3): B05_Profile_UI_Profile_Alignment.ts, 🔗 연관 개념 및 의존성, 🛠️ 주요 함수 목록 + +### Community 142 - "B05_Profile_UI_Profile_Table.md" +Cohesion: 0.50 +Nodes (3): B05_Profile_UI_Profile_Table.ts, 🔗 연관 개념 및 의존성, 🛠️ 주요 함수 목록 + +### Community 143 - "B05_Profile_UI_Viewer.md" +Cohesion: 0.50 +Nodes (3): B05_Profile_UI_Viewer.ts, 🔗 연관 개념 및 의존성, 🛠️ 주요 함수 목록 + +### Community 145 - "B06_Section_Router.md" +Cohesion: 0.50 +Nodes (3): B06_Section_Router.py, 🛠️ 라우터 API 및 주요 함수 목록, 🔗 연관 개념 및 의존성 + +### Community 146 - "B01~B09 Workflow 데이터 흐름" +Cohesion: 0.40 +Nodes (4): 3D 방위와 좌표계, B04 세부유역·방위·좌표계, 세부유역 형상 보존, 종단 높낮이 기반 배정 + +### Community 158 - "B03 계획노선 정본·좌표계 후속" +Cohesion: 0.40 +Nodes (4): B05 구조물 구간 절취·측벽·성토 패치, B06 변형 성토선 패치, 저장·검증, 절취와 경계 + +### Community 159 - "B03 파일 입력 화면 정리" +Cohesion: 0.40 +Nodes (4): B06 횡단 관 형상·유토곡선 후속, I형 집수정 관 형상, 계산 상태와 경고, 파일 책임 분리 + +### Community 160 - "B04 3D 방위·좌표계 최신 결정" +Cohesion: 0.40 +Nodes (4): B08 CAD 기본 조작, 검증·제외, 선택·편집, 입력·상태 + +### Community 161 - "B04 세부유역·방위·좌표계" +Cohesion: 0.40 +Nodes (4): B08 CAD 도각·표제란, 값 공급, 도각 편집·보존, 회사 자산과 담당자 + +### Community 162 - "B05 구조물 구간 절취·측벽·성토 패치" +Cohesion: 0.40 +Nodes (4): B08 CAD 사용자 편의성 정리, 검증 상태, 구현 기록, 사용자 흐름 + +### Community 163 - "B05 구조물 3D 투영 커브" +Cohesion: 0.50 +Nodes (3): B03 계획노선 정본·좌표계 후속, LAS 없는 설계와 업로드 상태, 계획노선 정본 + +### Community 164 - "B05_Profile — Frontend" +Cohesion: 0.50 +Nodes (3): B03 파일 입력 화면 정리, 입력 규칙, 화면 구성 + +### Community 165 - "B05 유토곡선·구조물 후속" +Cohesion: 0.50 +Nodes (3): 3D 방위 위젯, B04 3D 방위·좌표계 최신 결정, 작업 좌표계 + +### Community 166 - "B05 종단곡선·실시간 횡단 연동" +Cohesion: 0.50 +Nodes (3): B05 유토곡선·구조물 후속, 유지·판정 사항, 유토곡선 공용화 + +### Community 167 - "B06 횡단 계산 미러·카드 표기" +Cohesion: 0.50 +Nodes (3): B05 종단곡선·실시간 횡단 연동, 실시간 횡단·유토곡선, 초기 종단곡선 + +### Community 168 - "B06 횡단 관 형상·유토곡선 후속" +Cohesion: 0.50 +Nodes (3): B06 횡단 계산 미러·카드 표기, 프론트 계산 미러, 횡단 카드 표기 + +### Community 171 - "B08 CAD·납품 도면 후속" +Cohesion: 0.50 +Nodes (3): B08 CAD·납품 도면 후속, CAD 편집·확정, 토적도·유역도 + +### Community 182 - "2026-09-02 완료 항목" +Cohesion: 0.25 +Nodes (7): 2026-09-02 완료 항목, B05 구조물 3D, B05 종단 편집 후속, CAD, 노선·지표면, 작업 환경, 회귀 상태 + +### Community 183 - "2026-09-03 완료 — 입력·배수·종횡단·CAD" +Cohesion: 0.50 +Nodes (3): 2026-09-03 완료 — 입력·배수·종횡단·CAD, 공통 결정, 완료 범위 + +### Community 184 - "2026-09-03 추가 완료 — 화면·종단·횡단" +Cohesion: 0.50 +Nodes (3): 2026-09-03 추가 완료 — 화면·종단·횡단, 완료 범위, 최신 결정 + +## Knowledge Gaps +- **756 isolated node(s):** `단계별 판정`, `비워크플로 영역 판정`, `구현 상태 용어`, `반드시 유지할 구분`, `미결 설계` (+751 more) + These have ≤1 connection - possible missing edges or undocumented components. +- **34 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. + +## Work-memory lessons + +**Known dead ends** — questions that led nowhere; don't re-derive. +- "배수관 매설시 각도의 제약조건이 있는지 확인해줘. 임도에서" -> `배수유역 해석 및 세부설계` +- "임도 기술정보DB에서 집수정의 형태정보는 어떤게 있는지 확인해줘." -> `B06 배수관 횡단도 세트`, `유입 구조물 판정` + +## Suggested Questions +_Questions this graph is uniquely positioned to answer:_ + +- **What connects `단계별 판정`, `비워크플로 영역 판정`, `구현 상태 용어` to the rest of the system?** + _756 weakly-connected nodes found - possible documentation gaps or missing edges._ +- **Should `UI Templates — Localization & Components` be split into smaller, more focused modules?** + _Cohesion score 0.046511627906976744 - nodes in this community are weakly interconnected._ +- **Should `인증 / RBAC` be split into smaller, more focused modules?** + _Cohesion score 0.05555555555555555 - nodes in this community are weakly interconnected._ +- **Should `A00_Common — App Shell Framework` be split into smaller, more focused modules?** + _Cohesion score 0.07692307692307693 - nodes in this community are weakly interconnected._ +- **Should `2026-09-04 완료 항목` be split into smaller, more focused modules?** + _Cohesion score 0.06896551724137931 - nodes in this community are weakly interconnected._ +- **Should `2026-08-29 완료 반영` be split into smaller, more focused modules?** + _Cohesion score 0.1 - nodes in this community are weakly interconnected._ +- **Should `현재 구현 현황 — 소스 읽기 감사` be split into smaller, more focused modules?** + _Cohesion score 0.058823529411764705 - nodes in this community are weakly interconnected._ \ No newline at end of file diff --git a/docs/wiki/graphify-out/2026-09-12/cost.json b/docs/wiki/graphify-out/2026-09-12/cost.json new file mode 100644 index 00000000..db24c842 --- /dev/null +++ b/docs/wiki/graphify-out/2026-09-12/cost.json @@ -0,0 +1,51 @@ +{ + "runs": [ + { + "date": "2026-08-16T00:00:00+09:00", + "input_tokens": 265124, + "output_tokens": 14991, + "files": 146 + }, + { + "date": "2026-08-16T12:43:20.106802+00:00", + "input_tokens": 27985, + "output_tokens": 2184, + "files": 22 + }, + { + "date": "2026-08-16T12:46:45.166477+00:00", + "input_tokens": 5694, + "output_tokens": 1138, + "files": 6 + }, + { + "date": "2026-08-16T12:48:56.020124+00:00", + "input_tokens": 14784, + "output_tokens": 2835, + "files": 12 + }, + { + "date": "2026-08-16T14:33:37.811664+00:00", + "input_tokens": 0, + "output_tokens": 0, + "files": 12, + "usage_note": "semantic subagent token usage unavailable from collaboration runtime; graph content extracted and validated" + }, + { + "date": "2026-08-20T11:01:22.299635+00:00", + "input_tokens": 0, + "output_tokens": 0, + "files": 10, + "usage_note": "Gemini backend dependency unavailable; host semantic extraction used and collaboration runtime token usage unavailable; 27 nodes/59 edges validated" + }, + { + "date": "2026-08-21T09:54:12.581221+00:00", + "input_tokens": 0, + "output_tokens": 0, + "files": 3, + "note": "collaboration runtime did not expose semantic extraction token usage" + } + ], + "total_input_tokens": 313587, + "total_output_tokens": 21148 +} \ No newline at end of file diff --git a/docs/wiki/graphify-out/2026-09-12/graph.json b/docs/wiki/graphify-out/2026-09-12/graph.json new file mode 100644 index 00000000..29afc03e --- /dev/null +++ b/docs/wiki/graphify-out/2026-09-12/graph.json @@ -0,0 +1,24053 @@ +{ + "directed": false, + "multigraph": false, + "graph": { + "hyperedges": [ + { + "id": "workflow_b03_b08_integration", + "label": "B03-B08 Workflow Data Flow", + "nodes": [ + "b03_fileinput_route_snapshot_crs", + "b04_preprocess_drainage_compass_crs", + "b05_profile_frontend", + "b06_section_cross_design_ui_2026_09", + "b08_designdetail_frontend" + ], + "relation": "participate_in", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "index.md" + }, + { + "id": "mass_haul_shared_logic", + "label": "Shared Mass Haul Calculation and UI", + "nodes": [ + "b05_profile_masshaul_structure_2026_09", + "b06_section_masshaul_culvert_2026_09", + "b08_designdetail_cad_delivery_2026_09" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 0.85, + "source_file": "pages/B05_Profile/B05_masshaul_structure_2026_09.md" + }, + { + "id": "cad_delivery_system", + "label": "CAD Delivery and Usability Framework", + "nodes": [ + "b08_designdetail_cad_interaction", + "b08_designdetail_cad_title_block", + "b08_designdetail_cad_usability_2026_09_01", + "b08_designdetail_cad_delivery_2026_09" + ], + "relation": "form", + "confidence": "EXTRACTED", + "confidence_score": 0.95, + "source_file": "pages/B08_DesignDetail/B08_cad_delivery_2026_09.md" + }, + { + "id": "las_free_workflow_chain", + "label": "LAS-Free Analysis Workflow", + "nodes": [ + "concepts_las_free_sheet_surface", + "pages_b03_fileinput_backend", + "pages_b04_preprocess_backend" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "concepts/las_free_sheet_surface.md" + }, + { + "id": "b08_drawing_generation_flow", + "label": "B08 Drawing Generation Flow", + "nodes": [ + "b08_designdetail_b08_designdetail_engine_cad_masshaul_py", + "b08_designdetail_b08_designdetail_engine_cad_basin_py", + "common_util_common_util_mass_haul_settle_ts" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 0.9, + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md" + }, + { + "id": "drainage_system_flow", + "label": "Drainage System Workflow", + "nodes": [ + "concepts_drainage_watershed", + "pages_b05_profile_b05_structures", + "pages_b06_section_b06_culvert_set", + "pages_b06_section_b06_culvert_geometry_redesign" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 0.95, + "source_file": "concepts/drainage_watershed.md" + }, + { + "id": "mass_haul_system", + "label": "Mass Haul Diagram System", + "nodes": [ + "concepts_mass_haul_diagram", + "pages_b06_section_b06_frontend", + "pages_b08_designdetail_b08_drawing_masshaul_watershed" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 0.9, + "source_file": "concepts/mass_haul_diagram.md" + }, + { + "id": "corridor_3d_generation", + "label": "3D Corridor Generation Flow", + "nodes": [ + "pages_b05_profile_b05_corridor_surface", + "pages_b05_profile_b05_corridor_plan_curves", + "pages_b05_profile_b05_corridor_cut_fill", + "pages_b05_profile_b05_corridor_patch_finish" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 0.9, + "source_file": "pages/B05_Profile/B05_corridor_surface.md" + }, + { + "id": "workflow_late_stages", + "label": "Late Workflow Stages (B07-B09)", + "nodes": [ + "pages_b07_quantity_b07_frontend", + "pages_b08_designdetail_b08_frontend", + "pages_b09_estimation_b09_frontend" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 1.0 + } + ] + }, + "nodes": [ + { + "label": "implementation_status.md", + "file_type": "document", + "source_file": "architecture/implementation_status.md", + "source_location": "L1", + "_origin": "ast", + "id": "architecture_implementation_status", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "implementation_status.md" + }, + { + "label": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "file_type": "document", + "source_file": "architecture/implementation_status.md", + "source_location": "L9", + "_origin": "ast", + "id": "architecture_implementation_status_\ud604\uc7ac_\uad6c\ud604_\ud604\ud669_\uc18c\uc2a4_\uc77d\uae30_\uac10\uc0ac", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u1112\u1167\u11ab\u110c\u1162 \u1100\u116e\u1112\u1167\u11ab \u1112\u1167\u11ab\u1112\u116a\u11bc \u2014 \u1109\u1169\u1109\u1173 \u110b\u1175\u11b0\u1100\u1175 \u1100\u1161\u11b7\u1109\u1161" + }, + { + "label": "\ub2e8\uacc4\ubcc4 \ud310\uc815", + "file_type": "document", + "source_file": "architecture/implementation_status.md", + "source_location": "L13", + "_origin": "ast", + "id": "architecture_implementation_status_\ub2e8\uacc4\ubcc4_\ud310\uc815", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u1103\u1161\u11ab\u1100\u1168\u1107\u1167\u11af \u1111\u1161\u11ab\u110c\u1165\u11bc" + }, + { + "label": "\ube44\uc6cc\ud06c\ud50c\ub85c \uc601\uc5ed \ud310\uc815", + "file_type": "document", + "source_file": "architecture/implementation_status.md", + "source_location": "L25", + "_origin": "ast", + "id": "architecture_implementation_status_\ube44\uc6cc\ud06c\ud50c\ub85c_\uc601\uc5ed_\ud310\uc815", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u1107\u1175\u110b\u116f\u110f\u1173\u1111\u1173\u11af\u1105\u1169 \u110b\u1167\u11bc\u110b\u1167\u11a8 \u1111\u1161\u11ab\u110c\u1165\u11bc" + }, + { + "label": "\uad6c\ud604 \uc0c1\ud0dc \uc6a9\uc5b4", + "file_type": "document", + "source_file": "architecture/implementation_status.md", + "source_location": "L40", + "_origin": "ast", + "id": "architecture_implementation_status_\uad6c\ud604_\uc0c1\ud0dc_\uc6a9\uc5b4", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u1100\u116e\u1112\u1167\u11ab \u1109\u1161\u11bc\u1110\u1162 \u110b\u116d\u11bc\u110b\u1165" + }, + { + "label": "\ubc18\ub4dc\uc2dc \uc720\uc9c0\ud560 \uad6c\ubd84", + "file_type": "document", + "source_file": "architecture/implementation_status.md", + "source_location": "L50", + "_origin": "ast", + "id": "architecture_implementation_status_\ubc18\ub4dc\uc2dc_\uc720\uc9c0\ud560_\uad6c\ubd84", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u1107\u1161\u11ab\u1103\u1173\u1109\u1175 \u110b\u1172\u110c\u1175\u1112\u1161\u11af \u1100\u116e\u1107\u116e\u11ab" + }, + { + "label": "\ubbf8\uacb0 \uc124\uacc4", + "file_type": "document", + "source_file": "architecture/implementation_status.md", + "source_location": "L61", + "_origin": "ast", + "id": "architecture_implementation_status_\ubbf8\uacb0_\uc124\uacc4", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u1106\u1175\u1100\u1167\u11af \u1109\u1165\u11af\u1100\u1168" + }, + { + "label": "project_map.md", + "file_type": "document", + "source_file": "architecture/project_map.md", + "source_location": "L1", + "_origin": "ast", + "id": "architecture_project_map", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "project_map.md" + }, + { + "label": "Aislo \ud504\ub85c\uc81d\ud2b8 \uc9c0\ub3c4", + "file_type": "document", + "source_file": "architecture/project_map.md", + "source_location": "L9", + "_origin": "ast", + "id": "architecture_project_map_aislo_\ud504\ub85c\uc81d\ud2b8_\uc9c0\ub3c4", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "aislo \u1111\u1173\u1105\u1169\u110c\u1166\u11a8\u1110\u1173 \u110c\u1175\u1103\u1169" + }, + { + "label": "\ud604\uc7ac \uba85\uce6d\uacfc \ucc45\uc784", + "file_type": "document", + "source_file": "architecture/project_map.md", + "source_location": "L11", + "_origin": "ast", + "id": "architecture_project_map_\ud604\uc7ac_\uba85\uce6d\uacfc_\ucc45\uc784", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u1112\u1167\u11ab\u110c\u1162 \u1106\u1167\u11bc\u110e\u1175\u11bc\u1100\u116a \u110e\u1162\u11a8\u110b\u1175\u11b7" + }, + { + "label": "\ud0d0\uc0c9 \uc21c\uc11c", + "file_type": "document", + "source_file": "architecture/project_map.md", + "source_location": "L29", + "_origin": "ast", + "id": "architecture_project_map_\ud0d0\uc0c9_\uc21c\uc11c", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u1110\u1161\u11b7\u1109\u1162\u11a8 \u1109\u116e\u11ab\u1109\u1165" + }, + { + "label": "\uba85\uce6d \ud310\uc815", + "file_type": "document", + "source_file": "architecture/project_map.md", + "source_location": "L39", + "_origin": "ast", + "id": "architecture_project_map_\uba85\uce6d_\ud310\uc815", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u1106\u1167\u11bc\u110e\u1175\u11bc \u1111\u1161\u11ab\u110c\u1165\u11bc" + }, + { + "label": "public_admin_map.md", + "file_type": "document", + "source_file": "architecture/public_admin_map.md", + "source_location": "L1", + "_origin": "ast", + "id": "architecture_public_admin_map", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "public_admin_map.md" + }, + { + "label": "\uacf5\uac1c\u00b7\uc778\uc99d\u00b7\uad00\ub9ac \uc601\uc5ed \uc9c0\ub3c4", + "file_type": "document", + "source_file": "architecture/public_admin_map.md", + "source_location": "L9", + "_origin": "ast", + "id": "architecture_public_admin_map_\uacf5\uac1c_\uc778\uc99d_\uad00\ub9ac_\uc601\uc5ed_\uc9c0\ub3c4", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u1100\u1169\u11bc\u1100\u1162\u00b7\u110b\u1175\u11ab\u110c\u1173\u11bc\u00b7\u1100\u116a\u11ab\u1105\u1175 \u110b\u1167\u11bc\u110b\u1167\u11a8 \u110c\u1175\u1103\u1169" + }, + { + "label": "\uacf5\ud1b5 \uc758\uc874", + "file_type": "document", + "source_file": "architecture/public_admin_map.md", + "source_location": "L23", + "_origin": "ast", + "id": "architecture_public_admin_map_\uacf5\ud1b5_\uc758\uc874", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u1100\u1169\u11bc\u1110\u1169\u11bc \u110b\u1174\u110c\u1169\u11ab" + }, + { + "label": "\uc9c1\uc811 \uad6c\ud604 \uad00\uacc4", + "file_type": "document", + "source_file": "architecture/public_admin_map.md", + "source_location": "L34", + "_origin": "ast", + "id": "architecture_public_admin_map_\uc9c1\uc811_\uad6c\ud604_\uad00\uacc4", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u110c\u1175\u11a8\u110c\u1165\u11b8 \u1100\u116e\u1112\u1167\u11ab \u1100\u116a\u11ab\u1100\u1168" + }, + { + "label": "shared_resources.md", + "file_type": "document", + "source_file": "architecture/shared_resources.md", + "source_location": "L1", + "_origin": "ast", + "id": "architecture_shared_resources", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "shared_resources.md" + }, + { + "label": "\uacf5\uc720 \uc790\uc6d0 \uc601\ud5a5 \uc9c0\ub3c4", + "file_type": "document", + "source_file": "architecture/shared_resources.md", + "source_location": "L8", + "_origin": "ast", + "id": "architecture_shared_resources_\uacf5\uc720_\uc790\uc6d0_\uc601\ud5a5_\uc9c0\ub3c4", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u1100\u1169\u11bc\u110b\u1172 \u110c\u1161\u110b\u116f\u11ab \u110b\u1167\u11bc\u1112\u1163\u11bc \u110c\u1175\u1103\u1169" + }, + { + "label": "\ub2e8\uacc4\ubcc4 \uc9c1\uc811 \uc5f0\uacb0", + "file_type": "document", + "source_file": "architecture/shared_resources.md", + "source_location": "L29", + "_origin": "ast", + "id": "architecture_shared_resources_\ub2e8\uacc4\ubcc4_\uc9c1\uc811_\uc5f0\uacb0", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u1103\u1161\u11ab\u1100\u1168\u1107\u1167\u11af \u110c\u1175\u11a8\u110c\u1165\u11b8 \u110b\u1167\u11ab\u1100\u1167\u11af" + }, + { + "label": "\uc601\ud5a5 \ubd84\uc11d \uaddc\uce59", + "file_type": "document", + "source_file": "architecture/shared_resources.md", + "source_location": "L41", + "_origin": "ast", + "id": "architecture_shared_resources_\uc601\ud5a5_\ubd84\uc11d_\uaddc\uce59", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u110b\u1167\u11bc\u1112\u1163\u11bc \u1107\u116e\u11ab\u1109\u1165\u11a8 \u1100\u1172\u110e\u1175\u11a8" + }, + { + "label": "workflow_data_flow.md", + "file_type": "document", + "source_file": "architecture/workflow_data_flow.md", + "source_location": "L1", + "_origin": "ast", + "id": "architecture_workflow_data_flow", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "workflow_data_flow.md" + }, + { + "label": "B01~B09 Workflow \ub370\uc774\ud130 \ud750\ub984", + "file_type": "document", + "source_file": "architecture/workflow_data_flow.md", + "source_location": "L9", + "_origin": "ast", + "id": "architecture_workflow_data_flow_b01_b09_workflow_\ub370\uc774\ud130_\ud750\ub984", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "b01~b09 workflow \u1103\u1166\u110b\u1175\u1110\u1165 \u1112\u1173\u1105\u1173\u11b7" + }, + { + "label": "\ub2e8\uacc4 \uad00\uacc4", + "file_type": "document", + "source_file": "architecture/workflow_data_flow.md", + "source_location": "L11", + "_origin": "ast", + "id": "architecture_workflow_data_flow_\ub2e8\uacc4_\uad00\uacc4", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u1103\u1161\u11ab\u1100\u1168 \u1100\u116a\u11ab\u1100\u1168" + }, + { + "label": "B04\u2192B06 \uc790\ub3d9 \uacc4\uc0b0\uacfc \uc7ac\uc124\uacc4", + "file_type": "document", + "source_file": "architecture/workflow_data_flow.md", + "source_location": "L25", + "_origin": "ast", + "id": "architecture_workflow_data_flow_b04_b06_\uc790\ub3d9_\uacc4\uc0b0\uacfc_\uc7ac\uc124\uacc4", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "b04\u2192b06 \u110c\u1161\u1103\u1169\u11bc \u1100\u1168\u1109\u1161\u11ab\u1100\u116a \u110c\u1162\u1109\u1165\u11af\u1100\u1168" + }, + { + "label": "\uc0c1\ud0dc\uc640 \uc0b0\ucd9c\ubb3c \ubb34\ud6a8\ud654", + "file_type": "document", + "source_file": "architecture/workflow_data_flow.md", + "source_location": "L35", + "_origin": "ast", + "id": "architecture_workflow_data_flow_\uc0c1\ud0dc\uc640_\uc0b0\ucd9c\ubb3c_\ubb34\ud6a8\ud654", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u1109\u1161\u11bc\u1110\u1162\u110b\u116a \u1109\u1161\u11ab\u110e\u116e\u11af\u1106\u116e\u11af \u1106\u116e\u1112\u116d\u1112\u116a" + }, + { + "label": "\uc815\ubcf8 \uc704\uce58", + "file_type": "document", + "source_file": "architecture/workflow_data_flow.md", + "source_location": "L43", + "_origin": "ast", + "id": "architecture_workflow_data_flow_\uc815\ubcf8_\uc704\uce58", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u110c\u1165\u11bc\u1107\u1169\u11ab \u110b\u1171\u110e\u1175" + }, + { + "label": "a00_app_shell_framework.md", + "file_type": "document", + "source_file": "concepts/a00_app_shell_framework.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_a00_app_shell_framework", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "a00_app_shell_framework.md" + }, + { + "label": "A00_Common \u2014 App Shell Framework", + "file_type": "document", + "source_file": "concepts/a00_app_shell_framework.md", + "source_location": "L8", + "_origin": "ast", + "id": "concepts_a00_app_shell_framework_a00_common_app_shell_framework", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "a00_common \u2014 app shell framework" + }, + { + "label": "\ud30c\uc77c \uad6c\uc131", + "file_type": "document", + "source_file": "concepts/a00_app_shell_framework.md", + "source_location": "L12", + "_origin": "ast", + "id": "concepts_a00_app_shell_framework_\ud30c\uc77c_\uad6c\uc131", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u1109\u1165\u11bc" + }, + { + "label": "app_shell \uad6c\uc131\uc694\uc18c", + "file_type": "document", + "source_file": "concepts/a00_app_shell_framework.md", + "source_location": "L21", + "_origin": "ast", + "id": "concepts_a00_app_shell_framework_app_shell_\uad6c\uc131\uc694\uc18c", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "app_shell \u1100\u116e\u1109\u1165\u11bc\u110b\u116d\u1109\u1169" + }, + { + "label": "\ud14c\ub9c8 & \uc5b8\uc5b4 \uad00\ub9ac", + "file_type": "document", + "source_file": "concepts/a00_app_shell_framework.md", + "source_location": "L22", + "_origin": "ast", + "id": "concepts_a00_app_shell_framework_\ud14c\ub9c8_\uc5b8\uc5b4_\uad00\ub9ac", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "\u1110\u1166\u1106\u1161 & \u110b\u1165\u11ab\u110b\u1165 \u1100\u116a\u11ab\u1105\u1175" + }, + { + "label": "\ud5e4\ub354 \uad6c\uc131 (64px \ub192\uc774, sticky)", + "file_type": "document", + "source_file": "concepts/a00_app_shell_framework.md", + "source_location": "L27", + "_origin": "ast", + "id": "concepts_a00_app_shell_framework_\ud5e4\ub354_\uad6c\uc131_64px_\ub192\uc774_sticky", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "\u1112\u1166\u1103\u1165 \u1100\u116e\u1109\u1165\u11bc (64px \u1102\u1169\u11c1\u110b\u1175, sticky)" + }, + { + "label": "router \ub77c\uc6b0\ud305 \ud14c\uc774\ube14", + "file_type": "document", + "source_file": "concepts/a00_app_shell_framework.md", + "source_location": "L32", + "_origin": "ast", + "id": "concepts_a00_app_shell_framework_router_\ub77c\uc6b0\ud305_\ud14c\uc774\ube14", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "router \u1105\u1161\u110b\u116e\u1110\u1175\u11bc \u1110\u1166\u110b\u1175\u1107\u1173\u11af" + }, + { + "label": "\uc778\uc99d \uac00\ub4dc", + "file_type": "document", + "source_file": "concepts/a00_app_shell_framework.md", + "source_location": "L36", + "_origin": "ast", + "id": "concepts_a00_app_shell_framework_\uc778\uc99d_\uac00\ub4dc", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "\u110b\u1175\u11ab\u110c\u1173\u11bc \u1100\u1161\u1103\u1173" + }, + { + "label": "\uc138\ubd80 \uc2a4\uce90\ud3f4\ub4dc\u00b7CSS\u00b7\uc885\uc18d\uc131", + "file_type": "document", + "source_file": "concepts/a00_app_shell_framework.md", + "source_location": "L40", + "_origin": "ast", + "id": "concepts_a00_app_shell_framework_\uc138\ubd80_\uc2a4\uce90\ud3f4\ub4dc_css_\uc885\uc18d\uc131", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "\u1109\u1166\u1107\u116e \u1109\u1173\u110f\u1162\u1111\u1169\u11af\u1103\u1173\u00b7css\u00b7\u110c\u1169\u11bc\u1109\u1169\u11a8\u1109\u1165\u11bc" + }, + { + "label": "a00_app_shell_framework_scaffold.md", + "file_type": "document", + "source_file": "concepts/a00_app_shell_framework_scaffold.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_a00_app_shell_framework_scaffold", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "a00_app_shell_framework_scaffold.md" + }, + { + "label": "A00_Common \u2014 \uc2a4\uce90\ud3f4\ub4dc\u00b7CSS\u00b7\uc885\uc18d\uc131", + "file_type": "document", + "source_file": "concepts/a00_app_shell_framework_scaffold.md", + "source_location": "L10", + "_origin": "ast", + "id": "concepts_a00_app_shell_framework_scaffold_a00_common_\uc2a4\uce90\ud3f4\ub4dc_css_\uc885\uc18d\uc131", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "a00_common \u2014 \u1109\u1173\u110f\u1162\u1111\u1169\u11af\u1103\u1173\u00b7css\u00b7\u110c\u1169\u11bc\u1109\u1169\u11a8\u1109\u1165\u11bc" + }, + { + "label": "b_page_scaffold", + "file_type": "document", + "source_file": "concepts/a00_app_shell_framework_scaffold.md", + "source_location": "L12", + "_origin": "ast", + "id": "concepts_a00_app_shell_framework_scaffold_b_page_scaffold", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "b_page_scaffold" + }, + { + "label": "CSS \uc778\uc81d\uc158", + "file_type": "document", + "source_file": "concepts/a00_app_shell_framework_scaffold.md", + "source_location": "L19", + "_origin": "ast", + "id": "concepts_a00_app_shell_framework_scaffold_css_\uc778\uc81d\uc158", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "css \u110b\u1175\u11ab\u110c\u1166\u11a8\u1109\u1167\u11ab" + }, + { + "label": "\uc885\uc18d\uc131", + "file_type": "document", + "source_file": "concepts/a00_app_shell_framework_scaffold.md", + "source_location": "L26", + "_origin": "ast", + "id": "concepts_a00_app_shell_framework_scaffold_\uc885\uc18d\uc131", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "\u110c\u1169\u11bc\u1109\u1169\u11a8\u1109\u1165\u11bc" + }, + { + "label": "\uc0ac\uc6a9\ucc98", + "file_type": "document", + "source_file": "concepts/a00_app_shell_framework_scaffold.md", + "source_location": "L34", + "_origin": "ast", + "id": "concepts_a00_app_shell_framework_scaffold_\uc0ac\uc6a9\ucc98", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "\u1109\u1161\u110b\u116d\u11bc\u110e\u1165" + }, + { + "label": "api_common.md", + "file_type": "document", + "source_file": "concepts/api_common.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_api_common", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "api_common.md" + }, + { + "label": "API \uacf5\ud1b5 (\uc5ec\ub7ec \ud398\uc774\uc9c0\uac00 \uacf5\uc720\ud558\ub294 \uc5d4\ub4dc\ud3ec\uc778\ud2b8)", + "file_type": "document", + "source_file": "concepts/api_common.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_api_common_api_\uacf5\ud1b5_\uc5ec\ub7ec_\ud398\uc774\uc9c0\uac00_\uacf5\uc720\ud558\ub294_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "api \u1100\u1169\u11bc\u1110\u1169\u11bc (\u110b\u1167\u1105\u1165 \u1111\u1166\u110b\u1175\u110c\u1175\u1100\u1161 \u1100\u1169\u11bc\u110b\u1172\u1112\u1161\u1102\u1173\u11ab \u110b\u1166\u11ab\u1103\u1173\u1111\u1169\u110b\u1175\u11ab\u1110\u1173)" + }, + { + "label": "\uacf5\ud1b5 \uc624\ub958 \uc751\ub2f5 \ud3ec\ub9f7 (\uc804 \ub77c\uc6b0\ud130)", + "file_type": "document", + "source_file": "concepts/api_common.md", + "source_location": "L11", + "_origin": "ast", + "id": "concepts_api_common_\uacf5\ud1b5_\uc624\ub958_\uc751\ub2f5_\ud3ec\ub9f7_\uc804_\ub77c\uc6b0\ud130", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u1100\u1169\u11bc\u1110\u1169\u11bc \u110b\u1169\u1105\u1172 \u110b\u1173\u11bc\u1103\u1161\u11b8 \u1111\u1169\u1106\u1162\u11ba (\u110c\u1165\u11ab \u1105\u1161\u110b\u116e\u1110\u1165)" + }, + { + "label": "\uc6cc\ud06c\ud50c\ub85c\uc6b0 \uc0c1\ud0dc \uc870\ud68c", + "file_type": "document", + "source_file": "concepts/api_common.md", + "source_location": "L17", + "_origin": "ast", + "id": "concepts_api_common_\uc6cc\ud06c\ud50c\ub85c\uc6b0_\uc0c1\ud0dc_\uc870\ud68c", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u110b\u116f\u110f\u1173\u1111\u1173\u11af\u1105\u1169\u110b\u116e \u1109\u1161\u11bc\u1110\u1162 \u110c\u1169\u1112\u116c" + }, + { + "label": "\ud3f4\ub9c1 \ud328\ud134 (legacy workflow.json \uc124\uacc4; \ud604\uc7ac \uad6c\ud604\uc740 workflow-state API \uc0ac\uc6a9)", + "file_type": "document", + "source_file": "concepts/api_common.md", + "source_location": "L25", + "_origin": "ast", + "id": "concepts_api_common_\ud3f4\ub9c1_\ud328\ud134_legacy_workflow_json_\uc124\uacc4_\ud604\uc7ac_\uad6c\ud604\uc740_workflow_state_api_\uc0ac\uc6a9", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u1111\u1169\u11af\u1105\u1175\u11bc \u1111\u1162\u1110\u1165\u11ab (legacy workflow.json \u1109\u1165\u11af\u1100\u1168; \u1112\u1167\u11ab\u110c\u1162 \u1100\u116e\u1112\u1167\u11ab\u110b\u1173\u11ab workflow-state api \u1109\u1161\u110b\u116d\u11bc)" + }, + { + "label": "auth_rbac.md", + "file_type": "document", + "source_file": "concepts/auth_rbac.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_auth_rbac", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "auth_rbac.md" + }, + { + "label": "\uc778\uc99d / RBAC", + "file_type": "document", + "source_file": "concepts/auth_rbac.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_auth_rbac_\uc778\uc99d_rbac", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u110b\u1175\u11ab\u110c\u1173\u11bc / rbac" + }, + { + "label": "\uc138\uc158 \uc778\uc99d (backend.md 6.3)", + "file_type": "document", + "source_file": "concepts/auth_rbac.md", + "source_location": "L11", + "_origin": "ast", + "id": "concepts_auth_rbac_\uc138\uc158_\uc778\uc99d_backend_md_6_3", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u1109\u1166\u1109\u1167\u11ab \u110b\u1175\u11ab\u110c\u1173\u11bc (backend.md 6.3)" + }, + { + "label": "OTP / \ube44\ubc00\ubc88\ud638 \ubc0f \ub514\ubc14\uc774\uc2a4 \uc2e0\ub8b0", + "file_type": "document", + "source_file": "concepts/auth_rbac.md", + "source_location": "L18", + "_origin": "ast", + "id": "concepts_auth_rbac_otp_\ube44\ubc00\ubc88\ud638_\ubc0f_\ub514\ubc14\uc774\uc2a4_\uc2e0\ub8b0", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "otp / \u1107\u1175\u1106\u1175\u11af\u1107\u1165\u11ab\u1112\u1169 \u1106\u1175\u11be \u1103\u1175\u1107\u1161\u110b\u1175\u1109\u1173 \u1109\u1175\u11ab\u1105\u116c" + }, + { + "label": "\uc0ac\uc6a9\uc790 \uc0c1\ud0dc \uc0dd\uba85\uc8fc\uae30", + "file_type": "document", + "source_file": "concepts/auth_rbac.md", + "source_location": "L27", + "_origin": "ast", + "id": "concepts_auth_rbac_\uc0ac\uc6a9\uc790_\uc0c1\ud0dc_\uc0dd\uba85\uc8fc\uae30", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u1109\u1161\u110b\u116d\u11bc\u110c\u1161 \u1109\u1161\u11bc\u1110\u1162 \u1109\u1162\u11bc\u1106\u1167\u11bc\u110c\u116e\u1100\u1175" + }, + { + "label": "\uc5ed\ud560 (users.role)", + "file_type": "document", + "source_file": "concepts/auth_rbac.md", + "source_location": "L37", + "_origin": "ast", + "id": "concepts_auth_rbac_\uc5ed\ud560_users_role", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u110b\u1167\u11a8\u1112\u1161\u11af (users.role)" + }, + { + "label": "\uad8c\ud55c \uac80\uc99d \ud5ec\ud37c (B01_Dashboard)", + "file_type": "document", + "source_file": "concepts/auth_rbac.md", + "source_location": "L46", + "_origin": "ast", + "id": "concepts_auth_rbac_\uad8c\ud55c_\uac80\uc99d_\ud5ec\ud37c_b01_dashboard", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u1100\u116f\u11ab\u1112\u1161\u11ab \u1100\u1165\u11b7\u110c\u1173\u11bc \u1112\u1166\u11af\u1111\u1165 (b01_dashboard)" + }, + { + "label": "\uc778\uc99d \uac31\uc2e0 \ubc0f \ub9cc\ub8cc \uc77c\uc6d0\ud654", + "file_type": "document", + "source_file": "concepts/auth_rbac.md", + "source_location": "L57", + "_origin": "ast", + "id": "concepts_auth_rbac_\uc778\uc99d_\uac31\uc2e0_\ubc0f_\ub9cc\ub8cc_\uc77c\uc6d0\ud654", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u110b\u1175\u11ab\u110c\u1173\u11bc \u1100\u1162\u11bc\u1109\u1175\u11ab \u1106\u1175\u11be \u1106\u1161\u11ab\u1105\u116d \u110b\u1175\u11af\u110b\u116f\u11ab\u1112\u116a" + }, + { + "label": "\ub77c\uc6b0\ud305 \uac00\ub4dc (frontend.md 5.2)", + "file_type": "document", + "source_file": "concepts/auth_rbac.md", + "source_location": "L61", + "_origin": "ast", + "id": "concepts_auth_rbac_\ub77c\uc6b0\ud305_\uac00\ub4dc_frontend_md_5_2", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u1105\u1161\u110b\u116e\u1110\u1175\u11bc \u1100\u1161\u1103\u1173 (frontend.md 5.2)" + }, + { + "label": "\uc0ac\uc6a9\ucc98 (\uc5ed\ucc38\uc870)", + "file_type": "document", + "source_file": "concepts/auth_rbac.md", + "source_location": "L64", + "_origin": "ast", + "id": "concepts_auth_rbac_\uc0ac\uc6a9\ucc98_\uc5ed\ucc38\uc870", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u1109\u1161\u110b\u116d\u11bc\u110e\u1165 (\u110b\u1167\u11a8\u110e\u1161\u11b7\u110c\u1169)" + }, + { + "label": "b07_external_webcad_demos.md", + "file_type": "document", + "source_file": "concepts/b07_external_webcad_demos.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_b07_external_webcad_demos", + "community": 58, + "community_name": "B07 \uc678\ubd80 WebCAD \ube44\uad50 \uc2e4\ud589\ud658\uacbd", + "norm_label": "b07_external_webcad_demos.md" + }, + { + "label": "B07 \uc678\ubd80 WebCAD \ube44\uad50 \uc2e4\ud589\ud658\uacbd", + "file_type": "document", + "source_file": "concepts/b07_external_webcad_demos.md", + "source_location": "L8", + "_origin": "ast", + "id": "concepts_b07_external_webcad_demos_b07_\uc678\ubd80_webcad_\ube44\uad50_\uc2e4\ud589\ud658\uacbd", + "community": 58, + "community_name": "B07 \uc678\ubd80 WebCAD \ube44\uad50 \uc2e4\ud589\ud658\uacbd", + "norm_label": "b07 \u110b\u116c\u1107\u116e webcad \u1107\u1175\u1100\u116d \u1109\u1175\u11af\u1112\u1162\u11bc\u1112\u116a\u11ab\u1100\u1167\u11bc" + }, + { + "label": "\uc2e4\ud589\uacfc \uc885\ub8cc", + "file_type": "document", + "source_file": "concepts/b07_external_webcad_demos.md", + "source_location": "L18", + "_origin": "ast", + "id": "concepts_b07_external_webcad_demos_\uc2e4\ud589\uacfc_\uc885\ub8cc", + "community": 58, + "community_name": "B07 \uc678\ubd80 WebCAD \ube44\uad50 \uc2e4\ud589\ud658\uacbd", + "norm_label": "\u1109\u1175\u11af\u1112\u1162\u11bc\u1100\u116a \u110c\u1169\u11bc\u1105\u116d" + }, + { + "label": "\uac80\uc99d \uc0c1\ud0dc", + "file_type": "document", + "source_file": "concepts/b07_external_webcad_demos.md", + "source_location": "L24", + "_origin": "ast", + "id": "concepts_b07_external_webcad_demos_\uac80\uc99d_\uc0c1\ud0dc", + "community": 58, + "community_name": "B07 \uc678\ubd80 WebCAD \ube44\uad50 \uc2e4\ud589\ud658\uacbd", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc \u1109\u1161\u11bc\u1110\u1162" + }, + { + "label": "\ub77c\uc774\uc120\uc2a4 \uc8fc\uc758", + "file_type": "document", + "source_file": "concepts/b07_external_webcad_demos.md", + "source_location": "L31", + "_origin": "ast", + "id": "concepts_b07_external_webcad_demos_\ub77c\uc774\uc120\uc2a4_\uc8fc\uc758", + "community": 58, + "community_name": "B07 \uc678\ubd80 WebCAD \ube44\uad50 \uc2e4\ud589\ud658\uacbd", + "norm_label": "\u1105\u1161\u110b\u1175\u1109\u1165\u11ab\u1109\u1173 \u110c\u116e\u110b\u1174" + }, + { + "label": "common_util.md", + "file_type": "document", + "source_file": "concepts/common_util.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_common_util", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "common_util.md" + }, + { + "label": "\uacf5\ud1b5 \uc720\ud2f8 (common_util/)", + "file_type": "document", + "source_file": "concepts/common_util.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_common_util_\uacf5\ud1b5_\uc720\ud2f8_common_util", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u1100\u1169\u11bc\u1110\u1169\u11bc \u110b\u1172\u1110\u1175\u11af (common_util/)" + }, + { + "label": "\uc774\uba54\uc77c \ubc1c\uc1a1 (common_util_email.py)", + "file_type": "document", + "source_file": "concepts/common_util.md", + "source_location": "L39", + "_origin": "ast", + "id": "concepts_common_util_\uc774\uba54\uc77c_\ubc1c\uc1a1_common_util_email_py", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u110b\u1175\u1106\u1166\u110b\u1175\u11af \u1107\u1161\u11af\u1109\u1169\u11bc (common_util_email.py)" + }, + { + "label": "\ub9ac\uc18c\uc2a4 \ubaa8\ub2c8\ud130\ub9c1 (common_util_resource_monitor.py)", + "file_type": "document", + "source_file": "concepts/common_util.md", + "source_location": "L43", + "_origin": "ast", + "id": "concepts_common_util_\ub9ac\uc18c\uc2a4_\ubaa8\ub2c8\ud130\ub9c1_common_util_resource_monitor_py", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u1105\u1175\u1109\u1169\u1109\u1173 \u1106\u1169\u1102\u1175\u1110\u1165\u1105\u1175\u11bc (common_util_resource_monitor.py)" + }, + { + "label": "common_util_project_delete.md", + "file_type": "document", + "source_file": "concepts/common_util/common_util_project_delete.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_common_util_common_util_project_delete", + "community": 112, + "community_name": "common_util_project_delete.md", + "norm_label": "common_util_project_delete.md" + }, + { + "label": "common_util_project_delete.py", + "file_type": "document", + "source_file": "concepts/common_util/common_util_project_delete.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_common_util_common_util_project_delete_common_util_project_delete_py", + "community": 112, + "community_name": "common_util_project_delete.md", + "norm_label": "common_util_project_delete.py" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "concepts/common_util/common_util_project_delete.md", + "source_location": "L13", + "_origin": "ast", + "id": "concepts_common_util_common_util_project_delete_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 112, + "community_name": "common_util_project_delete.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5ed\ucc38\uc870 (\uc0ac\uc6a9\ucc98)", + "file_type": "document", + "source_file": "concepts/common_util/common_util_project_delete.md", + "source_location": "L19", + "_origin": "ast", + "id": "concepts_common_util_common_util_project_delete_\uc5ed\ucc38\uc870_\uc0ac\uc6a9\ucc98", + "community": 112, + "community_name": "common_util_project_delete.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11a8\u110e\u1161\u11b7\u110c\u1169 (\u1109\u1161\u110b\u116d\u11bc\u110e\u1165)" + }, + { + "label": "common_util_storage.md", + "file_type": "document", + "source_file": "concepts/common_util/common_util_storage.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_common_util_common_util_storage", + "community": 113, + "community_name": "common_util_storage.md", + "norm_label": "common_util_storage.md" + }, + { + "label": "common_util_storage.py", + "file_type": "document", + "source_file": "concepts/common_util/common_util_storage.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_common_util_common_util_storage_common_util_storage_py", + "community": 113, + "community_name": "common_util_storage.md", + "norm_label": "common_util_storage.py" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "concepts/common_util/common_util_storage.md", + "source_location": "L13", + "_origin": "ast", + "id": "concepts_common_util_common_util_storage_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 113, + "community_name": "common_util_storage.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5ed\ucc38\uc870 (\uc0ac\uc6a9\ucc98)", + "file_type": "document", + "source_file": "concepts/common_util/common_util_storage.md", + "source_location": "L21", + "_origin": "ast", + "id": "concepts_common_util_common_util_storage_\uc5ed\ucc38\uc870_\uc0ac\uc6a9\ucc98", + "community": 113, + "community_name": "common_util_storage.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11a8\u110e\u1161\u11b7\u110c\u1169 (\u1109\u1161\u110b\u116d\u11bc\u110e\u1165)" + }, + { + "label": "common_util_workflow_state.md", + "file_type": "document", + "source_file": "concepts/common_util/common_util_workflow_state.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_common_util_common_util_workflow_state", + "community": 114, + "community_name": "common_util_workflow_state.md", + "norm_label": "common_util_workflow_state.md" + }, + { + "label": "common_util_workflow_state.py", + "file_type": "document", + "source_file": "concepts/common_util/common_util_workflow_state.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_common_util_common_util_workflow_state_common_util_workflow_state_py", + "community": 114, + "community_name": "common_util_workflow_state.md", + "norm_label": "common_util_workflow_state.py" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "concepts/common_util/common_util_workflow_state.md", + "source_location": "L13", + "_origin": "ast", + "id": "concepts_common_util_common_util_workflow_state_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 114, + "community_name": "common_util_workflow_state.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5ed\ucc38\uc870 (\uc0ac\uc6a9\ucc98)", + "file_type": "document", + "source_file": "concepts/common_util/common_util_workflow_state.md", + "source_location": "L23", + "_origin": "ast", + "id": "concepts_common_util_common_util_workflow_state_\uc5ed\ucc38\uc870_\uc0ac\uc6a9\ucc98", + "community": 114, + "community_name": "common_util_workflow_state.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11a8\u110e\u1161\u11b7\u110c\u1169 (\u1109\u1161\u110b\u116d\u11bc\u110e\u1165)" + }, + { + "label": "completed_2026-08-29.md", + "file_type": "document", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_completed_2026_08_29", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "completed_2026-08-29.md" + }, + { + "label": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "file_type": "document", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_completed_2026_08_29_2026_08_29_\uc644\ub8cc_\ubc18\uc601", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "2026-08-29 \u110b\u116a\u11ab\u1105\u116d \u1107\u1161\u11ab\u110b\u1167\u11bc" + }, + { + "label": "B03 \uc7ac\uc5c5\ub85c\ub4dc\u00b7B05 \ucd5c\uc2e0 \uc870\ud68c", + "file_type": "document", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L11", + "_origin": "ast", + "id": "concepts_completed_2026_08_29_b03_\uc7ac\uc5c5\ub85c\ub4dc_b05_\ucd5c\uc2e0_\uc870\ud68c", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "b03 \u110c\u1162\u110b\u1165\u11b8\u1105\u1169\u1103\u1173\u00b7b05 \u110e\u116c\u1109\u1175\u11ab \u110c\u1169\u1112\u116c" + }, + { + "label": "B05/B06 \uad6c\uc870\ubb3c UI \ud1b5\ud569", + "file_type": "document", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L21", + "_origin": "ast", + "id": "concepts_completed_2026_08_29_b05_b06_\uad6c\uc870\ubb3c_ui_\ud1b5\ud569", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "b05/b06 \u1100\u116e\u110c\u1169\u1106\u116e\u11af ui \u1110\u1169\u11bc\u1112\u1161\u11b8" + }, + { + "label": "B07 CAD \uace0\uc815 \ucc99\ub3c4\u00b7\ud6a1\ub2e8 \uc7a5 \ubc30\uce58", + "file_type": "document", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L32", + "_origin": "ast", + "id": "concepts_completed_2026_08_29_b07_cad_\uace0\uc815_\ucc99\ub3c4_\ud6a1\ub2e8_\uc7a5_\ubc30\uce58", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "b07 cad \u1100\u1169\u110c\u1165\u11bc \u110e\u1165\u11a8\u1103\u1169\u00b7\u1112\u116c\u11bc\u1103\u1161\u11ab \u110c\u1161\u11bc \u1107\u1162\u110e\u1175" + }, + { + "label": "B07 CAD \ud14c\ub9c8", + "file_type": "document", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L43", + "_origin": "ast", + "id": "concepts_completed_2026_08_29_b07_cad_\ud14c\ub9c8", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "b07 cad \u1110\u1166\u1106\u1161" + }, + { + "label": "B07 CAD \ud655\ub300\u00b7\ud32c", + "file_type": "document", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L53", + "_origin": "ast", + "id": "concepts_completed_2026_08_29_b07_cad_\ud655\ub300_\ud32c", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "b07 cad \u1112\u116a\u11a8\u1103\u1162\u00b7\u1111\u1162\u11ab" + }, + { + "label": "B07\u2194B08 \uc21c\uc11c", + "file_type": "document", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L62", + "_origin": "ast", + "id": "concepts_completed_2026_08_29_b07_b08_\uc21c\uc11c", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "b07\u2194b08 \u1109\u116e\u11ab\u1109\u1165" + }, + { + "label": "\ucd08\uae30\uac12 \ubcf4\uc804", + "file_type": "document", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L72", + "_origin": "ast", + "id": "concepts_completed_2026_08_29_\ucd08\uae30\uac12_\ubcf4\uc804", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "\u110e\u1169\u1100\u1175\u1100\u1161\u11b9 \u1107\u1169\u110c\u1165\u11ab" + }, + { + "label": "\ucd08\uae30\ud654 \ubcf5\uc6d0 \uc2e4\uce21", + "file_type": "document", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L83", + "_origin": "ast", + "id": "concepts_completed_2026_08_29_\ucd08\uae30\ud654_\ubcf5\uc6d0_\uc2e4\uce21", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "\u110e\u1169\u1100\u1175\u1112\u116a \u1107\u1169\u11a8\u110b\u116f\u11ab \u1109\u1175\u11af\u110e\u1173\u11a8" + }, + { + "label": "\ubc30\uc218\uc2dc\uc124 \ucd94\ucc9c \uae30\uc900", + "file_type": "document", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L92", + "_origin": "ast", + "id": "concepts_completed_2026_08_29_\ubc30\uc218\uc2dc\uc124_\ucd94\ucc9c_\uae30\uc900", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "\u1107\u1162\u1109\u116e\u1109\u1175\u1109\u1165\u11af \u110e\u116e\u110e\u1165\u11ab \u1100\u1175\u110c\u116e\u11ab" + }, + { + "label": "completed_2026-09-01.md", + "file_type": "document", + "source_file": "concepts/completed_2026-09-01.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_completed_2026_09_01", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "completed_2026-09-01.md" + }, + { + "label": "2026-09-01 \uc644\ub8cc \u2014 B04 \uc9c0\uba74 \ucc98\ub9ac\u00b7B05/B06 \ubc30\uc218 \uc81c\uc5b4", + "file_type": "document", + "source_file": "concepts/completed_2026-09-01.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_completed_2026_09_01_2026_09_01_\uc644\ub8cc_b04_\uc9c0\uba74_\ucc98\ub9ac_b05_b06_\ubc30\uc218_\uc81c\uc5b4", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "2026-09-01 \u110b\u116a\u11ab\u1105\u116d \u2014 b04 \u110c\u1175\u1106\u1167\u11ab \u110e\u1165\u1105\u1175\u00b7b05/b06 \u1107\u1162\u1109\u116e \u110c\u1166\u110b\u1165" + }, + { + "label": "\uc644\ub8cc \ubc94\uc704", + "file_type": "document", + "source_file": "concepts/completed_2026-09-01.md", + "source_location": "L11", + "_origin": "ast", + "id": "concepts_completed_2026_09_01_\uc644\ub8cc_\ubc94\uc704", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "\u110b\u116a\u11ab\u1105\u116d \u1107\u1165\u11b7\u110b\u1171" + }, + { + "label": "\uc800\uc7a5\u00b7\ud638\ud658 \uaddc\uce59", + "file_type": "document", + "source_file": "concepts/completed_2026-09-01.md", + "source_location": "L24", + "_origin": "ast", + "id": "concepts_completed_2026_09_01_\uc800\uc7a5_\ud638\ud658_\uaddc\uce59", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "\u110c\u1165\u110c\u1161\u11bc\u00b7\u1112\u1169\u1112\u116a\u11ab \u1100\u1172\u110e\u1175\u11a8" + }, + { + "label": "\uac80\uc99d", + "file_type": "document", + "source_file": "concepts/completed_2026-09-01.md", + "source_location": "L32", + "_origin": "ast", + "id": "concepts_completed_2026_09_01_\uac80\uc99d", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc" + }, + { + "label": "completed_2026-09-01_followups.md", + "file_type": "document", + "source_file": "concepts/completed_2026-09-01_followups.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_completed_2026_09_01_followups", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "completed_2026-09-01_followups.md" + }, + { + "label": "2026-09-01 \uc794\uc5ec \uc644\ub8cc \uccb4\ud06c \uc815\ub9ac", + "file_type": "document", + "source_file": "concepts/completed_2026-09-01_followups.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_completed_2026_09_01_followups_2026_09_01_\uc794\uc5ec_\uc644\ub8cc_\uccb4\ud06c_\uc815\ub9ac", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "2026-09-01 \u110c\u1161\u11ab\u110b\u1167 \u110b\u116a\u11ab\u1105\u116d \u110e\u1166\u110f\u1173 \u110c\u1165\u11bc\u1105\u1175" + }, + { + "label": "\ubc94\uc704", + "file_type": "document", + "source_file": "concepts/completed_2026-09-01_followups.md", + "source_location": "L13", + "_origin": "ast", + "id": "concepts_completed_2026_09_01_followups_\ubc94\uc704", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "\u1107\u1165\u11b7\u110b\u1171" + }, + { + "label": "\ubcf4\ub958 \uad6c\ubd84", + "file_type": "document", + "source_file": "concepts/completed_2026-09-01_followups.md", + "source_location": "L22", + "_origin": "ast", + "id": "concepts_completed_2026_09_01_followups_\ubcf4\ub958_\uad6c\ubd84", + "community": 7, + "community_name": "2026-08-29 \uc644\ub8cc \ubc18\uc601", + "norm_label": "\u1107\u1169\u1105\u1172 \u1100\u116e\u1107\u116e\u11ab" + }, + { + "label": "completed_2026-09-02.md", + "file_type": "document", + "source_file": "concepts/completed_2026-09-02.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_completed_2026_09_02", + "community": 182, + "community_name": "2026-09-02 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "completed_2026-09-02.md" + }, + { + "label": "2026-09-02 \uc644\ub8cc \ud56d\ubaa9", + "file_type": "document", + "source_file": "concepts/completed_2026-09-02.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_completed_2026_09_02_2026_09_02_\uc644\ub8cc_\ud56d\ubaa9", + "community": 182, + "community_name": "2026-09-02 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "2026-09-02 \u110b\u116a\u11ab\u1105\u116d \u1112\u1161\u11bc\u1106\u1169\u11a8" + }, + { + "label": "\ub178\uc120\u00b7\uc9c0\ud45c\uba74", + "file_type": "document", + "source_file": "concepts/completed_2026-09-02.md", + "source_location": "L11", + "_origin": "ast", + "id": "concepts_completed_2026_09_02_\ub178\uc120_\uc9c0\ud45c\uba74", + "community": 182, + "community_name": "2026-09-02 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u1102\u1169\u1109\u1165\u11ab\u00b7\u110c\u1175\u1111\u116d\u1106\u1167\u11ab" + }, + { + "label": "\uc791\uc5c5 \ud658\uacbd", + "file_type": "document", + "source_file": "concepts/completed_2026-09-02.md", + "source_location": "L18", + "_origin": "ast", + "id": "concepts_completed_2026_09_02_\uc791\uc5c5_\ud658\uacbd", + "community": 182, + "community_name": "2026-09-02 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u110c\u1161\u11a8\u110b\u1165\u11b8 \u1112\u116a\u11ab\u1100\u1167\u11bc" + }, + { + "label": "CAD", + "file_type": "document", + "source_file": "concepts/completed_2026-09-02.md", + "source_location": "L23", + "_origin": "ast", + "id": "concepts_completed_2026_09_02_cad", + "community": 182, + "community_name": "2026-09-02 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "cad" + }, + { + "label": "B05 \uad6c\uc870\ubb3c 3D", + "file_type": "document", + "source_file": "concepts/completed_2026-09-02.md", + "source_location": "L32", + "_origin": "ast", + "id": "concepts_completed_2026_09_02_b05_\uad6c\uc870\ubb3c_3d", + "community": 182, + "community_name": "2026-09-02 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "b05 \u1100\u116e\u110c\u1169\u1106\u116e\u11af 3d" + }, + { + "label": "B05 \uc885\ub2e8 \ud3b8\uc9d1 \ud6c4\uc18d", + "file_type": "document", + "source_file": "concepts/completed_2026-09-02.md", + "source_location": "L38", + "_origin": "ast", + "id": "concepts_completed_2026_09_02_b05_\uc885\ub2e8_\ud3b8\uc9d1_\ud6c4\uc18d", + "community": 182, + "community_name": "2026-09-02 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "b05 \u110c\u1169\u11bc\u1103\u1161\u11ab \u1111\u1167\u11ab\u110c\u1175\u11b8 \u1112\u116e\u1109\u1169\u11a8" + }, + { + "label": "\ud68c\uadc0 \uc0c1\ud0dc", + "file_type": "document", + "source_file": "concepts/completed_2026-09-02.md", + "source_location": "L43", + "_origin": "ast", + "id": "concepts_completed_2026_09_02_\ud68c\uadc0_\uc0c1\ud0dc", + "community": 182, + "community_name": "2026-09-02 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u1112\u116c\u1100\u1171 \u1109\u1161\u11bc\u1110\u1162" + }, + { + "label": "completed_2026-09-03.md", + "file_type": "document", + "source_file": "concepts/completed_2026-09-03.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_completed_2026_09_03", + "community": 183, + "community_name": "2026-09-03 \uc644\ub8cc \u2014 \uc785\ub825\u00b7\ubc30\uc218\u00b7\uc885\ud6a1\ub2e8\u00b7CAD", + "norm_label": "completed_2026-09-03.md" + }, + { + "label": "2026-09-03 \uc644\ub8cc \u2014 \uc785\ub825\u00b7\ubc30\uc218\u00b7\uc885\ud6a1\ub2e8\u00b7CAD", + "file_type": "document", + "source_file": "concepts/completed_2026-09-03.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_completed_2026_09_03_2026_09_03_\uc644\ub8cc_\uc785\ub825_\ubc30\uc218_\uc885\ud6a1\ub2e8_cad", + "community": 183, + "community_name": "2026-09-03 \uc644\ub8cc \u2014 \uc785\ub825\u00b7\ubc30\uc218\u00b7\uc885\ud6a1\ub2e8\u00b7CAD", + "norm_label": "2026-09-03 \u110b\u116a\u11ab\u1105\u116d \u2014 \u110b\u1175\u11b8\u1105\u1167\u11a8\u00b7\u1107\u1162\u1109\u116e\u00b7\u110c\u1169\u11bc\u1112\u116c\u11bc\u1103\u1161\u11ab\u00b7cad" + }, + { + "label": "\uc644\ub8cc \ubc94\uc704", + "file_type": "document", + "source_file": "concepts/completed_2026-09-03.md", + "source_location": "L13", + "_origin": "ast", + "id": "concepts_completed_2026_09_03_\uc644\ub8cc_\ubc94\uc704", + "community": 183, + "community_name": "2026-09-03 \uc644\ub8cc \u2014 \uc785\ub825\u00b7\ubc30\uc218\u00b7\uc885\ud6a1\ub2e8\u00b7CAD", + "norm_label": "\u110b\u116a\u11ab\u1105\u116d \u1107\u1165\u11b7\u110b\u1171" + }, + { + "label": "\uacf5\ud1b5 \uacb0\uc815", + "file_type": "document", + "source_file": "concepts/completed_2026-09-03.md", + "source_location": "L23", + "_origin": "ast", + "id": "concepts_completed_2026_09_03_\uacf5\ud1b5_\uacb0\uc815", + "community": 183, + "community_name": "2026-09-03 \uc644\ub8cc \u2014 \uc785\ub825\u00b7\ubc30\uc218\u00b7\uc885\ud6a1\ub2e8\u00b7CAD", + "norm_label": "\u1100\u1169\u11bc\u1110\u1169\u11bc \u1100\u1167\u11af\u110c\u1165\u11bc" + }, + { + "label": "completed_2026-09-03_additional.md", + "file_type": "document", + "source_file": "concepts/completed_2026-09-03_additional.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_completed_2026_09_03_additional", + "community": 184, + "community_name": "2026-09-03 \ucd94\uac00 \uc644\ub8cc \u2014 \ud654\uba74\u00b7\uc885\ub2e8\u00b7\ud6a1\ub2e8", + "norm_label": "completed_2026-09-03_additional.md" + }, + { + "label": "2026-09-03 \ucd94\uac00 \uc644\ub8cc \u2014 \ud654\uba74\u00b7\uc885\ub2e8\u00b7\ud6a1\ub2e8", + "file_type": "document", + "source_file": "concepts/completed_2026-09-03_additional.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_completed_2026_09_03_additional_2026_09_03_\ucd94\uac00_\uc644\ub8cc_\ud654\uba74_\uc885\ub2e8_\ud6a1\ub2e8", + "community": 184, + "community_name": "2026-09-03 \ucd94\uac00 \uc644\ub8cc \u2014 \ud654\uba74\u00b7\uc885\ub2e8\u00b7\ud6a1\ub2e8", + "norm_label": "2026-09-03 \u110e\u116e\u1100\u1161 \u110b\u116a\u11ab\u1105\u116d \u2014 \u1112\u116a\u1106\u1167\u11ab\u00b7\u110c\u1169\u11bc\u1103\u1161\u11ab\u00b7\u1112\u116c\u11bc\u1103\u1161\u11ab" + }, + { + "label": "\uc644\ub8cc \ubc94\uc704", + "file_type": "document", + "source_file": "concepts/completed_2026-09-03_additional.md", + "source_location": "L13", + "_origin": "ast", + "id": "concepts_completed_2026_09_03_additional_\uc644\ub8cc_\ubc94\uc704", + "community": 184, + "community_name": "2026-09-03 \ucd94\uac00 \uc644\ub8cc \u2014 \ud654\uba74\u00b7\uc885\ub2e8\u00b7\ud6a1\ub2e8", + "norm_label": "\u110b\u116a\u11ab\u1105\u116d \u1107\u1165\u11b7\u110b\u1171" + }, + { + "label": "\ucd5c\uc2e0 \uacb0\uc815", + "file_type": "document", + "source_file": "concepts/completed_2026-09-03_additional.md", + "source_location": "L23", + "_origin": "ast", + "id": "concepts_completed_2026_09_03_additional_\ucd5c\uc2e0_\uacb0\uc815", + "community": 184, + "community_name": "2026-09-03 \ucd94\uac00 \uc644\ub8cc \u2014 \ud654\uba74\u00b7\uc885\ub2e8\u00b7\ud6a1\ub2e8", + "norm_label": "\u110e\u116c\u1109\u1175\u11ab \u1100\u1167\u11af\u110c\u1165\u11bc" + }, + { + "label": "completed_2026-09-04.md", + "file_type": "document", + "source_file": "concepts/completed_2026-09-04.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_completed_2026_09_04", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "completed_2026-09-04.md" + }, + { + "label": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "file_type": "document", + "source_file": "concepts/completed_2026-09-04.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_completed_2026_09_04_2026_09_04_\uc644\ub8cc_\ud56d\ubaa9", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "2026-09-04 \u110b\u116a\u11ab\u1105\u116d \u1112\u1161\u11bc\u1106\u1169\u11a8" + }, + { + "label": "\uc644\ub8cc \ubc94\uc704", + "file_type": "document", + "source_file": "concepts/completed_2026-09-04.md", + "source_location": "L13", + "_origin": "ast", + "id": "concepts_completed_2026_09_04_\uc644\ub8cc_\ubc94\uc704", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "\u110b\u116a\u11ab\u1105\u116d \u1107\u1165\u11b7\u110b\u1171" + }, + { + "label": "\ucd94\uac00 \uc644\ub8cc \ubc94\uc704", + "file_type": "document", + "source_file": "concepts/completed_2026-09-04.md", + "source_location": "L38", + "_origin": "ast", + "id": "concepts_completed_2026_09_04_\ucd94\uac00_\uc644\ub8cc_\ubc94\uc704", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "\u110e\u116e\u1100\u1161 \u110b\u116a\u11ab\u1105\u116d \u1107\u1165\u11b7\u110b\u1171" + }, + { + "label": "700\uc904 \uc81c\ud55c \ubd84\ub9ac", + "file_type": "document", + "source_file": "concepts/completed_2026-09-04.md", + "source_location": "L48", + "_origin": "ast", + "id": "concepts_completed_2026_09_04_700\uc904_\uc81c\ud55c_\ubd84\ub9ac", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "700\u110c\u116e\u11af \u110c\u1166\u1112\u1161\u11ab \u1107\u116e\u11ab\u1105\u1175" + }, + { + "label": "\uc0c1\uc2dc\uacc4\ud68d\uc11c \ucd94\uac00 \uc644\ub8cc \ubc94\uc704", + "file_type": "document", + "source_file": "concepts/completed_2026-09-04.md", + "source_location": "L54", + "_origin": "ast", + "id": "concepts_completed_2026_09_04_\uc0c1\uc2dc\uacc4\ud68d\uc11c_\ucd94\uac00_\uc644\ub8cc_\ubc94\uc704", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "\u1109\u1161\u11bc\u1109\u1175\u1100\u1168\u1112\u116c\u11a8\u1109\u1165 \u110e\u116e\u1100\u1161 \u110b\u116a\u11ab\u1105\u116d \u1107\u1165\u11b7\u110b\u1171" + }, + { + "label": "\ubcf4\uc874\ub41c \ubbf8\uc644\ub8cc \ubc94\uc704", + "file_type": "document", + "source_file": "concepts/completed_2026-09-04.md", + "source_location": "L61", + "_origin": "ast", + "id": "concepts_completed_2026_09_04_\ubcf4\uc874\ub41c_\ubbf8\uc644\ub8cc_\ubc94\uc704", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "\u1107\u1169\u110c\u1169\u11ab\u1103\u116c\u11ab \u1106\u1175\u110b\u116a\u11ab\u1105\u116d \u1107\u1165\u11b7\u110b\u1171" + }, + { + "label": "completed_2026-09-07.md", + "file_type": "document", + "source_file": "concepts/completed_2026-09-07.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_completed_2026_09_07", + "community": 57, + "community_name": "2026-09-07 \uc644\ub8cc\u00b7\ubcf4\ub958 \uc694\uc57d", + "norm_label": "completed_2026-09-07.md" + }, + { + "label": "2026-09-07 \uc644\ub8cc\u00b7\ubcf4\ub958 \uc694\uc57d", + "file_type": "document", + "source_file": "concepts/completed_2026-09-07.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_completed_2026_09_07_2026_09_07_\uc644\ub8cc_\ubcf4\ub958_\uc694\uc57d", + "community": 57, + "community_name": "2026-09-07 \uc644\ub8cc\u00b7\ubcf4\ub958 \uc694\uc57d", + "norm_label": "2026-09-07 \u110b\u116a\u11ab\u1105\u116d\u00b7\u1107\u1169\u1105\u1172 \u110b\u116d\u110b\u1163\u11a8" + }, + { + "label": "\uc644\ub8cc \ubc94\uc704", + "file_type": "document", + "source_file": "concepts/completed_2026-09-07.md", + "source_location": "L11", + "_origin": "ast", + "id": "concepts_completed_2026_09_07_\uc644\ub8cc_\ubc94\uc704", + "community": 57, + "community_name": "2026-09-07 \uc644\ub8cc\u00b7\ubcf4\ub958 \uc694\uc57d", + "norm_label": "\u110b\u116a\u11ab\u1105\u116d \u1107\u1165\u11b7\u110b\u1171" + }, + { + "label": "\uc131\ub2a5\u00b7\uc6b4\uc601 \uacb0\uc815", + "file_type": "document", + "source_file": "concepts/completed_2026-09-07.md", + "source_location": "L23", + "_origin": "ast", + "id": "concepts_completed_2026_09_07_\uc131\ub2a5_\uc6b4\uc601_\uacb0\uc815", + "community": 57, + "community_name": "2026-09-07 \uc644\ub8cc\u00b7\ubcf4\ub958 \uc694\uc57d", + "norm_label": "\u1109\u1165\u11bc\u1102\u1173\u11bc\u00b7\u110b\u116e\u11ab\u110b\u1167\u11bc \u1100\u1167\u11af\u110c\u1165\u11bc" + }, + { + "label": "\uc8fc\uc758", + "file_type": "document", + "source_file": "concepts/completed_2026-09-07.md", + "source_location": "L29", + "_origin": "ast", + "id": "concepts_completed_2026_09_07_\uc8fc\uc758", + "community": 57, + "community_name": "2026-09-07 \uc644\ub8cc\u00b7\ubcf4\ub958 \uc694\uc57d", + "norm_label": "\u110c\u116e\u110b\u1174" + }, + { + "label": "completed_2026-09-09.md", + "file_type": "document", + "source_file": "concepts/completed_2026-09-09.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_completed_2026_09_09", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "completed_2026-09-09.md" + }, + { + "label": "2026-09-09 \uc644\ub8cc \uad6c\ud604\u00b7\uac80\uc99d", + "file_type": "document", + "source_file": "concepts/completed_2026-09-09.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_completed_2026_09_09_2026_09_09_\uc644\ub8cc_\uad6c\ud604_\uac80\uc99d", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "2026-09-09 \u110b\u116a\u11ab\u1105\u116d \u1100\u116e\u1112\u1167\u11ab\u00b7\u1100\u1165\u11b7\u110c\u1173\u11bc" + }, + { + "label": "B05\u00b7B06 \uc885\ud6a1\ub2e8", + "file_type": "document", + "source_file": "concepts/completed_2026-09-09.md", + "source_location": "L11", + "_origin": "ast", + "id": "concepts_completed_2026_09_09_b05_b06_\uc885\ud6a1\ub2e8", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "b05\u00b7b06 \u110c\u1169\u11bc\u1112\u116c\u11bc\u1103\u1161\u11ab" + }, + { + "label": "B07 \ud45c\uc900\ub3c4", + "file_type": "document", + "source_file": "concepts/completed_2026-09-09.md", + "source_location": "L23", + "_origin": "ast", + "id": "concepts_completed_2026_09_09_b07_\ud45c\uc900\ub3c4", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "b07 \u1111\u116d\u110c\u116e\u11ab\u1103\u1169" + }, + { + "label": "B08 \uc218\ub7c9\uc0b0\ucd9c", + "file_type": "document", + "source_file": "concepts/completed_2026-09-09.md", + "source_location": "L32", + "_origin": "ast", + "id": "concepts_completed_2026_09_09_b08_\uc218\ub7c9\uc0b0\ucd9c", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "b08 \u1109\u116e\u1105\u1163\u11bc\u1109\u1161\u11ab\u110e\u116e\u11af" + }, + { + "label": "B09 \uc6d0\uac00\uacc4\uc0b0", + "file_type": "document", + "source_file": "concepts/completed_2026-09-09.md", + "source_location": "L41", + "_origin": "ast", + "id": "concepts_completed_2026_09_09_b09_\uc6d0\uac00\uacc4\uc0b0", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "b09 \u110b\u116f\u11ab\u1100\u1161\u1100\u1168\u1109\u1161\u11ab" + }, + { + "label": "\uac80\uc99d \uacbd\uacc4", + "file_type": "document", + "source_file": "concepts/completed_2026-09-09.md", + "source_location": "L49", + "_origin": "ast", + "id": "concepts_completed_2026_09_09_\uac80\uc99d_\uacbd\uacc4", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc \u1100\u1167\u11bc\u1100\u1168" + }, + { + "label": "crs_metadata.md", + "file_type": "document", + "source_file": "concepts/crs_metadata.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_crs_metadata", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "crs_metadata.md" + }, + { + "label": "CRS \uba54\ud0c0\ub370\uc774\ud130 \uc815\uc0c1\ud654", + "file_type": "document", + "source_file": "concepts/crs_metadata.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_crs_metadata_crs_\uba54\ud0c0\ub370\uc774\ud130_\uc815\uc0c1\ud654", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "crs \u1106\u1166\u1110\u1161\u1103\u1166\u110b\u1175\u1110\u1165 \u110c\u1165\u11bc\u1109\u1161\u11bc\u1112\u116a" + }, + { + "label": "\uac80\uc99d\ub41c \ud310\uc815", + "file_type": "document", + "source_file": "concepts/crs_metadata.md", + "source_location": "L11", + "_origin": "ast", + "id": "concepts_crs_metadata_\uac80\uc99d\ub41c_\ud310\uc815", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc\u1103\u116c\u11ab \u1111\u1161\u11ab\u110c\u1165\u11bc" + }, + { + "label": "\ub370\uc774\ud130 \ud750\ub984", + "file_type": "document", + "source_file": "concepts/crs_metadata.md", + "source_location": "L22", + "_origin": "ast", + "id": "concepts_crs_metadata_\ub370\uc774\ud130_\ud750\ub984", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "\u1103\u1166\u110b\u1175\u1110\u1165 \u1112\u1173\u1105\u1173\u11b7" + }, + { + "label": "\uac80\uc99d \ubc94\uc704\uc640 \ubaa8\uc21c \uc774\ub825", + "file_type": "document", + "source_file": "concepts/crs_metadata.md", + "source_location": "L30", + "_origin": "ast", + "id": "concepts_crs_metadata_\uac80\uc99d_\ubc94\uc704\uc640_\ubaa8\uc21c_\uc774\ub825", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc \u1107\u1165\u11b7\u110b\u1171\u110b\u116a \u1106\u1169\u1109\u116e\u11ab \u110b\u1175\u1105\u1167\u11a8" + }, + { + "label": "\uc0ac\uc6a9\ucc98", + "file_type": "document", + "source_file": "concepts/crs_metadata.md", + "source_location": "L36", + "_origin": "ast", + "id": "concepts_crs_metadata_\uc0ac\uc6a9\ucc98", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "\u1109\u1161\u110b\u116d\u11bc\u110e\u1165" + }, + { + "label": "files_surface.md", + "file_type": "document", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_db_schema_files_surface", + "community": 8, + "community_name": "DB: \ud30c\uc77c/\uc9c0\ud45c\uba74\ubd84\uc11d \ud14c\uc774\ube14", + "norm_label": "files_surface.md" + }, + { + "label": "DB: \ud30c\uc77c/\uc9c0\ud45c\uba74\ubd84\uc11d \ud14c\uc774\ube14", + "file_type": "document", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_db_schema_files_surface_db_\ud30c\uc77c_\uc9c0\ud45c\uba74\ubd84\uc11d_\ud14c\uc774\ube14", + "community": 8, + "community_name": "DB: \ud30c\uc77c/\uc9c0\ud45c\uba74\ubd84\uc11d \ud14c\uc774\ube14", + "norm_label": "db: \u1111\u1161\u110b\u1175\u11af/\u110c\u1175\u1111\u116d\u1106\u1167\u11ab\u1107\u116e\u11ab\u1109\u1165\u11a8 \u1110\u1166\u110b\u1175\u1107\u1173\u11af" + }, + { + "label": "upload_sessions (\uc5c5\ub85c\ub4dc \uc138\uc158)", + "file_type": "document", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L13", + "_origin": "ast", + "id": "concepts_db_schema_files_surface_upload_sessions_\uc5c5\ub85c\ub4dc_\uc138\uc158", + "community": 8, + "community_name": "DB: \ud30c\uc77c/\uc9c0\ud45c\uba74\ubd84\uc11d \ud14c\uc774\ube14", + "norm_label": "upload_sessions (\u110b\u1165\u11b8\u1105\u1169\u1103\u1173 \u1109\u1166\u1109\u1167\u11ab)" + }, + { + "label": "upload_chunks (\uc5c5\ub85c\ub4dc \uccad\ud06c \ub370\uc774\ud130)", + "file_type": "document", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L24", + "_origin": "ast", + "id": "concepts_db_schema_files_surface_upload_chunks_\uc5c5\ub85c\ub4dc_\uccad\ud06c_\ub370\uc774\ud130", + "community": 8, + "community_name": "DB: \ud30c\uc77c/\uc9c0\ud45c\uba74\ubd84\uc11d \ud14c\uc774\ube14", + "norm_label": "upload_chunks (\u110b\u1165\u11b8\u1105\u1169\u1103\u1173 \u110e\u1165\u11bc\u110f\u1173 \u1103\u1166\u110b\u1175\u1110\u1165)" + }, + { + "label": "input_files (\uc785\ub825 \uc6d0\ubcf8 \ud30c\uc77c)", + "file_type": "document", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L35", + "_origin": "ast", + "id": "concepts_db_schema_files_surface_input_files_\uc785\ub825_\uc6d0\ubcf8_\ud30c\uc77c", + "community": 8, + "community_name": "DB: \ud30c\uc77c/\uc9c0\ud45c\uba74\ubd84\uc11d \ud14c\uc774\ube14", + "norm_label": "input_files (\u110b\u1175\u11b8\u1105\u1167\u11a8 \u110b\u116f\u11ab\u1107\u1169\u11ab \u1111\u1161\u110b\u1175\u11af)" + }, + { + "label": "processed_point_cloud (\ud544\ud130/\ubcc0\ud658 \ud3ec\uc778\ud2b8\ud074\ub77c\uc6b0\ub4dc)", + "file_type": "document", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L48", + "_origin": "ast", + "id": "concepts_db_schema_files_surface_processed_point_cloud_\ud544\ud130_\ubcc0\ud658_\ud3ec\uc778\ud2b8\ud074\ub77c\uc6b0\ub4dc", + "community": 8, + "community_name": "DB: \ud30c\uc77c/\uc9c0\ud45c\uba74\ubd84\uc11d \ud14c\uc774\ube14", + "norm_label": "processed_point_cloud (\u1111\u1175\u11af\u1110\u1165/\u1107\u1167\u11ab\u1112\u116a\u11ab \u1111\u1169\u110b\u1175\u11ab\u1110\u1173\u110f\u1173\u11af\u1105\u1161\u110b\u116e\u1103\u1173)" + }, + { + "label": "surface_models (\uc9c0\ud45c\uba74 \ubaa8\ub378 \ubc0f \ub4f1\uace0\uc120)", + "file_type": "document", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L64", + "_origin": "ast", + "id": "concepts_db_schema_files_surface_surface_models_\uc9c0\ud45c\uba74_\ubaa8\ub378_\ubc0f_\ub4f1\uace0\uc120", + "community": 8, + "community_name": "DB: \ud30c\uc77c/\uc9c0\ud45c\uba74\ubd84\uc11d \ud14c\uc774\ube14", + "norm_label": "surface_models (\u110c\u1175\u1111\u116d\u1106\u1167\u11ab \u1106\u1169\u1103\u1166\u11af \u1106\u1175\u11be \u1103\u1173\u11bc\u1100\u1169\u1109\u1165\u11ab)" + }, + { + "label": "terrain_layers (\uc9c0\ud615 \ub808\uc774\uc5b4)", + "file_type": "document", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L77", + "_origin": "ast", + "id": "concepts_db_schema_files_surface_terrain_layers_\uc9c0\ud615_\ub808\uc774\uc5b4", + "community": 8, + "community_name": "DB: \ud30c\uc77c/\uc9c0\ud45c\uba74\ubd84\uc11d \ud14c\uc774\ube14", + "norm_label": "terrain_layers (\u110c\u1175\u1112\u1167\u11bc \u1105\u1166\u110b\u1175\u110b\u1165)" + }, + { + "label": "input_files.status \uac12", + "file_type": "document", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L89", + "_origin": "ast", + "id": "concepts_db_schema_files_surface_input_files_status_\uac12", + "community": 8, + "community_name": "DB: \ud30c\uc77c/\uc9c0\ud45c\uba74\ubd84\uc11d \ud14c\uc774\ube14", + "norm_label": "input_files.status \u1100\u1161\u11b9" + }, + { + "label": "surface_models.status \uac12", + "file_type": "document", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L92", + "_origin": "ast", + "id": "concepts_db_schema_files_surface_surface_models_status_\uac12", + "community": 8, + "community_name": "DB: \ud30c\uc77c/\uc9c0\ud45c\uba74\ubd84\uc11d \ud14c\uc774\ube14", + "norm_label": "surface_models.status \u1100\u1161\u11b9" + }, + { + "label": "processed_point_cloud.status \uac12", + "file_type": "document", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L95", + "_origin": "ast", + "id": "concepts_db_schema_files_surface_processed_point_cloud_status_\uac12", + "community": 8, + "community_name": "DB: \ud30c\uc77c/\uc9c0\ud45c\uba74\ubd84\uc11d \ud14c\uc774\ube14", + "norm_label": "processed_point_cloud.status \u1100\u1161\u11b9" + }, + { + "label": "logs_monitoring.md", + "file_type": "document", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_db_schema_logs_monitoring", + "community": 5, + "community_name": "DB: \ub85c\uadf8/\ubaa8\ub2c8\ud130\ub9c1 \ud14c\uc774\ube14", + "norm_label": "logs_monitoring.md" + }, + { + "label": "DB: \ub85c\uadf8/\ubaa8\ub2c8\ud130\ub9c1 \ud14c\uc774\ube14", + "file_type": "document", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_db_schema_logs_monitoring_db_\ub85c\uadf8_\ubaa8\ub2c8\ud130\ub9c1_\ud14c\uc774\ube14", + "community": 5, + "community_name": "DB: \ub85c\uadf8/\ubaa8\ub2c8\ud130\ub9c1 \ud14c\uc774\ube14", + "norm_label": "db: \u1105\u1169\u1100\u1173/\u1106\u1169\u1102\u1175\u1110\u1165\u1105\u1175\u11bc \u1110\u1166\u110b\u1175\u1107\u1173\u11af" + }, + { + "label": "login_logs (\ub85c\uadf8\uc778 \uc2dc\ub3c4 \ub85c\uadf8)", + "file_type": "document", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L13", + "_origin": "ast", + "id": "concepts_db_schema_logs_monitoring_login_logs_\ub85c\uadf8\uc778_\uc2dc\ub3c4_\ub85c\uadf8", + "community": 5, + "community_name": "DB: \ub85c\uadf8/\ubaa8\ub2c8\ud130\ub9c1 \ud14c\uc774\ube14", + "norm_label": "login_logs (\u1105\u1169\u1100\u1173\u110b\u1175\u11ab \u1109\u1175\u1103\u1169 \u1105\u1169\u1100\u1173)" + }, + { + "label": "activity_logs (\uc0ac\uc6a9\uc790 \ud65c\ub3d9 \ub85c\uadf8)", + "file_type": "document", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L23", + "_origin": "ast", + "id": "concepts_db_schema_logs_monitoring_activity_logs_\uc0ac\uc6a9\uc790_\ud65c\ub3d9_\ub85c\uadf8", + "community": 5, + "community_name": "DB: \ub85c\uadf8/\ubaa8\ub2c8\ud130\ub9c1 \ud14c\uc774\ube14", + "norm_label": "activity_logs (\u1109\u1161\u110b\u116d\u11bc\u110c\u1161 \u1112\u116a\u11af\u1103\u1169\u11bc \u1105\u1169\u1100\u1173)" + }, + { + "label": "audit_logs (\uac10\uc0ac \ub85c\uadf8)", + "file_type": "document", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L33", + "_origin": "ast", + "id": "concepts_db_schema_logs_monitoring_audit_logs_\uac10\uc0ac_\ub85c\uadf8", + "community": 5, + "community_name": "DB: \ub85c\uadf8/\ubaa8\ub2c8\ud130\ub9c1 \ud14c\uc774\ube14", + "norm_label": "audit_logs (\u1100\u1161\u11b7\u1109\u1161 \u1105\u1169\u1100\u1173)" + }, + { + "label": "system_audit_logs (\ud504\ub85c\uc81d\ud2b8/\uc870\uc9c1 \ubcc0\uacbd \uac10\uc0ac \ub85c\uadf8)", + "file_type": "document", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L43", + "_origin": "ast", + "id": "concepts_db_schema_logs_monitoring_system_audit_logs_\ud504\ub85c\uc81d\ud2b8_\uc870\uc9c1_\ubcc0\uacbd_\uac10\uc0ac_\ub85c\uadf8", + "community": 5, + "community_name": "DB: \ub85c\uadf8/\ubaa8\ub2c8\ud130\ub9c1 \ud14c\uc774\ube14", + "norm_label": "system_audit_logs (\u1111\u1173\u1105\u1169\u110c\u1166\u11a8\u1110\u1173/\u110c\u1169\u110c\u1175\u11a8 \u1107\u1167\u11ab\u1100\u1167\u11bc \u1100\u1161\u11b7\u1109\u1161 \u1105\u1169\u1100\u1173)" + }, + { + "label": "system_admin_logs (\uc2dc\uc2a4\ud15c \uad00\ub9ac\uc790 \ud589\uc704 \ub85c\uadf8)", + "file_type": "document", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L53", + "_origin": "ast", + "id": "concepts_db_schema_logs_monitoring_system_admin_logs_\uc2dc\uc2a4\ud15c_\uad00\ub9ac\uc790_\ud589\uc704_\ub85c\uadf8", + "community": 5, + "community_name": "DB: \ub85c\uadf8/\ubaa8\ub2c8\ud130\ub9c1 \ud14c\uc774\ube14", + "norm_label": "system_admin_logs (\u1109\u1175\u1109\u1173\u1110\u1166\u11b7 \u1100\u116a\u11ab\u1105\u1175\u110c\u1161 \u1112\u1162\u11bc\u110b\u1171 \u1105\u1169\u1100\u1173)" + }, + { + "label": "system_resources (\uc2dc\uc2a4\ud15c \uc790\uc6d0 \uacc4\uce21)", + "file_type": "document", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L62", + "_origin": "ast", + "id": "concepts_db_schema_logs_monitoring_system_resources_\uc2dc\uc2a4\ud15c_\uc790\uc6d0_\uacc4\uce21", + "community": 5, + "community_name": "DB: \ub85c\uadf8/\ubaa8\ub2c8\ud130\ub9c1 \ud14c\uc774\ube14", + "norm_label": "system_resources (\u1109\u1175\u1109\u1173\u1110\u1166\u11b7 \u110c\u1161\u110b\u116f\u11ab \u1100\u1168\u110e\u1173\u11a8)" + }, + { + "label": "support_requests (\uae30\uc220 \uc9c0\uc6d0 \uc694\uccad)", + "file_type": "document", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L71", + "_origin": "ast", + "id": "concepts_db_schema_logs_monitoring_support_requests_\uae30\uc220_\uc9c0\uc6d0_\uc694\uccad", + "community": 5, + "community_name": "DB: \ub85c\uadf8/\ubaa8\ub2c8\ud130\ub9c1 \ud14c\uc774\ube14", + "norm_label": "support_requests (\u1100\u1175\u1109\u116e\u11af \u110c\u1175\u110b\u116f\u11ab \u110b\u116d\u110e\u1165\u11bc)" + }, + { + "label": "change_logs (\uc124\uacc4 \ubcc0\uacbd \uc774\ub825)", + "file_type": "document", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L84", + "_origin": "ast", + "id": "concepts_db_schema_logs_monitoring_change_logs_\uc124\uacc4_\ubcc0\uacbd_\uc774\ub825", + "community": 5, + "community_name": "DB: \ub85c\uadf8/\ubaa8\ub2c8\ud130\ub9c1 \ud14c\uc774\ube14", + "norm_label": "change_logs (\u1109\u1165\u11af\u1100\u1168 \u1107\u1167\u11ab\u1100\u1167\u11bc \u110b\u1175\u1105\u1167\u11a8)" + }, + { + "label": "system_audit_logs \u2014 \uc0ac\uc6a9\ucc98 (B01, B02)", + "file_type": "document", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L95", + "_origin": "ast", + "id": "concepts_db_schema_logs_monitoring_system_audit_logs_\uc0ac\uc6a9\ucc98_b01_b02", + "community": 5, + "community_name": "DB: \ub85c\uadf8/\ubaa8\ub2c8\ud130\ub9c1 \ud14c\uc774\ube14", + "norm_label": "system_audit_logs \u2014 \u1109\u1161\u110b\u116d\u11bc\u110e\u1165 (b01, b02)" + }, + { + "label": "\ub9ac\uc18c\uc2a4 API (SYSTEM_ADMIN \uc804\uc6a9)", + "file_type": "document", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L98", + "_origin": "ast", + "id": "concepts_db_schema_logs_monitoring_\ub9ac\uc18c\uc2a4_api_system_admin_\uc804\uc6a9", + "community": 5, + "community_name": "DB: \ub85c\uadf8/\ubaa8\ub2c8\ud130\ub9c1 \ud14c\uc774\ube14", + "norm_label": "\u1105\u1175\u1109\u1169\u1109\u1173 api (system_admin \u110c\u1165\u11ab\u110b\u116d\u11bc)" + }, + { + "label": "overview.md", + "file_type": "document", + "source_file": "concepts/db_schema/overview.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_db_schema_overview", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "overview.md" + }, + { + "label": "DB \uc2a4\ud0a4\ub9c8 \uac1c\uc694", + "file_type": "document", + "source_file": "concepts/db_schema/overview.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_db_schema_overview_db_\uc2a4\ud0a4\ub9c8_\uac1c\uc694", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "db \u1109\u1173\u110f\u1175\u1106\u1161 \u1100\u1162\u110b\u116d" + }, + { + "label": "\ud14c\uc774\ube14 \uadf8\ub8f9 (9\uac1c)", + "file_type": "document", + "source_file": "concepts/db_schema/overview.md", + "source_location": "L22", + "_origin": "ast", + "id": "concepts_db_schema_overview_\ud14c\uc774\ube14_\uadf8\ub8f9_9\uac1c", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u1110\u1166\u110b\u1175\u1107\u1173\u11af \u1100\u1173\u1105\u116e\u11b8 (9\u1100\u1162)" + }, + { + "label": "\ud30c\uc77c \uacbd\ub85c \ucd94\uc801 \uceec\ub7fc (DB\uc5d0 \uacbd\ub85c\ub9cc \uae30\ub85d, \uc2e4 \ud30c\uc77c\uc740 \ud30c\uc77c\uc2dc\uc2a4\ud15c)", + "file_type": "document", + "source_file": "concepts/db_schema/overview.md", + "source_location": "L34", + "_origin": "ast", + "id": "concepts_db_schema_overview_\ud30c\uc77c_\uacbd\ub85c_\ucd94\uc801_\uceec\ub7fc_db\uc5d0_\uacbd\ub85c\ub9cc_\uae30\ub85d_\uc2e4_\ud30c\uc77c\uc740_\ud30c\uc77c\uc2dc\uc2a4\ud15c", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u1167\u11bc\u1105\u1169 \u110e\u116e\u110c\u1165\u11a8 \u110f\u1165\u11af\u1105\u1165\u11b7 (db\u110b\u1166 \u1100\u1167\u11bc\u1105\u1169\u1106\u1161\u11ab \u1100\u1175\u1105\u1169\u11a8, \u1109\u1175\u11af \u1111\u1161\u110b\u1175\u11af\u110b\u1173\u11ab \u1111\u1161\u110b\u1175\u11af\u1109\u1175\u1109\u1173\u1110\u1166\u11b7)" + }, + { + "label": "\uc124\uacc4 \uc6d0\uce59", + "file_type": "document", + "source_file": "concepts/db_schema/overview.md", + "source_location": "L51", + "_origin": "ast", + "id": "concepts_db_schema_overview_\uc124\uacc4_\uc6d0\uce59", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u1109\u1165\u11af\u1100\u1168 \u110b\u116f\u11ab\u110e\u1175\u11a8" + }, + { + "label": "\ud14c\uc774\ube14 \uad00\uacc4 (\ud575\uc2ec \ud750\ub984)", + "file_type": "document", + "source_file": "concepts/db_schema/overview.md", + "source_location": "L56", + "_origin": "ast", + "id": "concepts_db_schema_overview_\ud14c\uc774\ube14_\uad00\uacc4_\ud575\uc2ec_\ud750\ub984", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u1110\u1166\u110b\u1175\u1107\u1173\u11af \u1100\u116a\u11ab\u1100\u1168 (\u1112\u1162\u11a8\u1109\u1175\u11b7 \u1112\u1173\u1105\u1173\u11b7)" + }, + { + "label": "projects.md", + "file_type": "document", + "source_file": "concepts/db_schema/projects.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_db_schema_projects", + "community": 45, + "community_name": "DB: \ud504\ub85c\uc81d\ud2b8 \uad00\ub9ac \ud14c\uc774\ube14", + "norm_label": "projects.md" + }, + { + "label": "DB: \ud504\ub85c\uc81d\ud2b8 \uad00\ub9ac \ud14c\uc774\ube14", + "file_type": "document", + "source_file": "concepts/db_schema/projects.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_db_schema_projects_db_\ud504\ub85c\uc81d\ud2b8_\uad00\ub9ac_\ud14c\uc774\ube14", + "community": 45, + "community_name": "DB: \ud504\ub85c\uc81d\ud2b8 \uad00\ub9ac \ud14c\uc774\ube14", + "norm_label": "db: \u1111\u1173\u1105\u1169\u110c\u1166\u11a8\u1110\u1173 \u1100\u116a\u11ab\u1105\u1175 \u1110\u1166\u110b\u1175\u1107\u1173\u11af" + }, + { + "label": "projects (\ud504\ub85c\uc81d\ud2b8)", + "file_type": "document", + "source_file": "concepts/db_schema/projects.md", + "source_location": "L13", + "_origin": "ast", + "id": "concepts_db_schema_projects_projects_\ud504\ub85c\uc81d\ud2b8", + "community": 45, + "community_name": "DB: \ud504\ub85c\uc81d\ud2b8 \uad00\ub9ac \ud14c\uc774\ube14", + "norm_label": "projects (\u1111\u1173\u1105\u1169\u110c\u1166\u11a8\u1110\u1173)" + }, + { + "label": "project_versions (\ud504\ub85c\uc81d\ud2b8 \ubc84\uc804 \uc2a4\ub0c5\uc0f7)", + "file_type": "document", + "source_file": "concepts/db_schema/projects.md", + "source_location": "L30", + "_origin": "ast", + "id": "concepts_db_schema_projects_project_versions_\ud504\ub85c\uc81d\ud2b8_\ubc84\uc804_\uc2a4\ub0c5\uc0f7", + "community": 45, + "community_name": "DB: \ud504\ub85c\uc81d\ud2b8 \uad00\ub9ac \ud14c\uc774\ube14", + "norm_label": "project_versions (\u1111\u1173\u1105\u1169\u110c\u1166\u11a8\u1110\u1173 \u1107\u1165\u110c\u1165\u11ab \u1109\u1173\u1102\u1162\u11b8\u1109\u1163\u11ba)" + }, + { + "label": "project_automations (\ud504\ub85c\uc81d\ud2b8 \uc790\ub3d9\ud654 \uc815\ucc45)", + "file_type": "document", + "source_file": "concepts/db_schema/projects.md", + "source_location": "L40", + "_origin": "ast", + "id": "concepts_db_schema_projects_project_automations_\ud504\ub85c\uc81d\ud2b8_\uc790\ub3d9\ud654_\uc815\ucc45", + "community": 45, + "community_name": "DB: \ud504\ub85c\uc81d\ud2b8 \uad00\ub9ac \ud14c\uc774\ube14", + "norm_label": "project_automations (\u1111\u1173\u1105\u1169\u110c\u1166\u11a8\u1110\u1173 \u110c\u1161\u1103\u1169\u11bc\u1112\u116a \u110c\u1165\u11bc\u110e\u1162\u11a8)" + }, + { + "label": "project_workflow_stages (\ub2e8\uacc4\ubcc4 \uc0c1\uc138 \uc0c1\ud0dc)", + "file_type": "document", + "source_file": "concepts/db_schema/projects.md", + "source_location": "L54", + "_origin": "ast", + "id": "concepts_db_schema_projects_project_workflow_stages_\ub2e8\uacc4\ubcc4_\uc0c1\uc138_\uc0c1\ud0dc", + "community": 45, + "community_name": "DB: \ud504\ub85c\uc81d\ud2b8 \uad00\ub9ac \ud14c\uc774\ube14", + "norm_label": "project_workflow_stages (\u1103\u1161\u11ab\u1100\u1168\u1107\u1167\u11af \u1109\u1161\u11bc\u1109\u1166 \u1109\u1161\u11bc\u1110\u1162)" + }, + { + "label": "route_profile.md", + "file_type": "document", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_db_schema_route_profile", + "community": 9, + "community_name": "DB: \uacbd\ub85c/\uc885\ud6a1\ub2e8 \ud14c\uc774\ube14", + "norm_label": "route_profile.md" + }, + { + "label": "DB: \uacbd\ub85c/\uc885\ud6a1\ub2e8 \ud14c\uc774\ube14", + "file_type": "document", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_db_schema_route_profile_db_\uacbd\ub85c_\uc885\ud6a1\ub2e8_\ud14c\uc774\ube14", + "community": 9, + "community_name": "DB: \uacbd\ub85c/\uc885\ud6a1\ub2e8 \ud14c\uc774\ube14", + "norm_label": "db: \u1100\u1167\u11bc\u1105\u1169/\u110c\u1169\u11bc\u1112\u116c\u11bc\u1103\u1161\u11ab \u1110\u1166\u110b\u1175\u1107\u1173\u11af" + }, + { + "label": "routes (\ub178\uc120 \uacbd\ub85c)", + "file_type": "document", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L13", + "_origin": "ast", + "id": "concepts_db_schema_route_profile_routes_\ub178\uc120_\uacbd\ub85c", + "community": 9, + "community_name": "DB: \uacbd\ub85c/\uc885\ud6a1\ub2e8 \ud14c\uc774\ube14", + "norm_label": "routes (\u1102\u1169\u1109\u1165\u11ab \u1100\u1167\u11bc\u1105\u1169)" + }, + { + "label": "route_points (\uacbd\ub85c \uc88c\ud45c\uc810)", + "file_type": "document", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L29", + "_origin": "ast", + "id": "concepts_db_schema_route_profile_route_points_\uacbd\ub85c_\uc88c\ud45c\uc810", + "community": 9, + "community_name": "DB: \uacbd\ub85c/\uc885\ud6a1\ub2e8 \ud14c\uc774\ube14", + "norm_label": "route_points (\u1100\u1167\u11bc\u1105\u1169 \u110c\u116a\u1111\u116d\u110c\u1165\u11b7)" + }, + { + "label": "route_statistics (\ub178\uc120 \ud1b5\uacc4)", + "file_type": "document", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L40", + "_origin": "ast", + "id": "concepts_db_schema_route_profile_route_statistics_\ub178\uc120_\ud1b5\uacc4", + "community": 9, + "community_name": "DB: \uacbd\ub85c/\uc885\ud6a1\ub2e8 \ud14c\uc774\ube14", + "norm_label": "route_statistics (\u1102\u1169\u1109\u1165\u11ab \u1110\u1169\u11bc\u1100\u1168)" + }, + { + "label": "longitudinal_sections (\uc885\ub2e8\uba74 \uc124\uacc4)", + "file_type": "document", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L51", + "_origin": "ast", + "id": "concepts_db_schema_route_profile_longitudinal_sections_\uc885\ub2e8\uba74_\uc124\uacc4", + "community": 9, + "community_name": "DB: \uacbd\ub85c/\uc885\ud6a1\ub2e8 \ud14c\uc774\ube14", + "norm_label": "longitudinal_sections (\u110c\u1169\u11bc\u1103\u1161\u11ab\u1106\u1167\u11ab \u1109\u1165\u11af\u1100\u1168)" + }, + { + "label": "`data` \uceec\ub7fc \ub0b4 `options` \uc2a4\ub0c5\uc0f7 \uad6c\uc870 (2026-07-19 \ub3c4\uc785)", + "file_type": "document", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L63", + "_origin": "ast", + "id": "concepts_db_schema_route_profile_data_\uceec\ub7fc_\ub0b4_options_\uc2a4\ub0c5\uc0f7_\uad6c\uc870_2026_07_19_\ub3c4\uc785", + "community": 9, + "community_name": "DB: \uacbd\ub85c/\uc885\ud6a1\ub2e8 \ud14c\uc774\ube14", + "norm_label": "`data` \u110f\u1165\u11af\u1105\u1165\u11b7 \u1102\u1162 `options` \u1109\u1173\u1102\u1162\u11b8\u1109\u1163\u11ba \u1100\u116e\u110c\u1169 (2026-07-19 \u1103\u1169\u110b\u1175\u11b8)" + }, + { + "label": "`data` \uceec\ub7fc \ub0b4 `profile_alignment` \uad6c\uc870 (2026-07-23 \ub3c4\uc785)", + "file_type": "document", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L66", + "_origin": "ast", + "id": "concepts_db_schema_route_profile_data_\uceec\ub7fc_\ub0b4_profile_alignment_\uad6c\uc870_2026_07_23_\ub3c4\uc785", + "community": 9, + "community_name": "DB: \uacbd\ub85c/\uc885\ud6a1\ub2e8 \ud14c\uc774\ube14", + "norm_label": "`data` \u110f\u1165\u11af\u1105\u1165\u11b7 \u1102\u1162 `profile_alignment` \u1100\u116e\u110c\u1169 (2026-07-23 \u1103\u1169\u110b\u1175\u11b8)" + }, + { + "label": "cross_sections (\ud6a1\ub2e8\uba74 \uc124\uacc4)", + "file_type": "document", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L70", + "_origin": "ast", + "id": "concepts_db_schema_route_profile_cross_sections_\ud6a1\ub2e8\uba74_\uc124\uacc4", + "community": 9, + "community_name": "DB: \uacbd\ub85c/\uc885\ud6a1\ub2e8 \ud14c\uc774\ube14", + "norm_label": "cross_sections (\u1112\u116c\u11bc\u1103\u1161\u11ab\u1106\u1167\u11ab \u1109\u1165\u11af\u1100\u1168)" + }, + { + "label": "routes.status \ud750\ub984", + "file_type": "document", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L82", + "_origin": "ast", + "id": "concepts_db_schema_route_profile_routes_status_\ud750\ub984", + "community": 9, + "community_name": "DB: \uacbd\ub85c/\uc885\ud6a1\ub2e8 \ud14c\uc774\ube14", + "norm_label": "routes.status \u1112\u1173\u1105\u1173\u11b7" + }, + { + "label": "cross_sections.data.structures", + "file_type": "document", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L85", + "_origin": "ast", + "id": "concepts_db_schema_route_profile_cross_sections_data_structures", + "community": 9, + "community_name": "DB: \uacbd\ub85c/\uc885\ud6a1\ub2e8 \ud14c\uc774\ube14", + "norm_label": "cross_sections.data.structures" + }, + { + "label": "longitudinal_alignment.md", + "file_type": "document", + "source_file": "concepts/db_schema/route_profile/longitudinal_alignment.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_db_schema_route_profile_longitudinal_alignment", + "community": 148, + "community_name": "longitudinal_alignment.md", + "norm_label": "longitudinal_alignment.md" + }, + { + "label": "DB: longitudinal_sections.data.profile_alignment \uad6c\uc870", + "file_type": "document", + "source_file": "concepts/db_schema/route_profile/longitudinal_alignment.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_db_schema_route_profile_longitudinal_alignment_db_longitudinal_sections_data_profile_alignment_\uad6c\uc870", + "community": 148, + "community_name": "longitudinal_alignment.md", + "norm_label": "db: longitudinal_sections.data.profile_alignment \u1100\u116e\u110c\u1169" + }, + { + "label": "structure_output.md", + "file_type": "document", + "source_file": "concepts/db_schema/structure_output.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_db_schema_structure_output", + "community": 34, + "community_name": "DB: \uad6c\uc870\ubb3c/\uc218\ub7c9/\uc0b0\ucd9c\ubb3c \ud14c\uc774\ube14", + "norm_label": "structure_output.md" + }, + { + "label": "DB: \uad6c\uc870\ubb3c/\uc218\ub7c9/\uc0b0\ucd9c\ubb3c \ud14c\uc774\ube14", + "file_type": "document", + "source_file": "concepts/db_schema/structure_output.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_db_schema_structure_output_db_\uad6c\uc870\ubb3c_\uc218\ub7c9_\uc0b0\ucd9c\ubb3c_\ud14c\uc774\ube14", + "community": 34, + "community_name": "DB: \uad6c\uc870\ubb3c/\uc218\ub7c9/\uc0b0\ucd9c\ubb3c \ud14c\uc774\ube14", + "norm_label": "db: \u1100\u116e\u110c\u1169\u1106\u116e\u11af/\u1109\u116e\u1105\u1163\u11bc/\u1109\u1161\u11ab\u110e\u116e\u11af\u1106\u116e\u11af \u1110\u1166\u110b\u1175\u1107\u1173\u11af" + }, + { + "label": "structures (\ubc30\uce58 \uad6c\uc870\ubb3c)", + "file_type": "document", + "source_file": "concepts/db_schema/structure_output.md", + "source_location": "L13", + "_origin": "ast", + "id": "concepts_db_schema_structure_output_structures_\ubc30\uce58_\uad6c\uc870\ubb3c", + "community": 34, + "community_name": "DB: \uad6c\uc870\ubb3c/\uc218\ub7c9/\uc0b0\ucd9c\ubb3c \ud14c\uc774\ube14", + "norm_label": "structures (\u1107\u1162\u110e\u1175 \u1100\u116e\u110c\u1169\u1106\u116e\u11af)" + }, + { + "label": "quantity_items (\uc218\ub7c9 \uc0b0\ucd9c \ud56d\ubaa9)", + "file_type": "document", + "source_file": "concepts/db_schema/structure_output.md", + "source_location": "L29", + "_origin": "ast", + "id": "concepts_db_schema_structure_output_quantity_items_\uc218\ub7c9_\uc0b0\ucd9c_\ud56d\ubaa9", + "community": 34, + "community_name": "DB: \uad6c\uc870\ubb3c/\uc218\ub7c9/\uc0b0\ucd9c\ubb3c \ud14c\uc774\ube14", + "norm_label": "quantity_items (\u1109\u116e\u1105\u1163\u11bc \u1109\u1161\u11ab\u110e\u116e\u11af \u1112\u1161\u11bc\u1106\u1169\u11a8)" + }, + { + "label": "outputs (\ucd5c\uc885 \uacac\uc801/\ub3c4\uba74 \uc0b0\ucd9c \uc138\uc158)", + "file_type": "document", + "source_file": "concepts/db_schema/structure_output.md", + "source_location": "L42", + "_origin": "ast", + "id": "concepts_db_schema_structure_output_outputs_\ucd5c\uc885_\uacac\uc801_\ub3c4\uba74_\uc0b0\ucd9c_\uc138\uc158", + "community": 34, + "community_name": "DB: \uad6c\uc870\ubb3c/\uc218\ub7c9/\uc0b0\ucd9c\ubb3c \ud14c\uc774\ube14", + "norm_label": "outputs (\u110e\u116c\u110c\u1169\u11bc \u1100\u1167\u11ab\u110c\u1165\u11a8/\u1103\u1169\u1106\u1167\u11ab \u1109\u1161\u11ab\u110e\u116e\u11af \u1109\u1166\u1109\u1167\u11ab)" + }, + { + "label": "output_files (\uac1c\ubcc4 \uc0b0\ucd9c \ud30c\uc77c \ub9ac\uc2a4\ud2b8)", + "file_type": "document", + "source_file": "concepts/db_schema/structure_output.md", + "source_location": "L54", + "_origin": "ast", + "id": "concepts_db_schema_structure_output_output_files_\uac1c\ubcc4_\uc0b0\ucd9c_\ud30c\uc77c_\ub9ac\uc2a4\ud2b8", + "community": 34, + "community_name": "DB: \uad6c\uc870\ubb3c/\uc218\ub7c9/\uc0b0\ucd9c\ubb3c \ud14c\uc774\ube14", + "norm_label": "output_files (\u1100\u1162\u1107\u1167\u11af \u1109\u1161\u11ab\u110e\u116e\u11af \u1111\u1161\u110b\u1175\u11af \u1105\u1175\u1109\u1173\u1110\u1173)" + }, + { + "label": "quantity_items \ucd1d\ube44\uc6a9 \uacc4\uc0b0 \uc608", + "file_type": "document", + "source_file": "concepts/db_schema/structure_output.md", + "source_location": "L65", + "_origin": "ast", + "id": "concepts_db_schema_structure_output_quantity_items_\ucd1d\ube44\uc6a9_\uacc4\uc0b0_\uc608", + "community": 34, + "community_name": "DB: \uad6c\uc870\ubb3c/\uc218\ub7c9/\uc0b0\ucd9c\ubb3c \ud14c\uc774\ube14", + "norm_label": "quantity_items \u110e\u1169\u11bc\u1107\u1175\u110b\u116d\u11bc \u1100\u1168\u1109\u1161\u11ab \u110b\u1168" + }, + { + "label": "README.md", + "file_type": "document", + "source_file": "concepts/db_schema/unconfirmed/README.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_db_schema_unconfirmed_readme", + "community": 115, + "community_name": "\ubbf8\ud655\uc815 \ud14c\uc774\ube14 \ubcf4\uad00\uc18c (Unconfirmed DB Schemas)", + "norm_label": "readme.md" + }, + { + "label": "\ubbf8\ud655\uc815 \ud14c\uc774\ube14 \ubcf4\uad00\uc18c (Unconfirmed DB Schemas)", + "file_type": "document", + "source_file": "concepts/db_schema/unconfirmed/README.md", + "source_location": "L7", + "_origin": "ast", + "id": "concepts_db_schema_unconfirmed_readme_\ubbf8\ud655\uc815_\ud14c\uc774\ube14_\ubcf4\uad00\uc18c_unconfirmed_db_schemas", + "community": 115, + "community_name": "\ubbf8\ud655\uc815 \ud14c\uc774\ube14 \ubcf4\uad00\uc18c (Unconfirmed DB Schemas)", + "norm_label": "\u1106\u1175\u1112\u116a\u11a8\u110c\u1165\u11bc \u1110\u1166\u110b\u1175\u1107\u1173\u11af \u1107\u1169\u1100\u116a\u11ab\u1109\u1169 (unconfirmed db schemas)" + }, + { + "label": "\uc6b4\uc601 \uaddc\uce59", + "file_type": "document", + "source_file": "concepts/db_schema/unconfirmed/README.md", + "source_location": "L11", + "_origin": "ast", + "id": "concepts_db_schema_unconfirmed_readme_\uc6b4\uc601_\uaddc\uce59", + "community": 115, + "community_name": "\ubbf8\ud655\uc815 \ud14c\uc774\ube14 \ubcf4\uad00\uc18c (Unconfirmed DB Schemas)", + "norm_label": "\u110b\u116e\u11ab\u110b\u1167\u11bc \u1100\u1172\u110e\u1175\u11a8" + }, + { + "label": "users_auth.md", + "file_type": "document", + "source_file": "concepts/db_schema/users_auth.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_db_schema_users_auth", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "users_auth.md" + }, + { + "label": "DB: \uc0ac\uc6a9\uc790/\uc778\uc99d/\uc870\uc9c1 \ud14c\uc774\ube14", + "file_type": "document", + "source_file": "concepts/db_schema/users_auth.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_db_schema_users_auth_db_\uc0ac\uc6a9\uc790_\uc778\uc99d_\uc870\uc9c1_\ud14c\uc774\ube14", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "db: \u1109\u1161\u110b\u116d\u11bc\u110c\u1161/\u110b\u1175\u11ab\u110c\u1173\u11bc/\u110c\u1169\u110c\u1175\u11a8 \u1110\u1166\u110b\u1175\u1107\u1173\u11af" + }, + { + "label": "users (\uc0ac\uc6a9\uc790)", + "file_type": "document", + "source_file": "concepts/db_schema/users_auth.md", + "source_location": "L13", + "_origin": "ast", + "id": "concepts_db_schema_users_auth_users_\uc0ac\uc6a9\uc790", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "users (\u1109\u1161\u110b\u116d\u11bc\u110c\u1161)" + }, + { + "label": "companies (\ud68c\uc0ac)", + "file_type": "document", + "source_file": "concepts/db_schema/users_auth.md", + "source_location": "L32", + "_origin": "ast", + "id": "concepts_db_schema_users_auth_companies_\ud68c\uc0ac", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "companies (\u1112\u116c\u1109\u1161)" + }, + { + "label": "sessions (\uc138\uc158)", + "file_type": "document", + "source_file": "concepts/db_schema/users_auth.md", + "source_location": "L45", + "_origin": "ast", + "id": "concepts_db_schema_users_auth_sessions_\uc138\uc158", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "sessions (\u1109\u1166\u1109\u1167\u11ab)" + }, + { + "label": "email_otps (\uc774\uba54\uc77c OTP)", + "file_type": "document", + "source_file": "concepts/db_schema/users_auth.md", + "source_location": "L56", + "_origin": "ast", + "id": "concepts_db_schema_users_auth_email_otps_\uc774\uba54\uc77c_otp", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "email_otps (\u110b\u1175\u1106\u1166\u110b\u1175\u11af otp)" + }, + { + "label": "trusted_devices (\uc2e0\ub8b0 \uae30\uae30)", + "file_type": "document", + "source_file": "concepts/db_schema/users_auth.md", + "source_location": "L65", + "_origin": "ast", + "id": "concepts_db_schema_users_auth_trusted_devices_\uc2e0\ub8b0_\uae30\uae30", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "trusted_devices (\u1109\u1175\u11ab\u1105\u116c \u1100\u1175\u1100\u1175)" + }, + { + "label": "join_requests (\ud68c\uc0ac \uac00\uc785 \uc2e0\uccad)", + "file_type": "document", + "source_file": "concepts/db_schema/users_auth.md", + "source_location": "L73", + "_origin": "ast", + "id": "concepts_db_schema_users_auth_join_requests_\ud68c\uc0ac_\uac00\uc785_\uc2e0\uccad", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "join_requests (\u1112\u116c\u1109\u1161 \u1100\u1161\u110b\u1175\u11b8 \u1109\u1175\u11ab\u110e\u1165\u11bc)" + }, + { + "label": "user_consents (\uc57d\uad00 \ub3d9\uc758)", + "file_type": "document", + "source_file": "concepts/db_schema/users_auth.md", + "source_location": "L84", + "_origin": "ast", + "id": "concepts_db_schema_users_auth_user_consents_\uc57d\uad00_\ub3d9\uc758", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "user_consents (\u110b\u1163\u11a8\u1100\u116a\u11ab \u1103\u1169\u11bc\u110b\u1174)" + }, + { + "label": "dependencies.md", + "file_type": "document", + "source_file": "concepts/dependencies.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_dependencies", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "dependencies.md" + }, + { + "label": "\uc678\ubd80 \ub77c\uc774\ube0c\ub7ec\ub9ac \uc758\uc874\uc131", + "file_type": "document", + "source_file": "concepts/dependencies.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_dependencies_\uc678\ubd80_\ub77c\uc774\ube0c\ub7ec\ub9ac_\uc758\uc874\uc131", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "\u110b\u116c\u1107\u116e \u1105\u1161\u110b\u1175\u1107\u1173\u1105\u1165\u1105\u1175 \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "\ubc31\uc5d4\ub4dc (Python 3.12.7)", + "file_type": "document", + "source_file": "concepts/dependencies.md", + "source_location": "L13", + "_origin": "ast", + "id": "concepts_dependencies_\ubc31\uc5d4\ub4dc_python_3_12_7", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "\u1107\u1162\u11a8\u110b\u1166\u11ab\u1103\u1173 (python 3.12.7)" + }, + { + "label": "\ud504\ub860\ud2b8\uc5d4\ub4dc (TypeScript/Node.js)", + "file_type": "document", + "source_file": "concepts/dependencies.md", + "source_location": "L31", + "_origin": "ast", + "id": "concepts_dependencies_\ud504\ub860\ud2b8\uc5d4\ub4dc_typescript_node_js", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "\u1111\u1173\u1105\u1169\u11ab\u1110\u1173\u110b\u1166\u11ab\u1103\u1173 (typescript/node.js)" + }, + { + "label": "\uc120\uc815 \uc6d0\uce59 (agent.md 3\uc808)", + "file_type": "document", + "source_file": "concepts/dependencies.md", + "source_location": "L40", + "_origin": "ast", + "id": "concepts_dependencies_\uc120\uc815_\uc6d0\uce59_agent_md_3\uc808", + "community": 2, + "community_name": "A00_Common \u2014 App Shell Framework", + "norm_label": "\u1109\u1165\u11ab\u110c\u1165\u11bc \u110b\u116f\u11ab\u110e\u1175\u11a8 (agent.md 3\u110c\u1165\u11af)" + }, + { + "label": "design.md", + "file_type": "document", + "source_file": "concepts/design.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_design", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "design.md" + }, + { + "label": "\ub514\uc790\uc778 \uc2dc\uc2a4\ud15c (Design System)", + "file_type": "document", + "source_file": "concepts/design.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_design_\ub514\uc790\uc778_\uc2dc\uc2a4\ud15c_design_system", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "\u1103\u1175\u110c\u1161\u110b\u1175\u11ab \u1109\u1175\u1109\u1173\u1110\u1166\u11b7 (design system)" + }, + { + "label": "\ube44\uc8fc\uc5bc \ud14c\ub9c8", + "file_type": "document", + "source_file": "concepts/design.md", + "source_location": "L13", + "_origin": "ast", + "id": "concepts_design_\ube44\uc8fc\uc5bc_\ud14c\ub9c8", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "\u1107\u1175\u110c\u116e\u110b\u1165\u11af \u1110\u1166\u1106\u1161" + }, + { + "label": "\ud575\uc2ec \uc0c9\uc0c1 \ud1a0\ud070 (Colors)", + "file_type": "document", + "source_file": "concepts/design.md", + "source_location": "L18", + "_origin": "ast", + "id": "concepts_design_\ud575\uc2ec_\uc0c9\uc0c1_\ud1a0\ud070_colors", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "\u1112\u1162\u11a8\u1109\u1175\u11b7 \u1109\u1162\u11a8\u1109\u1161\u11bc \u1110\u1169\u110f\u1173\u11ab (colors)" + }, + { + "label": "\ud0c0\uc774\ud3ec\uadf8\ub798\ud53c (Typography)", + "file_type": "document", + "source_file": "concepts/design.md", + "source_location": "L30", + "_origin": "ast", + "id": "concepts_design_\ud0c0\uc774\ud3ec\uadf8\ub798\ud53c_typography", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "\u1110\u1161\u110b\u1175\u1111\u1169\u1100\u1173\u1105\u1162\u1111\u1175 (typography)" + }, + { + "label": "\ub808\uc774\uc544\uc6c3 \ubc0f \ub465\uadfc \ud14c\ub450\ub9ac (Radius & Spacing)", + "file_type": "document", + "source_file": "concepts/design.md", + "source_location": "L44", + "_origin": "ast", + "id": "concepts_design_\ub808\uc774\uc544\uc6c3_\ubc0f_\ub465\uadfc_\ud14c\ub450\ub9ac_radius_spacing", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "\u1105\u1166\u110b\u1175\u110b\u1161\u110b\u116e\u11ba \u1106\u1175\u11be \u1103\u116e\u11bc\u1100\u1173\u11ab \u1110\u1166\u1103\u116e\u1105\u1175 (radius & spacing)" + }, + { + "label": "\uc804\uc5ed \uc2a4\ud06c\ub864\ubc14 \ub514\uc790\uc778 (Scrollbars)", + "file_type": "document", + "source_file": "concepts/design.md", + "source_location": "L51", + "_origin": "ast", + "id": "concepts_design_\uc804\uc5ed_\uc2a4\ud06c\ub864\ubc14_\ub514\uc790\uc778_scrollbars", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "\u110c\u1165\u11ab\u110b\u1167\u11a8 \u1109\u1173\u110f\u1173\u1105\u1169\u11af\u1107\u1161 \u1103\u1175\u110c\u1161\u110b\u1175\u11ab (scrollbars)" + }, + { + "label": "design_data_lifecycle.md", + "file_type": "document", + "source_file": "concepts/design_data_lifecycle.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_design_data_lifecycle", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "design_data_lifecycle.md" + }, + { + "label": "\uc124\uacc4 \ub370\uc774\ud130 \uc0dd\uba85\uc8fc\uae30", + "file_type": "document", + "source_file": "concepts/design_data_lifecycle.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_design_data_lifecycle_\uc124\uacc4_\ub370\uc774\ud130_\uc0dd\uba85\uc8fc\uae30", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u1109\u1165\u11af\u1100\u1168 \u1103\u1166\u110b\u1175\u1110\u1165 \u1109\u1162\u11bc\u1106\u1167\u11bc\u110c\u116e\u1100\u1175" + }, + { + "label": "\uc815\ubcf8 \uc138 \ubc8c", + "file_type": "document", + "source_file": "concepts/design_data_lifecycle.md", + "source_location": "L11", + "_origin": "ast", + "id": "concepts_design_data_lifecycle_\uc815\ubcf8_\uc138_\ubc8c", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u110c\u1165\u11bc\u1107\u1169\u11ab \u1109\u1166 \u1107\u1165\u11af" + }, + { + "label": "\uacc4\ud68d\ub178\uc120 \uaddc\uce59", + "file_type": "document", + "source_file": "concepts/design_data_lifecycle.md", + "source_location": "L21", + "_origin": "ast", + "id": "concepts_design_data_lifecycle_\uacc4\ud68d\ub178\uc120_\uaddc\uce59", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u1100\u1168\u1112\u116c\u11a8\u1102\u1169\u1109\u1165\u11ab \u1100\u1172\u110e\u1175\u11a8" + }, + { + "label": "\uacc4\uc0b0 \uad6c\ud604 \uc6d0\uce59", + "file_type": "document", + "source_file": "concepts/design_data_lifecycle.md", + "source_location": "L28", + "_origin": "ast", + "id": "concepts_design_data_lifecycle_\uacc4\uc0b0_\uad6c\ud604_\uc6d0\uce59", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u1100\u1168\u1109\u1161\u11ab \u1100\u116e\u1112\u1167\u11ab \u110b\u116f\u11ab\u110e\u1175\u11a8" + }, + { + "label": "drainage_watershed.md", + "file_type": "document", + "source_file": "concepts/drainage_watershed.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_drainage_watershed", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "drainage_watershed.md" + }, + { + "label": "\ubc30\uc218\uc720\uc5ed \ud574\uc11d \ubc0f \uc138\ubd80\uc124\uacc4 (Drainage Watershed)", + "file_type": "document", + "source_file": "concepts/drainage_watershed.md", + "source_location": "L7", + "_origin": "ast", + "id": "concepts_drainage_watershed_\ubc30\uc218\uc720\uc5ed_\ud574\uc11d_\ubc0f_\uc138\ubd80\uc124\uacc4_drainage_watershed", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "\u1107\u1162\u1109\u116e\u110b\u1172\u110b\u1167\u11a8 \u1112\u1162\u1109\u1165\u11a8 \u1106\u1175\u11be \u1109\u1166\u1107\u116e\u1109\u1165\u11af\u1100\u1168 (drainage watershed)" + }, + { + "label": "1. B04 vs B05 \uc5ed\ud560 \ubd84\ub2f4 \ubc0f \uc77c\uc6d0\ud654", + "file_type": "document", + "source_file": "concepts/drainage_watershed.md", + "source_location": "L13", + "_origin": "ast", + "id": "concepts_drainage_watershed_1_b04_vs_b05_\uc5ed\ud560_\ubd84\ub2f4_\ubc0f_\uc77c\uc6d0\ud654", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "1. b04 vs b05 \u110b\u1167\u11a8\u1112\u1161\u11af \u1107\u116e\u11ab\u1103\u1161\u11b7 \u1106\u1175\u11be \u110b\u1175\u11af\u110b\u116f\u11ab\u1112\u116a" + }, + { + "label": "2. \uacf5\uc6a9 \ubc30\uc218 \uc5d4\uc9c4 \ubc0f WAMIS \uac15\uc6b0\ub7c9 \uc5f0\ub3d9 (Phase 1~2, 2026-08-13 \uad00\uce21\uc18c \uc804\ud658)", + "file_type": "document", + "source_file": "concepts/drainage_watershed.md", + "source_location": "L22", + "_origin": "ast", + "id": "concepts_drainage_watershed_2_\uacf5\uc6a9_\ubc30\uc218_\uc5d4\uc9c4_\ubc0f_wamis_\uac15\uc6b0\ub7c9_\uc5f0\ub3d9_phase_1_2_2026_08_13_\uad00\uce21\uc18c_\uc804\ud658", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "2. \u1100\u1169\u11bc\u110b\u116d\u11bc \u1107\u1162\u1109\u116e \u110b\u1166\u11ab\u110c\u1175\u11ab \u1106\u1175\u11be wamis \u1100\u1161\u11bc\u110b\u116e\u1105\u1163\u11bc \u110b\u1167\u11ab\u1103\u1169\u11bc (phase 1~2, 2026-08-13 \u1100\u116a\u11ab\u110e\u1173\u11a8\u1109\u1169 \u110c\u1165\u11ab\u1112\u116a\u11ab)" + }, + { + "label": "3. \uad6c\uc870\ubb3c 3\ub2e8 \uc635\uc158 \uccb4\uacc4 & UI (Phase 3~5)", + "file_type": "document", + "source_file": "concepts/drainage_watershed.md", + "source_location": "L30", + "_origin": "ast", + "id": "concepts_drainage_watershed_3_\uad6c\uc870\ubb3c_3\ub2e8_\uc635\uc158_\uccb4\uacc4_ui_phase_3_5", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "3. \u1100\u116e\u110c\u1169\u1106\u116e\u11af 3\u1103\u1161\u11ab \u110b\u1169\u11b8\u1109\u1167\u11ab \u110e\u1166\u1100\u1168 & ui (phase 3~5)" + }, + { + "label": "4. \ud574\uc11d \uc54c\uace0\ub9ac\uc998 \u2014 \ub4f1\uace0\uc120 \ud558\uac15 (Contour Descent)", + "file_type": "document", + "source_file": "concepts/drainage_watershed.md", + "source_location": "L36", + "_origin": "ast", + "id": "concepts_drainage_watershed_4_\ud574\uc11d_\uc54c\uace0\ub9ac\uc998_\ub4f1\uace0\uc120_\ud558\uac15_contour_descent", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "4. \u1112\u1162\u1109\u1165\u11a8 \u110b\u1161\u11af\u1100\u1169\u1105\u1175\u110c\u1173\u11b7 \u2014 \u1103\u1173\u11bc\u1100\u1169\u1109\u1165\u11ab \u1112\u1161\u1100\u1161\u11bc (contour descent)" + }, + { + "label": "5. \uc801\uc0c9/\uccad\uc0c9 \ud310\uc815 \ubc0f \uc720\uc5ed \ud655\uc7a5", + "file_type": "document", + "source_file": "concepts/drainage_watershed.md", + "source_location": "L47", + "_origin": "ast", + "id": "concepts_drainage_watershed_5_\uc801\uc0c9_\uccad\uc0c9_\ud310\uc815_\ubc0f_\uc720\uc5ed_\ud655\uc7a5", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "5. \u110c\u1165\u11a8\u1109\u1162\u11a8/\u110e\u1165\u11bc\u1109\u1162\u11a8 \u1111\u1161\u11ab\u110c\u1165\u11bc \u1106\u1175\u11be \u110b\u1172\u110b\u1167\u11a8 \u1112\u116a\u11a8\u110c\u1161\u11bc" + }, + { + "label": "6. \ud3c9\uade0 \ud750\ub984 \ud654\uc0b4\ud45c (Flow Arrows) \ubc0f \ud750\ub984\uac15\ub3c4 \ub7a8\ud504", + "file_type": "document", + "source_file": "concepts/drainage_watershed.md", + "source_location": "L56", + "_origin": "ast", + "id": "concepts_drainage_watershed_6_\ud3c9\uade0_\ud750\ub984_\ud654\uc0b4\ud45c_flow_arrows_\ubc0f_\ud750\ub984\uac15\ub3c4_\ub7a8\ud504", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "6. \u1111\u1167\u11bc\u1100\u1172\u11ab \u1112\u1173\u1105\u1173\u11b7 \u1112\u116a\u1109\u1161\u11af\u1111\u116d (flow arrows) \u1106\u1175\u11be \u1112\u1173\u1105\u1173\u11b7\u1100\u1161\u11bc\u1103\u1169 \u1105\u1162\u11b7\u1111\u1173" + }, + { + "label": "7. \uc601\uad6c\uc800\uc7a5\uc18c \uc0b0\ucd9c\ubb3c \uad6c\uc870", + "file_type": "document", + "source_file": "concepts/drainage_watershed.md", + "source_location": "L60", + "_origin": "ast", + "id": "concepts_drainage_watershed_7_\uc601\uad6c\uc800\uc7a5\uc18c_\uc0b0\ucd9c\ubb3c_\uad6c\uc870", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "7. \u110b\u1167\u11bc\u1100\u116e\u110c\u1165\u110c\u1161\u11bc\u1109\u1169 \u1109\u1161\u11ab\u110e\u116e\u11af\u1106\u116e\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "8. B08 \uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "file_type": "document", + "source_file": "concepts/drainage_watershed.md", + "source_location": "L75", + "_origin": "ast", + "id": "concepts_drainage_watershed_8_b08_\uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "8. b08 \u1109\u116e\u1105\u1175\u110c\u1175\u11b8\u1109\u116e\u1106\u1167\u11ab\u110c\u1165\u11a8\u110b\u1172\u110b\u1167\u11a8\u1103\u1169" + }, + { + "label": "las_free_sheet_surface.md", + "file_type": "document", + "source_file": "concepts/las_free_sheet_surface.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_las_free_sheet_surface", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "las_free_sheet_surface.md" + }, + { + "label": "LAS \uc5c6\ub294 \ub3c4\uc5fd\ub4f1\uace0\uc120 \uc11c\ud53c\uc2a4", + "file_type": "document", + "source_file": "concepts/las_free_sheet_surface.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_las_free_sheet_surface_las_\uc5c6\ub294_\ub3c4\uc5fd\ub4f1\uace0\uc120_\uc11c\ud53c\uc2a4", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "las \u110b\u1165\u11b9\u1102\u1173\u11ab \u1103\u1169\u110b\u1167\u11b8\u1103\u1173\u11bc\u1100\u1169\u1109\u1165\u11ab \u1109\u1165\u1111\u1175\u1109\u1173" + }, + { + "label": "\uacc4\uc57d\uacfc \ud655\uc815\uac12", + "file_type": "document", + "source_file": "concepts/las_free_sheet_surface.md", + "source_location": "L11", + "_origin": "ast", + "id": "concepts_las_free_sheet_surface_\uacc4\uc57d\uacfc_\ud655\uc815\uac12", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "\u1100\u1168\u110b\u1163\u11a8\u1100\u116a \u1112\u116a\u11a8\u110c\u1165\u11bc\u1100\u1161\u11b9" + }, + { + "label": "\ud750\ub984", + "file_type": "document", + "source_file": "concepts/las_free_sheet_surface.md", + "source_location": "L22", + "_origin": "ast", + "id": "concepts_las_free_sheet_surface_\ud750\ub984", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "\u1112\u1173\u1105\u1173\u11b7" + }, + { + "label": "E2E \uacb0\uacfc", + "file_type": "document", + "source_file": "concepts/las_free_sheet_surface.md", + "source_location": "L33", + "_origin": "ast", + "id": "concepts_las_free_sheet_surface_e2e_\uacb0\uacfc", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "e2e \u1100\u1167\u11af\u1100\u116a" + }, + { + "label": "\ubbf8\uacb0", + "file_type": "document", + "source_file": "concepts/las_free_sheet_surface.md", + "source_location": "L40", + "_origin": "ast", + "id": "concepts_las_free_sheet_surface_\ubbf8\uacb0", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "\u1106\u1175\u1100\u1167\u11af" + }, + { + "label": "law_source_quality.md", + "file_type": "document", + "source_file": "concepts/law_source_quality.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_law_source_quality", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "law_source_quality.md" + }, + { + "label": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "file_type": "document", + "source_file": "concepts/law_source_quality.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_law_source_quality_\uc784\ub3c4\uae30\uc220\uad50\ubcf8_\uc6d0\ubb38_md_\ucd94\ucd9c_\ud488\uc9c8_\uacb0\ud568", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u110b\u1175\u11b7\u1103\u1169\u1100\u1175\u1109\u116e\u11af\u1100\u116d\u1107\u1169\u11ab \u110b\u116f\u11ab\u1106\u116e\u11ab md \u110e\u116e\u110e\u116e\u11af \u1111\u116e\u11b7\u110c\u1175\u11af \u1100\u1167\u11af\u1112\u1161\u11b7" + }, + { + "label": "\ud655\uc778 \ubc94\uc704", + "file_type": "document", + "source_file": "concepts/law_source_quality.md", + "source_location": "L13", + "_origin": "ast", + "id": "concepts_law_source_quality_\ud655\uc778_\ubc94\uc704", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u1112\u116a\u11a8\u110b\u1175\u11ab \u1107\u1165\u11b7\u110b\u1171" + }, + { + "label": "\uacb0\ud568 \uc720\ud615 (\uc608\uc2dc = \uc704 \ud30c\uc77c \uae30\uc900 \uc904\ubc88\ud638)", + "file_type": "document", + "source_file": "concepts/law_source_quality.md", + "source_location": "L16", + "_origin": "ast", + "id": "concepts_law_source_quality_\uacb0\ud568_\uc720\ud615_\uc608\uc2dc_\uc704_\ud30c\uc77c_\uae30\uc900_\uc904\ubc88\ud638", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u1100\u1167\u11af\u1112\u1161\u11b7 \u110b\u1172\u1112\u1167\u11bc (\u110b\u1168\u1109\u1175 = \u110b\u1171 \u1111\u1161\u110b\u1175\u11af \u1100\u1175\u110c\u116e\u11ab \u110c\u116e\u11af\u1107\u1165\u11ab\u1112\u1169)" + }, + { + "label": "\uc6d0\uc778 \ucd94\uc815", + "file_type": "document", + "source_file": "concepts/law_source_quality.md", + "source_location": "L34", + "_origin": "ast", + "id": "concepts_law_source_quality_\uc6d0\uc778_\ucd94\uc815", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u110b\u116f\u11ab\u110b\u1175\u11ab \u110e\u116e\u110c\u1165\u11bc" + }, + { + "label": "\uc870\uce58 \uc0c1\ud0dc", + "file_type": "document", + "source_file": "concepts/law_source_quality.md", + "source_location": "L37", + "_origin": "ast", + "id": "concepts_law_source_quality_\uc870\uce58_\uc0c1\ud0dc", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u110c\u1169\u110e\u1175 \u1109\u1161\u11bc\u1110\u1162" + }, + { + "label": "mass_haul_diagram.md", + "file_type": "document", + "source_file": "concepts/mass_haul_diagram.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_mass_haul_diagram", + "community": 26, + "community_name": "\uc720\ud1a0\uace1\uc120 (Mass Haul Diagram) \uacc4\uc0b0 \uba85\uc138", + "norm_label": "mass_haul_diagram.md" + }, + { + "label": "\uc720\ud1a0\uace1\uc120 (Mass Haul Diagram) \uacc4\uc0b0 \uba85\uc138", + "file_type": "document", + "source_file": "concepts/mass_haul_diagram.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_mass_haul_diagram_\uc720\ud1a0\uace1\uc120_mass_haul_diagram_\uacc4\uc0b0_\uba85\uc138", + "community": 26, + "community_name": "\uc720\ud1a0\uace1\uc120 (Mass Haul Diagram) \uacc4\uc0b0 \uba85\uc138", + "norm_label": "\u110b\u1172\u1110\u1169\u1100\u1169\u11a8\u1109\u1165\u11ab (mass haul diagram) \u1100\u1168\u1109\u1161\u11ab \u1106\u1167\u11bc\u1109\u1166" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \ubd84\uc11d \ubaa9\uc801", + "file_type": "document", + "source_file": "concepts/mass_haul_diagram.md", + "source_location": "L11", + "_origin": "ast", + "id": "concepts_mass_haul_diagram_1_\uac1c\uc694_\ubc0f_\ubd84\uc11d_\ubaa9\uc801", + "community": 26, + "community_name": "\uc720\ud1a0\uace1\uc120 (Mass Haul Diagram) \uacc4\uc0b0 \uba85\uc138", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u1107\u116e\u11ab\u1109\u1165\u11a8 \u1106\u1169\u11a8\u110c\u1165\u11a8" + }, + { + "label": "2. \uc8fc\uc694 \uacc4\uc0b0 \uc218\uc2dd \ubc0f \uc6d0\ub9ac (\uc2e4\ubb34 \uad00\ub840 \ubc18\uc601)", + "file_type": "document", + "source_file": "concepts/mass_haul_diagram.md", + "source_location": "L18", + "_origin": "ast", + "id": "concepts_mass_haul_diagram_2_\uc8fc\uc694_\uacc4\uc0b0_\uc218\uc2dd_\ubc0f_\uc6d0\ub9ac_\uc2e4\ubb34_\uad00\ub840_\ubc18\uc601", + "community": 26, + "community_name": "\uc720\ud1a0\uace1\uc120 (Mass Haul Diagram) \uacc4\uc0b0 \uba85\uc138", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1168\u1109\u1161\u11ab \u1109\u116e\u1109\u1175\u11a8 \u1106\u1175\u11be \u110b\u116f\u11ab\u1105\u1175 (\u1109\u1175\u11af\u1106\u116e \u1100\u116a\u11ab\u1105\u1168 \u1107\u1161\u11ab\u110b\u1167\u11bc)" + }, + { + "label": "3. \uc9c0\ubc18\uc720\ud615\ubcc4 \ud1a0\ub7c9\ud658\uc0b0\uacc4\uc218 \uae30\ubcf8\uac12 (`config_system.py`)", + "file_type": "document", + "source_file": "concepts/mass_haul_diagram.md", + "source_location": "L34", + "_origin": "ast", + "id": "concepts_mass_haul_diagram_3_\uc9c0\ubc18\uc720\ud615\ubcc4_\ud1a0\ub7c9\ud658\uc0b0\uacc4\uc218_\uae30\ubcf8\uac12_config_system_py", + "community": 26, + "community_name": "\uc720\ud1a0\uace1\uc120 (Mass Haul Diagram) \uacc4\uc0b0 \uba85\uc138", + "norm_label": "3. \u110c\u1175\u1107\u1161\u11ab\u110b\u1172\u1112\u1167\u11bc\u1107\u1167\u11af \u1110\u1169\u1105\u1163\u11bc\u1112\u116a\u11ab\u1109\u1161\u11ab\u1100\u1168\u1109\u116e \u1100\u1175\u1107\u1169\u11ab\u1100\u1161\u11b9 (`config_system.py`)" + }, + { + "label": "4. \ud1a0\uacf5 \uc6b4\ubc18\uc7a5\ube44 \uc120\uc815\uac70\ub9ac \ubc0f \ubd84\ubc30 \uae30\uc900 (`config_system.py`)", + "file_type": "document", + "source_file": "concepts/mass_haul_diagram.md", + "source_location": "L43", + "_origin": "ast", + "id": "concepts_mass_haul_diagram_4_\ud1a0\uacf5_\uc6b4\ubc18\uc7a5\ube44_\uc120\uc815\uac70\ub9ac_\ubc0f_\ubd84\ubc30_\uae30\uc900_config_system_py", + "community": 26, + "community_name": "\uc720\ud1a0\uace1\uc120 (Mass Haul Diagram) \uacc4\uc0b0 \uba85\uc138", + "norm_label": "4. \u1110\u1169\u1100\u1169\u11bc \u110b\u116e\u11ab\u1107\u1161\u11ab\u110c\u1161\u11bc\u1107\u1175 \u1109\u1165\u11ab\u110c\u1165\u11bc\u1100\u1165\u1105\u1175 \u1106\u1175\u11be \u1107\u116e\u11ab\u1107\u1162 \u1100\u1175\u110c\u116e\u11ab (`config_system.py`)" + }, + { + "label": "5. \uc720\ud1a0\uace1\uc120 \uace1\uc120 \uc0ac\uc591 (B06 \uad6c\ud604 v2)", + "file_type": "document", + "source_file": "concepts/mass_haul_diagram.md", + "source_location": "L50", + "_origin": "ast", + "id": "concepts_mass_haul_diagram_5_\uc720\ud1a0\uace1\uc120_\uace1\uc120_\uc0ac\uc591_b06_\uad6c\ud604_v2", + "community": 26, + "community_name": "\uc720\ud1a0\uace1\uc120 (Mass Haul Diagram) \uacc4\uc0b0 \uba85\uc138", + "norm_label": "5. \u110b\u1172\u1110\u1169\u1100\u1169\u11a8\u1109\u1165\u11ab \u1100\u1169\u11a8\u1109\u1165\u11ab \u1109\u1161\u110b\u1163\u11bc (b06 \u1100\u116e\u1112\u1167\u11ab v2)" + }, + { + "label": "6. \uc6f9\uc571 \uc5f0\ub3d9 \ubc0f \uc2dc\uac01\ud654 \uba85\uc138 (2026-08-02 \ud655\uc815)", + "file_type": "document", + "source_file": "concepts/mass_haul_diagram.md", + "source_location": "L58", + "_origin": "ast", + "id": "concepts_mass_haul_diagram_6_\uc6f9\uc571_\uc5f0\ub3d9_\ubc0f_\uc2dc\uac01\ud654_\uba85\uc138_2026_08_02_\ud655\uc815", + "community": 26, + "community_name": "\uc720\ud1a0\uace1\uc120 (Mass Haul Diagram) \uacc4\uc0b0 \uba85\uc138", + "norm_label": "6. \u110b\u1170\u11b8\u110b\u1162\u11b8 \u110b\u1167\u11ab\u1103\u1169\u11bc \u1106\u1175\u11be \u1109\u1175\u1100\u1161\u11a8\u1112\u116a \u1106\u1167\u11bc\u1109\u1166 (2026-08-02 \u1112\u116a\u11a8\u110c\u1165\u11bc)" + }, + { + "label": "multi_environment_safety.md", + "file_type": "document", + "source_file": "concepts/multi_environment_safety.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_multi_environment_safety", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "multi_environment_safety.md" + }, + { + "label": "\ub2e4\uc911 \ud658\uacbd \uc800\uc7a5\uc18c\u00b7\uacf5\uc6a9 DB \uc548\uc804", + "file_type": "document", + "source_file": "concepts/multi_environment_safety.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_multi_environment_safety_\ub2e4\uc911_\ud658\uacbd_\uc800\uc7a5\uc18c_\uacf5\uc6a9_db_\uc548\uc804", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u1103\u1161\u110c\u116e\u11bc \u1112\u116a\u11ab\u1100\u1167\u11bc \u110c\u1165\u110c\u1161\u11bc\u1109\u1169\u00b7\u1100\u1169\u11bc\u110b\u116d\u11bc db \u110b\u1161\u11ab\u110c\u1165\u11ab" + }, + { + "label": "\ud655\uc778\ub41c \uc704\ud5d8", + "file_type": "document", + "source_file": "concepts/multi_environment_safety.md", + "source_location": "L11", + "_origin": "ast", + "id": "concepts_multi_environment_safety_\ud655\uc778\ub41c_\uc704\ud5d8", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u1112\u116a\u11a8\u110b\u1175\u11ab\u1103\u116c\u11ab \u110b\u1171\u1112\u1165\u11b7" + }, + { + "label": "\uc6b4\uc601 \uaddc\uce59", + "file_type": "document", + "source_file": "concepts/multi_environment_safety.md", + "source_location": "L18", + "_origin": "ast", + "id": "concepts_multi_environment_safety_\uc6b4\uc601_\uaddc\uce59", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u110b\u116e\u11ab\u110b\u1167\u11bc \u1100\u1172\u110e\u1175\u11a8" + }, + { + "label": "\uc5ec\uc12f \uc6cc\ud06c\ud2b8\ub9ac \uc6b4\uc601 \ud655\uc815\ud310", + "file_type": "document", + "source_file": "concepts/multi_environment_safety.md", + "source_location": "L29", + "_origin": "ast", + "id": "concepts_multi_environment_safety_\uc5ec\uc12f_\uc6cc\ud06c\ud2b8\ub9ac_\uc6b4\uc601_\ud655\uc815\ud310", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u110b\u1167\u1109\u1165\u11ba \u110b\u116f\u110f\u1173\u1110\u1173\u1105\u1175 \u110b\u116e\u11ab\u110b\u1167\u11bc \u1112\u116a\u11a8\u110c\u1165\u11bc\u1111\u1161\u11ab" + }, + { + "label": "\uc644\ub8cc \ud310\uc815", + "file_type": "document", + "source_file": "concepts/multi_environment_safety.md", + "source_location": "L43", + "_origin": "ast", + "id": "concepts_multi_environment_safety_\uc644\ub8cc_\ud310\uc815", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u110b\u116a\u11ab\u1105\u116d \u1111\u1161\u11ab\u110c\u1165\u11bc" + }, + { + "label": "\uc7ac\uacc4\uc0b0 \uc601\ud5a5", + "file_type": "document", + "source_file": "concepts/multi_environment_safety.md", + "source_location": "L49", + "_origin": "ast", + "id": "concepts_multi_environment_safety_\uc7ac\uacc4\uc0b0_\uc601\ud5a5", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u110c\u1162\u1100\u1168\u1109\u1161\u11ab \u110b\u1167\u11bc\u1112\u1163\u11bc" + }, + { + "label": "quantity_cost_contract.md", + "file_type": "document", + "source_file": "concepts/quantity_cost_contract.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_quantity_cost_contract", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "quantity_cost_contract.md" + }, + { + "label": "B08 \uc218\ub7c9 \u2194 B09 \uc6d0\uac00 \uacc4\uc57d", + "file_type": "document", + "source_file": "concepts/quantity_cost_contract.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_quantity_cost_contract_b08_\uc218\ub7c9_b09_\uc6d0\uac00_\uacc4\uc57d", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "b08 \u1109\u116e\u1105\u1163\u11bc \u2194 b09 \u110b\u116f\u11ab\u1100\u1161 \u1100\u1168\u110b\u1163\u11a8" + }, + { + "label": "\ucc45\uc784 \uacbd\uacc4", + "file_type": "document", + "source_file": "concepts/quantity_cost_contract.md", + "source_location": "L11", + "_origin": "ast", + "id": "concepts_quantity_cost_contract_\ucc45\uc784_\uacbd\uacc4", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u110e\u1162\u11a8\u110b\u1175\u11b7 \u1100\u1167\u11bc\u1100\u1168" + }, + { + "label": "\uc800\uc7a5\u00b7\uc778\uacc4 \uaddc\uce59", + "file_type": "document", + "source_file": "concepts/quantity_cost_contract.md", + "source_location": "L21", + "_origin": "ast", + "id": "concepts_quantity_cost_contract_\uc800\uc7a5_\uc778\uacc4_\uaddc\uce59", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u110c\u1165\u110c\u1161\u11bc\u00b7\u110b\u1175\u11ab\u1100\u1168 \u1100\u1172\u110e\u1175\u11a8" + }, + { + "label": "\uae08\uc9c0 \uaddc\uce59", + "file_type": "document", + "source_file": "concepts/quantity_cost_contract.md", + "source_location": "L32", + "_origin": "ast", + "id": "concepts_quantity_cost_contract_\uae08\uc9c0_\uaddc\uce59", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u1100\u1173\u11b7\u110c\u1175 \u1100\u1172\u110e\u1175\u11a8" + }, + { + "label": "schema_common.md", + "file_type": "document", + "source_file": "concepts/schema_common.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_schema_common", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "schema_common.md" + }, + { + "label": "\uacf5\ud1b5 \uc2a4\ud0a4\ub9c8 (Pydantic \uc694\uccad/\uc751\ub2f5 \uaddc\uce59)", + "file_type": "document", + "source_file": "concepts/schema_common.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_schema_common_\uacf5\ud1b5_\uc2a4\ud0a4\ub9c8_pydantic_\uc694\uccad_\uc751\ub2f5_\uaddc\uce59", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u1100\u1169\u11bc\u1110\u1169\u11bc \u1109\u1173\u110f\u1175\u1106\u1161 (pydantic \u110b\u116d\u110e\u1165\u11bc/\u110b\u1173\u11bc\u1103\u1161\u11b8 \u1100\u1172\u110e\u1175\u11a8)" + }, + { + "label": "\uac80\uc99d \uc6d0\uce59 (backend.md 4\uc808)", + "file_type": "document", + "source_file": "concepts/schema_common.md", + "source_location": "L11", + "_origin": "ast", + "id": "concepts_schema_common_\uac80\uc99d_\uc6d0\uce59_backend_md_4\uc808", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc \u110b\u116f\u11ab\u110e\u1175\u11a8 (backend.md 4\u110c\u1165\u11af)" + }, + { + "label": "\uba85\uba85 \uaddc\uce59", + "file_type": "document", + "source_file": "concepts/schema_common.md", + "source_location": "L16", + "_origin": "ast", + "id": "concepts_schema_common_\uba85\uba85_\uaddc\uce59", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u1106\u1167\u11bc\u1106\u1167\u11bc \u1100\u1172\u110e\u1175\u11a8" + }, + { + "label": "standard_drawing_cost_inputs.md", + "file_type": "document", + "source_file": "concepts/standard_drawing_cost_inputs.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_standard_drawing_cost_inputs", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "standard_drawing_cost_inputs.md" + }, + { + "label": "\ud45c\uc900\ub3c4\u00b7\uc218\ub7c9\u00b7\uc6d0\uac00 \uc785\ub825\uc758 \ubbf8\uacb0 \uacbd\uacc4", + "file_type": "document", + "source_file": "concepts/standard_drawing_cost_inputs.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_standard_drawing_cost_inputs_\ud45c\uc900\ub3c4_\uc218\ub7c9_\uc6d0\uac00_\uc785\ub825\uc758_\ubbf8\uacb0_\uacbd\uacc4", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u1111\u116d\u110c\u116e\u11ab\u1103\u1169\u00b7\u1109\u116e\u1105\u1163\u11bc\u00b7\u110b\u116f\u11ab\u1100\u1161 \u110b\u1175\u11b8\u1105\u1167\u11a8\u110b\u1174 \u1106\u1175\u1100\u1167\u11af \u1100\u1167\u11bc\u1100\u1168" + }, + { + "label": "\ud655\uc778\ub41c \ubd84\ub958", + "file_type": "document", + "source_file": "concepts/standard_drawing_cost_inputs.md", + "source_location": "L11", + "_origin": "ast", + "id": "concepts_standard_drawing_cost_inputs_\ud655\uc778\ub41c_\ubd84\ub958", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u1112\u116a\u11a8\u110b\u1175\u11ab\u1103\u116c\u11ab \u1107\u116e\u11ab\u1105\u1172" + }, + { + "label": "\uc7ac\uc870\uc0ac\ub85c \ubc14\ub010 \ud310\uc815", + "file_type": "document", + "source_file": "concepts/standard_drawing_cost_inputs.md", + "source_location": "L20", + "_origin": "ast", + "id": "concepts_standard_drawing_cost_inputs_\uc7ac\uc870\uc0ac\ub85c_\ubc14\ub010_\ud310\uc815", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u110c\u1162\u110c\u1169\u1109\u1161\u1105\u1169 \u1107\u1161\u1101\u1171\u11ab \u1111\u1161\u11ab\u110c\u1165\u11bc" + }, + { + "label": "\uc0ac\uc6a9\uc790\u00b7\uc790\ub8cc \ub300\uae30", + "file_type": "document", + "source_file": "concepts/standard_drawing_cost_inputs.md", + "source_location": "L29", + "_origin": "ast", + "id": "concepts_standard_drawing_cost_inputs_\uc0ac\uc6a9\uc790_\uc790\ub8cc_\ub300\uae30", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u1109\u1161\u110b\u116d\u11bc\u110c\u1161\u00b7\u110c\u1161\u1105\u116d \u1103\u1162\u1100\u1175" + }, + { + "label": "standard_quantity_open_2026-09-09.md", + "file_type": "document", + "source_file": "concepts/standard_quantity_open_2026-09-09.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_standard_quantity_open_2026_09_09", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "standard_quantity_open_2026-09-09.md" + }, + { + "label": "2026-09-09 \ud45c\uc900\ub3c4\u00b7\uc218\ub7c9 \ubbf8\uacb0 \uadfc\uac70", + "file_type": "document", + "source_file": "concepts/standard_quantity_open_2026-09-09.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_standard_quantity_open_2026_09_09_2026_09_09_\ud45c\uc900\ub3c4_\uc218\ub7c9_\ubbf8\uacb0_\uadfc\uac70", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "2026-09-09 \u1111\u116d\u110c\u116e\u11ab\u1103\u1169\u00b7\u1109\u116e\u1105\u1163\u11bc \u1106\u1175\u1100\u1167\u11af \u1100\u1173\u11ab\u1100\u1165" + }, + { + "label": "\uc801\uc6a9 \uc6d0\uce59", + "file_type": "document", + "source_file": "concepts/standard_quantity_open_2026-09-09.md", + "source_location": "L11", + "_origin": "ast", + "id": "concepts_standard_quantity_open_2026_09_09_\uc801\uc6a9_\uc6d0\uce59", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u110c\u1165\u11a8\u110b\u116d\u11bc \u110b\u116f\u11ab\u110e\u1175\u11a8" + }, + { + "label": "\uc8fc\uc694 \ubbf8\uacb0", + "file_type": "document", + "source_file": "concepts/standard_quantity_open_2026-09-09.md", + "source_location": "L17", + "_origin": "ast", + "id": "concepts_standard_quantity_open_2026_09_09_\uc8fc\uc694_\ubbf8\uacb0", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u110c\u116e\u110b\u116d \u1106\u1175\u1100\u1167\u11af" + }, + { + "label": "\uc5f0\uacb0", + "file_type": "document", + "source_file": "concepts/standard_quantity_open_2026-09-09.md", + "source_location": "L29", + "_origin": "ast", + "id": "concepts_standard_quantity_open_2026_09_09_\uc5f0\uacb0", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u110b\u1167\u11ab\u1100\u1167\u11af" + }, + { + "label": "storage_paths.md", + "file_type": "document", + "source_file": "concepts/storage_paths.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_storage_paths", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "storage_paths.md" + }, + { + "label": "\uc800\uc7a5 \uacbd\ub85c \uaddc\uce59 (Workflow-based Folder Structure)", + "file_type": "document", + "source_file": "concepts/storage_paths.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_storage_paths_\uc800\uc7a5_\uacbd\ub85c_\uaddc\uce59_workflow_based_folder_structure", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u110c\u1165\u110c\u1161\u11bc \u1100\u1167\u11bc\u1105\u1169 \u1100\u1172\u110e\u1175\u11a8 (workflow-based folder structure)" + }, + { + "label": "\uacbd\ub85c \ud328\ud134", + "file_type": "document", + "source_file": "concepts/storage_paths.md", + "source_location": "L11", + "_origin": "ast", + "id": "concepts_storage_paths_\uacbd\ub85c_\ud328\ud134", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u1100\u1167\u11bc\u1105\u1169 \u1111\u1162\u1110\u1165\u11ab" + }, + { + "label": "\uc6d0\uce59 (backend.md 3\uc808)", + "file_type": "document", + "source_file": "concepts/storage_paths.md", + "source_location": "L29", + "_origin": "ast", + "id": "concepts_storage_paths_\uc6d0\uce59_backend_md_3\uc808", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u110b\u116f\u11ab\u110e\u1175\u11a8 (backend.md 3\u110c\u1165\u11af)" + }, + { + "label": "DB \uceec\ub7fc \u2194 \uc2e4\uc81c \uacbd\ub85c \ub9e4\ud551", + "file_type": "document", + "source_file": "concepts/storage_paths.md", + "source_location": "L36", + "_origin": "ast", + "id": "concepts_storage_paths_db_\uceec\ub7fc_\uc2e4\uc81c_\uacbd\ub85c_\ub9e4\ud551", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "db \u110f\u1165\u11af\u1105\u1165\u11b7 \u2194 \u1109\u1175\u11af\u110c\u1166 \u1100\u1167\u11bc\u1105\u1169 \u1106\u1162\u1111\u1175\u11bc" + }, + { + "label": "\ud30c\uc77c\uba85 \uaddc\uce59 (structure.md 1\uc808)", + "file_type": "document", + "source_file": "concepts/storage_paths.md", + "source_location": "L39", + "_origin": "ast", + "id": "concepts_storage_paths_\ud30c\uc77c\uba85_\uaddc\uce59_structure_md_1\uc808", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u1111\u1161\u110b\u1175\u11af\u1106\u1167\u11bc \u1100\u1172\u110e\u1175\u11a8 (structure.md 1\u110c\u1165\u11af)" + }, + { + "label": "\ucf54\ub4dc \uac10\uc0ac \uc8fc\uc758\uc0ac\ud56d", + "file_type": "document", + "source_file": "concepts/storage_paths.md", + "source_location": "L44", + "_origin": "ast", + "id": "concepts_storage_paths_\ucf54\ub4dc_\uac10\uc0ac_\uc8fc\uc758\uc0ac\ud56d", + "community": 1, + "community_name": "\uc778\uc99d / RBAC", + "norm_label": "\u110f\u1169\u1103\u1173 \u1100\u1161\u11b7\u1109\u1161 \u110c\u116e\u110b\u1174\u1109\u1161\u1112\u1161\u11bc" + }, + { + "label": "temp_upload.md", + "file_type": "document", + "source_file": "concepts/temp_upload.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_temp_upload", + "community": 59, + "community_name": "Temp Upload (\ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131 \uc804 \uc784\uc2dc \ubcf4\uad00\ud568)", + "norm_label": "temp_upload.md" + }, + { + "label": "Temp Upload (\ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131 \uc804 \uc784\uc2dc \ubcf4\uad00\ud568)", + "file_type": "document", + "source_file": "concepts/temp_upload.md", + "source_location": "L10", + "_origin": "ast", + "id": "concepts_temp_upload_temp_upload_\ud504\ub85c\uc81d\ud2b8_\uc0dd\uc131_\uc804_\uc784\uc2dc_\ubcf4\uad00\ud568", + "community": 59, + "community_name": "Temp Upload (\ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131 \uc804 \uc784\uc2dc \ubcf4\uad00\ud568)", + "norm_label": "temp upload (\u1111\u1173\u1105\u1169\u110c\u1166\u11a8\u1110\u1173 \u1109\u1162\u11bc\u1109\u1165\u11bc \u110c\u1165\u11ab \u110b\u1175\u11b7\u1109\u1175 \u1107\u1169\u1100\u116a\u11ab\u1112\u1161\u11b7)" + }, + { + "label": "\uc8fc\uc694 \uac1c\ub150 \ubc0f \uc2a4\ud399", + "file_type": "document", + "source_file": "concepts/temp_upload.md", + "source_location": "L14", + "_origin": "ast", + "id": "concepts_temp_upload_\uc8fc\uc694_\uac1c\ub150_\ubc0f_\uc2a4\ud399", + "community": 59, + "community_name": "Temp Upload (\ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131 \uc804 \uc784\uc2dc \ubcf4\uad00\ud568)", + "norm_label": "\u110c\u116e\u110b\u116d \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u1109\u1173\u1111\u1166\u11a8" + }, + { + "label": "\uc8fc\uc694 \uad6c\uc131 \uc694\uc18c", + "file_type": "document", + "source_file": "concepts/temp_upload.md", + "source_location": "L19", + "_origin": "ast", + "id": "concepts_temp_upload_\uc8fc\uc694_\uad6c\uc131_\uc694\uc18c", + "community": 59, + "community_name": "Temp Upload (\ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131 \uc804 \uc784\uc2dc \ubcf4\uad00\ud568)", + "norm_label": "\u110c\u116e\u110b\u116d \u1100\u116e\u1109\u1165\u11bc \u110b\u116d\u1109\u1169" + }, + { + "label": "\uc0ac\uc6a9\ucc98", + "file_type": "document", + "source_file": "concepts/temp_upload.md", + "source_location": "L30", + "_origin": "ast", + "id": "concepts_temp_upload_\uc0ac\uc6a9\ucc98", + "community": 59, + "community_name": "Temp Upload (\ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131 \uc804 \uc784\uc2dc \ubcf4\uad00\ud568)", + "norm_label": "\u1109\u1161\u110b\u116d\u11bc\u110e\u1165" + }, + { + "label": "ui_templates.md", + "file_type": "document", + "source_file": "concepts/ui_templates.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_ui_templates", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "ui_templates.md" + }, + { + "label": "UI Templates \u2014 Localization & Components", + "file_type": "document", + "source_file": "concepts/ui_templates.md", + "source_location": "L8", + "_origin": "ast", + "id": "concepts_ui_templates_ui_templates_localization_components", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "ui templates \u2014 localization & components" + }, + { + "label": "ui_template_locale.ts (\ub2e4\uad6d\uc5b4 \uad00\ub9ac)", + "file_type": "document", + "source_file": "concepts/ui_templates.md", + "source_location": "L12", + "_origin": "ast", + "id": "concepts_ui_templates_ui_template_locale_ts_\ub2e4\uad6d\uc5b4_\uad00\ub9ac", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "ui_template_locale.ts (\u1103\u1161\u1100\u116e\u11a8\u110b\u1165 \u1100\u116a\u11ab\u1105\u1175)" + }, + { + "label": "ui_template_resizer.ts (\ud328\ub110 \ub9ac\uc0ac\uc774\uc800 \ud15c\ud50c\ub9bf)", + "file_type": "document", + "source_file": "concepts/ui_templates.md", + "source_location": "L24", + "_origin": "ast", + "id": "concepts_ui_templates_ui_template_resizer_ts_\ud328\ub110_\ub9ac\uc0ac\uc774\uc800_\ud15c\ud50c\ub9bf", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "ui_template_resizer.ts (\u1111\u1162\u1102\u1165\u11af \u1105\u1175\u1109\u1161\u110b\u1175\u110c\u1165 \u1110\u1166\u11b7\u1111\u1173\u11af\u1105\u1175\u11ba)" + }, + { + "label": "ui_template_palette.ts (\uc9c0\ub3c4 \ud314\ub808\ud2b8 \uce90\uc2f1 \uc720\ud2f8)", + "file_type": "document", + "source_file": "concepts/ui_templates.md", + "source_location": "L31", + "_origin": "ast", + "id": "concepts_ui_templates_ui_template_palette_ts_\uc9c0\ub3c4_\ud314\ub808\ud2b8_\uce90\uc2f1_\uc720\ud2f8", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "ui_template_palette.ts (\u110c\u1175\u1103\u1169 \u1111\u1161\u11af\u1105\u1166\u1110\u1173 \u110f\u1162\u1109\u1175\u11bc \u110b\u1172\u1110\u1175\u11af)" + }, + { + "label": "ui_template_general_blocks.ts (\uc77c\ubc18\uc5c5\ubb34 \uacf5\uc6a9 \ube14\ub85d)", + "file_type": "document", + "source_file": "concepts/ui_templates.md", + "source_location": "L38", + "_origin": "ast", + "id": "concepts_ui_templates_ui_template_general_blocks_ts_\uc77c\ubc18\uc5c5\ubb34_\uacf5\uc6a9_\ube14\ub85d", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "ui_template_general_blocks.ts (\u110b\u1175\u11af\u1107\u1161\u11ab\u110b\u1165\u11b8\u1106\u116e \u1100\u1169\u11bc\u110b\u116d\u11bc \u1107\u1173\u11af\u1105\u1169\u11a8)" + }, + { + "label": "ui_template_general_layout.ts (\uc77c\ubc18\uc5c5\ubb34 \ub808\uc774\uc544\uc6c3)", + "file_type": "document", + "source_file": "concepts/ui_templates.md", + "source_location": "L48", + "_origin": "ast", + "id": "concepts_ui_templates_ui_template_general_layout_ts_\uc77c\ubc18\uc5c5\ubb34_\ub808\uc774\uc544\uc6c3", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "ui_template_general_layout.ts (\u110b\u1175\u11af\u1107\u1161\u11ab\u110b\u1165\u11b8\u1106\u116e \u1105\u1166\u110b\u1175\u110b\u1161\u110b\u116e\u11ba)" + }, + { + "label": "ui_template_elements.ts (\uacf5\ud1b5 \uc5d8\ub9ac\uba3c\ud2b8 \ud15c\ud50c\ub9bf)", + "file_type": "document", + "source_file": "concepts/ui_templates.md", + "source_location": "L55", + "_origin": "ast", + "id": "concepts_ui_templates_ui_template_elements_ts_\uacf5\ud1b5_\uc5d8\ub9ac\uba3c\ud2b8_\ud15c\ud50c\ub9bf", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "ui_template_elements.ts (\u1100\u1169\u11bc\u1110\u1169\u11bc \u110b\u1166\u11af\u1105\u1175\u1106\u1165\u11ab\u1110\u1173 \u1110\u1166\u11b7\u1111\u1173\u11af\u1105\u1175\u11ba)" + }, + { + "label": "ui_template_overlay.ts (\uc624\ubc84\ub808\uc774 \ucef4\ud3ec\ub10c\ud2b8)", + "file_type": "document", + "source_file": "concepts/ui_templates.md", + "source_location": "L62", + "_origin": "ast", + "id": "concepts_ui_templates_ui_template_overlay_ts_\uc624\ubc84\ub808\uc774_\ucef4\ud3ec\ub10c\ud2b8", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "ui_template_overlay.ts (\u110b\u1169\u1107\u1165\u1105\u1166\u110b\u1175 \u110f\u1165\u11b7\u1111\u1169\u1102\u1165\u11ab\u1110\u1173)" + }, + { + "label": "ui_template_workflow_layout.ts (\uc5d4\uc9c0\ub2c8\uc5b4\ub9c1 \ub808\uc774\uc544\uc6c3)", + "file_type": "document", + "source_file": "concepts/ui_templates.md", + "source_location": "L72", + "_origin": "ast", + "id": "concepts_ui_templates_ui_template_workflow_layout_ts_\uc5d4\uc9c0\ub2c8\uc5b4\ub9c1_\ub808\uc774\uc544\uc6c3", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "ui_template_workflow_layout.ts (\u110b\u1166\u11ab\u110c\u1175\u1102\u1175\u110b\u1165\u1105\u1175\u11bc \u1105\u1166\u110b\u1175\u110b\u1161\u110b\u116e\u11ba)" + }, + { + "label": "theme.css (\uc2a4\ud0c0\uc77c \ubcc0\uc218)", + "file_type": "document", + "source_file": "concepts/ui_templates.md", + "source_location": "L79", + "_origin": "ast", + "id": "concepts_ui_templates_theme_css_\uc2a4\ud0c0\uc77c_\ubcc0\uc218", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "theme.css (\u1109\u1173\u1110\u1161\u110b\u1175\u11af \u1107\u1167\u11ab\u1109\u116e)" + }, + { + "label": "\uc81c\uc57d (backend.md \u00a71)", + "file_type": "document", + "source_file": "concepts/ui_templates.md", + "source_location": "L90", + "_origin": "ast", + "id": "concepts_ui_templates_\uc81c\uc57d_backend_md_1", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "\u110c\u1166\u110b\u1163\u11a8 (backend.md \u00a71)" + }, + { + "label": "\ub0a8\uc740 \ud30c\uc77c \ud55c\uacc4", + "file_type": "document", + "source_file": "concepts/ui_templates.md", + "source_location": "L95", + "_origin": "ast", + "id": "concepts_ui_templates_\ub0a8\uc740_\ud30c\uc77c_\ud55c\uacc4", + "community": 0, + "community_name": "UI Templates \u2014 Localization & Components", + "norm_label": "\u1102\u1161\u11b7\u110b\u1173\u11ab \u1111\u1161\u110b\u1175\u11af \u1112\u1161\u11ab\u1100\u1168" + }, + { + "label": "workflow_state.md", + "file_type": "document", + "source_file": "concepts/workflow_state.md", + "source_location": "L1", + "_origin": "ast", + "id": "concepts_workflow_state", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "workflow_state.md" + }, + { + "label": "Workflow \uc0c1\ud0dc \uad00\ub9ac", + "file_type": "document", + "source_file": "concepts/workflow_state.md", + "source_location": "L9", + "_origin": "ast", + "id": "concepts_workflow_state_workflow_\uc0c1\ud0dc_\uad00\ub9ac", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "workflow \u1109\u1161\u11bc\u1110\u1162 \u1100\u116a\u11ab\u1105\u1175" + }, + { + "label": "SSOT: `project_workflow_stages` \ud14c\uc774\ube14 (\uc2e4 DB \ud655\uc778)", + "file_type": "document", + "source_file": "concepts/workflow_state.md", + "source_location": "L13", + "_origin": "ast", + "id": "concepts_workflow_state_ssot_project_workflow_stages_\ud14c\uc774\ube14_\uc2e4_db_\ud655\uc778", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "ssot: `project_workflow_stages` \u1110\u1166\u110b\u1175\u1107\u1173\u11af (\u1109\u1175\u11af db \u1112\u116a\u11a8\u110b\u1175\u11ab)" + }, + { + "label": "R1 \uc6cc\ud06c\ud50c\ub85c\uc6b0 \ub2e8\uacc4 \uc7ac\ud3b8 (2026-08-08 \ubc18\uc601)", + "file_type": "document", + "source_file": "concepts/workflow_state.md", + "source_location": "L27", + "_origin": "ast", + "id": "concepts_workflow_state_r1_\uc6cc\ud06c\ud50c\ub85c\uc6b0_\ub2e8\uacc4_\uc7ac\ud3b8_2026_08_08_\ubc18\uc601", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "r1 \u110b\u116f\u110f\u1173\u1111\u1173\u11af\u1105\u1169\u110b\u116e \u1103\u1161\u11ab\u1100\u1168 \u110c\u1162\u1111\u1167\u11ab (2026-08-08 \u1107\u1161\u11ab\u110b\u1167\u11bc)" + }, + { + "label": "\ubc31\uadf8\ub77c\uc6b4\ub4dc \uc790\ub3d9 \uacc4\uc0b0 \uccb4\uc778 \ubc0f \uc0ac\uc6a9\uc790 \uc124\uc815 \uc774\uc6d4", + "file_type": "document", + "source_file": "concepts/workflow_state.md", + "source_location": "L35", + "_origin": "ast", + "id": "concepts_workflow_state_\ubc31\uadf8\ub77c\uc6b4\ub4dc_\uc790\ub3d9_\uacc4\uc0b0_\uccb4\uc778_\ubc0f_\uc0ac\uc6a9\uc790_\uc124\uc815_\uc774\uc6d4", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u1107\u1162\u11a8\u1100\u1173\u1105\u1161\u110b\u116e\u11ab\u1103\u1173 \u110c\u1161\u1103\u1169\u11bc \u1100\u1168\u1109\u1161\u11ab \u110e\u1166\u110b\u1175\u11ab \u1106\u1175\u11be \u1109\u1161\u110b\u116d\u11bc\u110c\u1161 \u1109\u1165\u11af\u110c\u1165\u11bc \u110b\u1175\u110b\u116f\u11af" + }, + { + "label": "\uacf5\ud1b5 \uc720\ud2f8 `common_util/common_util_workflow_state.py`", + "file_type": "document", + "source_file": "concepts/workflow_state.md", + "source_location": "L40", + "_origin": "ast", + "id": "concepts_workflow_state_\uacf5\ud1b5_\uc720\ud2f8_common_util_common_util_workflow_state_py", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u1100\u1169\u11bc\u1110\u1169\u11bc \u110b\u1172\u1110\u1175\u11af `common_util/common_util_workflow_state.py`" + }, + { + "label": "\ubb34\ud6a8\ud654\uc758 \uc2e4\uc81c \ubc94\uc704", + "file_type": "document", + "source_file": "concepts/workflow_state.md", + "source_location": "L51", + "_origin": "ast", + "id": "concepts_workflow_state_\ubb34\ud6a8\ud654\uc758_\uc2e4\uc81c_\ubc94\uc704", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u1106\u116e\u1112\u116d\u1112\u116a\u110b\u1174 \u1109\u1175\u11af\u110c\u1166 \u1107\u1165\u11b7\u110b\u1171" + }, + { + "label": "\uc870\ud68c API", + "file_type": "document", + "source_file": "concepts/workflow_state.md", + "source_location": "L60", + "_origin": "ast", + "id": "concepts_workflow_state_\uc870\ud68c_api", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u110c\u1169\u1112\u116c api" + }, + { + "label": "\ud504\ub860\ud2b8\uc5d4\ub4dc \uac8c\uc774\ud305 \ubc0f \uc2a4\ud15d\ubc14 \uc5f0\ub3d9", + "file_type": "document", + "source_file": "concepts/workflow_state.md", + "source_location": "L63", + "_origin": "ast", + "id": "concepts_workflow_state_\ud504\ub860\ud2b8\uc5d4\ub4dc_\uac8c\uc774\ud305_\ubc0f_\uc2a4\ud15d\ubc14_\uc5f0\ub3d9", + "community": 3, + "community_name": "2026-09-04 \uc644\ub8cc \ud56d\ubaa9", + "norm_label": "\u1111\u1173\u1105\u1169\u11ab\u1110\u1173\u110b\u1166\u11ab\u1103\u1173 \u1100\u1166\u110b\u1175\u1110\u1175\u11bc \u1106\u1175\u11be \u1109\u1173\u1110\u1166\u11b8\u1107\u1161 \u110b\u1167\u11ab\u1103\u1169\u11bc" + }, + { + "label": "query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918__\uc784\ub3c4\uc5d0\uc11c.md", + "file_type": "document", + "source_file": "graphify-out/memory/query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918__\uc784\ub3c4\uc5d0\uc11c.md", + "source_location": "L1", + "_origin": "ast", + "id": "graphify_out_memory_query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_\uc784\ub3c4\uc5d0\uc11c", + "community": 60, + "community_name": "Q: \ubc30\uc218\uad00 \ub9e4\uc124\uc2dc \uac01\ub3c4\uc758 \uc81c\uc57d\uc870\uac74\uc774 \uc788\ub294\uc9c0 \ud655\uc778\ud574\uc918. \uc784\ub3c4\uc5d0\uc11c", + "norm_label": "query_20260821_070423_\u1107\u1162\u1109\u116e\u1100\u116a\u11ab_\u1106\u1162\u1109\u1165\u11af\u1109\u1175_\u1100\u1161\u11a8\u1103\u1169\u110b\u1174_\u110c\u1166\u110b\u1163\u11a8\u110c\u1169\u1100\u1165\u11ab\u110b\u1175_\u110b\u1175\u11bb\u1102\u1173\u11ab\u110c\u1175_\u1112\u116a\u11a8\u110b\u1175\u11ab\u1112\u1162\u110c\u116f__\u110b\u1175\u11b7\u1103\u1169\u110b\u1166\u1109\u1165.md" + }, + { + "label": "Q: \ubc30\uc218\uad00 \ub9e4\uc124\uc2dc \uac01\ub3c4\uc758 \uc81c\uc57d\uc870\uac74\uc774 \uc788\ub294\uc9c0 \ud655\uc778\ud574\uc918. \uc784\ub3c4\uc5d0\uc11c", + "file_type": "document", + "source_file": "graphify-out/memory/query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918__\uc784\ub3c4\uc5d0\uc11c.md", + "source_location": "L10", + "_origin": "ast", + "id": "graphify_out_memory_query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_\uc784\ub3c4\uc5d0\uc11c_q_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_\uc784\ub3c4\uc5d0\uc11c", + "community": 60, + "community_name": "Q: \ubc30\uc218\uad00 \ub9e4\uc124\uc2dc \uac01\ub3c4\uc758 \uc81c\uc57d\uc870\uac74\uc774 \uc788\ub294\uc9c0 \ud655\uc778\ud574\uc918. \uc784\ub3c4\uc5d0\uc11c", + "norm_label": "q: \u1107\u1162\u1109\u116e\u1100\u116a\u11ab \u1106\u1162\u1109\u1165\u11af\u1109\u1175 \u1100\u1161\u11a8\u1103\u1169\u110b\u1174 \u110c\u1166\u110b\u1163\u11a8\u110c\u1169\u1100\u1165\u11ab\u110b\u1175 \u110b\u1175\u11bb\u1102\u1173\u11ab\u110c\u1175 \u1112\u116a\u11a8\u110b\u1175\u11ab\u1112\u1162\u110c\u116f. \u110b\u1175\u11b7\u1103\u1169\u110b\u1166\u1109\u1165" + }, + { + "label": "Answer", + "file_type": "document", + "source_file": "graphify-out/memory/query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918__\uc784\ub3c4\uc5d0\uc11c.md", + "source_location": "L12", + "_origin": "ast", + "id": "graphify_out_memory_query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_\uc784\ub3c4\uc5d0\uc11c_answer", + "community": 60, + "community_name": "Q: \ubc30\uc218\uad00 \ub9e4\uc124\uc2dc \uac01\ub3c4\uc758 \uc81c\uc57d\uc870\uac74\uc774 \uc788\ub294\uc9c0 \ud655\uc778\ud574\uc918. \uc784\ub3c4\uc5d0\uc11c", + "norm_label": "answer" + }, + { + "label": "Outcome", + "file_type": "document", + "source_file": "graphify-out/memory/query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918__\uc784\ub3c4\uc5d0\uc11c.md", + "source_location": "L16", + "_origin": "ast", + "id": "graphify_out_memory_query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_\uc784\ub3c4\uc5d0\uc11c_outcome", + "community": 60, + "community_name": "Q: \ubc30\uc218\uad00 \ub9e4\uc124\uc2dc \uac01\ub3c4\uc758 \uc81c\uc57d\uc870\uac74\uc774 \uc788\ub294\uc9c0 \ud655\uc778\ud574\uc918. \uc784\ub3c4\uc5d0\uc11c", + "norm_label": "outcome" + }, + { + "label": "Source Nodes", + "file_type": "document", + "source_file": "graphify-out/memory/query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918__\uc784\ub3c4\uc5d0\uc11c.md", + "source_location": "L20", + "_origin": "ast", + "id": "graphify_out_memory_query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_\uc784\ub3c4\uc5d0\uc11c_source_nodes", + "community": 60, + "community_name": "Q: \ubc30\uc218\uad00 \ub9e4\uc124\uc2dc \uac01\ub3c4\uc758 \uc81c\uc57d\uc870\uac74\uc774 \uc788\ub294\uc9c0 \ud655\uc778\ud574\uc918. \uc784\ub3c4\uc5d0\uc11c", + "norm_label": "source nodes" + }, + { + "label": "query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918.md", + "file_type": "document", + "source_file": "graphify-out/memory/query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918.md", + "source_location": "L1", + "_origin": "ast", + "id": "graphify_out_memory_query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918", + "community": 61, + "community_name": "Q: \uc784\ub3c4 \uae30\uc220\uc815\ubcf4DB\uc5d0\uc11c \uc9d1\uc218\uc815\uc758 \ud615\ud0dc\uc815\ubcf4\ub294 \uc5b4\ub5a4\uac8c \uc788\ub294\uc9c0 \ud655\uc778\ud574\uc918.", + "norm_label": "query_20260821_101018_\u110b\u1175\u11b7\u1103\u1169_\u1100\u1175\u1109\u116e\u11af\u110c\u1165\u11bc\u1107\u1169db\u110b\u1166\u1109\u1165_\u110c\u1175\u11b8\u1109\u116e\u110c\u1165\u11bc\u110b\u1174_\u1112\u1167\u11bc\u1110\u1162\u110c\u1165\u11bc\u1107\u1169\u1102\u1173\u11ab_\u110b\u1165\u1104\u1165\u11ab\u1100\u1166_\u110b\u1175\u11bb\u1102\u1173\u11ab\u110c\u1175_\u1112\u116a\u11a8\u110b\u1175\u11ab\u1112\u1162\u110c\u116f.md" + }, + { + "label": "Q: \uc784\ub3c4 \uae30\uc220\uc815\ubcf4DB\uc5d0\uc11c \uc9d1\uc218\uc815\uc758 \ud615\ud0dc\uc815\ubcf4\ub294 \uc5b4\ub5a4\uac8c \uc788\ub294\uc9c0 \ud655\uc778\ud574\uc918.", + "file_type": "document", + "source_file": "graphify-out/memory/query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918.md", + "source_location": "L10", + "_origin": "ast", + "id": "graphify_out_memory_query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_q_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918", + "community": 61, + "community_name": "Q: \uc784\ub3c4 \uae30\uc220\uc815\ubcf4DB\uc5d0\uc11c \uc9d1\uc218\uc815\uc758 \ud615\ud0dc\uc815\ubcf4\ub294 \uc5b4\ub5a4\uac8c \uc788\ub294\uc9c0 \ud655\uc778\ud574\uc918.", + "norm_label": "q: \u110b\u1175\u11b7\u1103\u1169 \u1100\u1175\u1109\u116e\u11af\u110c\u1165\u11bc\u1107\u1169db\u110b\u1166\u1109\u1165 \u110c\u1175\u11b8\u1109\u116e\u110c\u1165\u11bc\u110b\u1174 \u1112\u1167\u11bc\u1110\u1162\u110c\u1165\u11bc\u1107\u1169\u1102\u1173\u11ab \u110b\u1165\u1104\u1165\u11ab\u1100\u1166 \u110b\u1175\u11bb\u1102\u1173\u11ab\u110c\u1175 \u1112\u116a\u11a8\u110b\u1175\u11ab\u1112\u1162\u110c\u116f." + }, + { + "label": "Answer", + "file_type": "document", + "source_file": "graphify-out/memory/query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918.md", + "source_location": "L12", + "_origin": "ast", + "id": "graphify_out_memory_query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_answer", + "community": 61, + "community_name": "Q: \uc784\ub3c4 \uae30\uc220\uc815\ubcf4DB\uc5d0\uc11c \uc9d1\uc218\uc815\uc758 \ud615\ud0dc\uc815\ubcf4\ub294 \uc5b4\ub5a4\uac8c \uc788\ub294\uc9c0 \ud655\uc778\ud574\uc918.", + "norm_label": "answer" + }, + { + "label": "Outcome", + "file_type": "document", + "source_file": "graphify-out/memory/query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918.md", + "source_location": "L16", + "_origin": "ast", + "id": "graphify_out_memory_query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_outcome", + "community": 61, + "community_name": "Q: \uc784\ub3c4 \uae30\uc220\uc815\ubcf4DB\uc5d0\uc11c \uc9d1\uc218\uc815\uc758 \ud615\ud0dc\uc815\ubcf4\ub294 \uc5b4\ub5a4\uac8c \uc788\ub294\uc9c0 \ud655\uc778\ud574\uc918.", + "norm_label": "outcome" + }, + { + "label": "Source Nodes", + "file_type": "document", + "source_file": "graphify-out/memory/query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918.md", + "source_location": "L20", + "_origin": "ast", + "id": "graphify_out_memory_query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_source_nodes", + "community": 61, + "community_name": "Q: \uc784\ub3c4 \uae30\uc220\uc815\ubcf4DB\uc5d0\uc11c \uc9d1\uc218\uc815\uc758 \ud615\ud0dc\uc815\ubcf4\ub294 \uc5b4\ub5a4\uac8c \uc788\ub294\uc9c0 \ud655\uc778\ud574\uc918.", + "norm_label": "source nodes" + }, + { + "label": "index.md", + "file_type": "document", + "source_file": "index.md", + "source_location": "L1", + "_origin": "ast", + "id": "index", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "index.md" + }, + { + "label": "Wiki Index", + "file_type": "document", + "source_file": "index.md", + "source_location": "L7", + "_origin": "ast", + "id": "index_wiki_index", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "wiki index" + }, + { + "label": "\uc6b0\uc120 \uc9c4\uc785\uc810", + "file_type": "document", + "source_file": "index.md", + "source_location": "L11", + "_origin": "ast", + "id": "index_\uc6b0\uc120_\uc9c4\uc785\uc810", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u110b\u116e\u1109\u1165\u11ab \u110c\u1175\u11ab\u110b\u1175\u11b8\u110c\u1165\u11b7" + }, + { + "label": "\ub85c\uadf8\uc778 \ud6c4 \uae30\ub2a5", + "file_type": "document", + "source_file": "index.md", + "source_location": "L20", + "_origin": "ast", + "id": "index_\ub85c\uadf8\uc778_\ud6c4_\uae30\ub2a5", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u1105\u1169\u1100\u1173\u110b\u1175\u11ab \u1112\u116e \u1100\u1175\u1102\u1173\u11bc" + }, + { + "label": "\ub85c\uadf8\uc778 \uc804\u00b7\uad00\ub9ac", + "file_type": "document", + "source_file": "index.md", + "source_location": "L43", + "_origin": "ast", + "id": "index_\ub85c\uadf8\uc778_\uc804_\uad00\ub9ac", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u1105\u1169\u1100\u1173\u110b\u1175\u11ab \u110c\u1165\u11ab\u00b7\u1100\u116a\u11ab\u1105\u1175" + }, + { + "label": "\uacf5\ud1b5 \uac1c\ub150", + "file_type": "document", + "source_file": "index.md", + "source_location": "L51", + "_origin": "ast", + "id": "index_\uacf5\ud1b5_\uac1c\ub150", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u1100\u1169\u11bc\u1110\u1169\u11bc \u1100\u1162\u1102\u1167\u11b7" + }, + { + "label": "\ud604\uc7ac \uc8fc\uc758\uc0ac\ud56d", + "file_type": "document", + "source_file": "index.md", + "source_location": "L75", + "_origin": "ast", + "id": "index_\ud604\uc7ac_\uc8fc\uc758\uc0ac\ud56d", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "\u1112\u1167\u11ab\u110c\u1162 \u110c\u116e\u110b\u1174\u1109\u1161\u1112\u1161\u11bc" + }, + { + "label": "A00_Common.md", + "file_type": "document", + "source_file": "pages/A00_Common/A00_Common.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a00_common_a00_common", + "community": 94, + "community_name": "A00_Common \u2014 \uacf5\ud1b5 \ud504\ub808\uc784\uc6cc\ud06c & \uc720\ud2f8", + "norm_label": "a00_common.md" + }, + { + "label": "A00_Common \u2014 \uacf5\ud1b5 \ud504\ub808\uc784\uc6cc\ud06c & \uc720\ud2f8", + "file_type": "document", + "source_file": "pages/A00_Common/A00_Common.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_a00_common_a00_common_a00_common_\uacf5\ud1b5_\ud504\ub808\uc784\uc6cc\ud06c_\uc720\ud2f8", + "community": 94, + "community_name": "A00_Common \u2014 \uacf5\ud1b5 \ud504\ub808\uc784\uc6cc\ud06c & \uc720\ud2f8", + "norm_label": "a00_common \u2014 \u1100\u1169\u11bc\u1110\u1169\u11bc \u1111\u1173\u1105\u1166\u110b\u1175\u11b7\u110b\u116f\u110f\u1173 & \u110b\u1172\u1110\u1175\u11af" + }, + { + "label": "\ud83d\udcc2 \uc138\ubd84\ud654 \ub9c8\ud06c\ub2e4\uc6b4 \ubb38\uc11c \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/A00_Common/A00_Common.md", + "source_location": "L13", + "_origin": "ast", + "id": "pages_a00_common_a00_common_\uc138\ubd84\ud654_\ub9c8\ud06c\ub2e4\uc6b4_\ubb38\uc11c_\ubaa9\ub85d", + "community": 94, + "community_name": "A00_Common \u2014 \uacf5\ud1b5 \ud504\ub808\uc784\uc6cc\ud06c & \uc720\ud2f8", + "norm_label": "\ud83d\udcc2 \u1109\u1166\u1107\u116e\u11ab\u1112\u116a \u1106\u1161\u110f\u1173\u1103\u1161\u110b\u116e\u11ab \u1106\u116e\u11ab\u1109\u1165 \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udccb \uac1c\uc694", + "file_type": "document", + "source_file": "pages/A00_Common/A00_Common.md", + "source_location": "L22", + "_origin": "ast", + "id": "pages_a00_common_a00_common_\uac1c\uc694", + "community": 94, + "community_name": "A00_Common \u2014 \uacf5\ud1b5 \ud504\ub808\uc784\uc6cc\ud06c & \uc720\ud2f8", + "norm_label": "\ud83d\udccb \u1100\u1162\u110b\u116d" + }, + { + "label": "A00_Common_AppShell.md", + "file_type": "document", + "source_file": "pages/A00_Common/frontend/A00_Common_AppShell.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a00_common_frontend_a00_common_appshell", + "community": 95, + "community_name": "app_shell.ts", + "norm_label": "a00_common_appshell.md" + }, + { + "label": "app_shell.ts", + "file_type": "document", + "source_file": "pages/A00_Common/frontend/A00_Common_AppShell.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_a00_common_frontend_a00_common_appshell_app_shell_ts", + "community": 95, + "community_name": "app_shell.ts", + "norm_label": "app_shell.ts" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/A00_Common/frontend/A00_Common_AppShell.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_a00_common_frontend_a00_common_appshell_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 95, + "community_name": "app_shell.ts", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/A00_Common/frontend/A00_Common_AppShell.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_a00_common_frontend_a00_common_appshell_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 95, + "community_name": "app_shell.ts", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "A00_Common_Router.md", + "file_type": "document", + "source_file": "pages/A00_Common/frontend/A00_Common_Router.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a00_common_frontend_a00_common_router", + "community": 96, + "community_name": "router.ts", + "norm_label": "a00_common_router.md" + }, + { + "label": "router.ts", + "file_type": "document", + "source_file": "pages/A00_Common/frontend/A00_Common_Router.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_a00_common_frontend_a00_common_router_router_ts", + "community": 96, + "community_name": "router.ts", + "norm_label": "router.ts" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/A00_Common/frontend/A00_Common_Router.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_a00_common_frontend_a00_common_router_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 96, + "community_name": "router.ts", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/A00_Common/frontend/A00_Common_Router.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_a00_common_frontend_a00_common_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 96, + "community_name": "router.ts", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "A01_components.md", + "file_type": "document", + "source_file": "pages/A01_Home/A01_components.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a01_home_a01_components", + "community": 47, + "community_name": "A01_Home \u2014 \uc138\ubd80 \uad6c\ud604", + "norm_label": "a01_components.md" + }, + { + "label": "A01_Home \u2014 \uc138\ubd80 \uad6c\ud604", + "file_type": "document", + "source_file": "pages/A01_Home/A01_components.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_a01_home_a01_components_a01_home_\uc138\ubd80_\uad6c\ud604", + "community": 47, + "community_name": "A01_Home \u2014 \uc138\ubd80 \uad6c\ud604", + "norm_label": "a01_home \u2014 \u1109\u1166\u1107\u116e \u1100\u116e\u1112\u1167\u11ab" + }, + { + "label": "\uc2a4\ud0c0\uc77c", + "file_type": "document", + "source_file": "pages/A01_Home/A01_components.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_a01_home_a01_components_\uc2a4\ud0c0\uc77c", + "community": 47, + "community_name": "A01_Home \u2014 \uc138\ubd80 \uad6c\ud604", + "norm_label": "\u1109\u1173\u1110\u1161\u110b\u1175\u11af" + }, + { + "label": "\uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/A01_Home/A01_components.md", + "source_location": "L20", + "_origin": "ast", + "id": "pages_a01_home_a01_components_\uc758\uc874\uc131", + "community": 47, + "community_name": "A01_Home \u2014 \uc138\ubd80 \uad6c\ud604", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "\ub370\uc774\ud130 \ud750\ub984", + "file_type": "document", + "source_file": "pages/A01_Home/A01_components.md", + "source_location": "L27", + "_origin": "ast", + "id": "pages_a01_home_a01_components_\ub370\uc774\ud130_\ud750\ub984", + "community": 47, + "community_name": "A01_Home \u2014 \uc138\ubd80 \uad6c\ud604", + "norm_label": "\u1103\u1166\u110b\u1175\u1110\u1165 \u1112\u1173\u1105\u1173\u11b7" + }, + { + "label": "\ubbf8\ud574\uacb0", + "file_type": "document", + "source_file": "pages/A01_Home/A01_components.md", + "source_location": "L34", + "_origin": "ast", + "id": "pages_a01_home_a01_components_\ubbf8\ud574\uacb0", + "community": 47, + "community_name": "A01_Home \u2014 \uc138\ubd80 \uad6c\ud604", + "norm_label": "\u1106\u1175\u1112\u1162\u1100\u1167\u11af" + }, + { + "label": "A01_frontend.md", + "file_type": "document", + "source_file": "pages/A01_Home/A01_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a01_home_a01_frontend", + "community": 14, + "community_name": "A01_Home \u2014 Frontend", + "norm_label": "a01_frontend.md" + }, + { + "label": "A01_Home \u2014 Frontend", + "file_type": "document", + "source_file": "pages/A01_Home/A01_frontend.md", + "source_location": "L8", + "_origin": "ast", + "id": "pages_a01_home_a01_frontend_a01_home_frontend", + "community": 14, + "community_name": "A01_Home \u2014 Frontend", + "norm_label": "a01_home \u2014 frontend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc870", + "file_type": "document", + "source_file": "pages/A01_Home/A01_frontend.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_a01_home_a01_frontend_\ud30c\uc77c_\uad6c\uc870", + "community": 14, + "community_name": "A01_Home \u2014 Frontend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "\ucef4\ud3ec\ub10c\ud2b8", + "file_type": "document", + "source_file": "pages/A01_Home/A01_frontend.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_a01_home_a01_frontend_\ucef4\ud3ec\ub10c\ud2b8", + "community": 14, + "community_name": "A01_Home \u2014 Frontend", + "norm_label": "\u110f\u1165\u11b7\u1111\u1169\u1102\u1165\u11ab\u1110\u1173" + }, + { + "label": "Hero \uc139\uc158", + "file_type": "document", + "source_file": "pages/A01_Home/A01_frontend.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_a01_home_a01_frontend_hero_\uc139\uc158", + "community": 14, + "community_name": "A01_Home \u2014 Frontend", + "norm_label": "hero \u1109\u1166\u11a8\u1109\u1167\u11ab" + }, + { + "label": "\ucd5c\uc2e0 \uc18c\uc2dd \uc139\uc158", + "file_type": "document", + "source_file": "pages/A01_Home/A01_frontend.md", + "source_location": "L28", + "_origin": "ast", + "id": "pages_a01_home_a01_frontend_\ucd5c\uc2e0_\uc18c\uc2dd_\uc139\uc158", + "community": 14, + "community_name": "A01_Home \u2014 Frontend", + "norm_label": "\u110e\u116c\u1109\u1175\u11ab \u1109\u1169\u1109\u1175\u11a8 \u1109\u1166\u11a8\u1109\u1167\u11ab" + }, + { + "label": "\uc8fc\uc694 \uae30\ub2a5 \uc139\uc158", + "file_type": "document", + "source_file": "pages/A01_Home/A01_frontend.md", + "source_location": "L33", + "_origin": "ast", + "id": "pages_a01_home_a01_frontend_\uc8fc\uc694_\uae30\ub2a5_\uc139\uc158", + "community": 14, + "community_name": "A01_Home \u2014 Frontend", + "norm_label": "\u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc \u1109\u1166\u11a8\u1109\u1167\u11ab" + }, + { + "label": "\uc774\ubca4\ud2b8 \ud578\ub4e4\ub7ec", + "file_type": "document", + "source_file": "pages/A01_Home/A01_frontend.md", + "source_location": "L38", + "_origin": "ast", + "id": "pages_a01_home_a01_frontend_\uc774\ubca4\ud2b8_\ud578\ub4e4\ub7ec", + "community": 14, + "community_name": "A01_Home \u2014 Frontend", + "norm_label": "\u110b\u1175\u1107\u1166\u11ab\u1110\u1173 \u1112\u1162\u11ab\u1103\u1173\u11af\u1105\u1165" + }, + { + "label": "\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "file_type": "document", + "source_file": "pages/A01_Home/A01_frontend.md", + "source_location": "L45", + "_origin": "ast", + "id": "pages_a01_home_a01_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "community": 14, + "community_name": "A01_Home \u2014 Frontend", + "norm_label": "\u1105\u1169\u110f\u1165\u11af\u1105\u1161\u110b\u1175\u110c\u1166\u110b\u1175\u1109\u1167\u11ab" + }, + { + "label": "\uc138\ubd80 \uad6c\ud604", + "file_type": "document", + "source_file": "pages/A01_Home/A01_frontend.md", + "source_location": "L60", + "_origin": "ast", + "id": "pages_a01_home_a01_frontend_\uc138\ubd80_\uad6c\ud604", + "community": 14, + "community_name": "A01_Home \u2014 Frontend", + "norm_label": "\u1109\u1166\u1107\u116e \u1100\u116e\u1112\u1167\u11ab" + }, + { + "label": "A01_Home_UI_Page.md", + "file_type": "document", + "source_file": "pages/A01_Home/frontend/A01_Home_UI_Page.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a01_home_frontend_a01_home_ui_page", + "community": 116, + "community_name": "A01_Home_UI_Page.md", + "norm_label": "a01_home_ui_page.md" + }, + { + "label": "A01_Home_UI_Page.ts", + "file_type": "document", + "source_file": "pages/A01_Home/frontend/A01_Home_UI_Page.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_a01_home_frontend_a01_home_ui_page_a01_home_ui_page_ts", + "community": 116, + "community_name": "A01_Home_UI_Page.md", + "norm_label": "a01_home_ui_page.ts" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubc0f \uc778\ud130\ud398\uc774\uc2a4 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/A01_Home/frontend/A01_Home_UI_Page.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_a01_home_frontend_a01_home_ui_page_\uc8fc\uc694_\ud568\uc218_\ubc0f_\uc778\ud130\ud398\uc774\uc2a4_\ubaa9\ub85d", + "community": 116, + "community_name": "A01_Home_UI_Page.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1175\u11be \u110b\u1175\u11ab\u1110\u1165\u1111\u1166\u110b\u1175\u1109\u1173 \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/A01_Home/frontend/A01_Home_UI_Page.md", + "source_location": "L27", + "_origin": "ast", + "id": "pages_a01_home_frontend_a01_home_ui_page_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 116, + "community_name": "A01_Home_UI_Page.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "A02_components.md", + "file_type": "document", + "source_file": "pages/A02_ProgDetail/A02_components.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a02_progdetail_a02_components", + "community": 48, + "community_name": "A02_ProgDetail \u2014 \uc138\ubd80 \uad6c\ud604", + "norm_label": "a02_components.md" + }, + { + "label": "A02_ProgDetail \u2014 \uc138\ubd80 \uad6c\ud604", + "file_type": "document", + "source_file": "pages/A02_ProgDetail/A02_components.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_a02_progdetail_a02_components_a02_progdetail_\uc138\ubd80_\uad6c\ud604", + "community": 48, + "community_name": "A02_ProgDetail \u2014 \uc138\ubd80 \uad6c\ud604", + "norm_label": "a02_progdetail \u2014 \u1109\u1166\u1107\u116e \u1100\u116e\u1112\u1167\u11ab" + }, + { + "label": "\uc2a4\ud0c0\uc77c (CSS)", + "file_type": "document", + "source_file": "pages/A02_ProgDetail/A02_components.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_a02_progdetail_a02_components_\uc2a4\ud0c0\uc77c_css", + "community": 48, + "community_name": "A02_ProgDetail \u2014 \uc138\ubd80 \uad6c\ud604", + "norm_label": "\u1109\u1173\u1110\u1161\u110b\u1175\u11af (css)" + }, + { + "label": "\uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/A02_ProgDetail/A02_components.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_a02_progdetail_a02_components_\uc758\uc874\uc131", + "community": 48, + "community_name": "A02_ProgDetail \u2014 \uc138\ubd80 \uad6c\ud604", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "\ub370\uc774\ud130 \ud750\ub984", + "file_type": "document", + "source_file": "pages/A02_ProgDetail/A02_components.md", + "source_location": "L29", + "_origin": "ast", + "id": "pages_a02_progdetail_a02_components_\ub370\uc774\ud130_\ud750\ub984", + "community": 48, + "community_name": "A02_ProgDetail \u2014 \uc138\ubd80 \uad6c\ud604", + "norm_label": "\u1103\u1166\u110b\u1175\u1110\u1165 \u1112\u1173\u1105\u1173\u11b7" + }, + { + "label": "\ubbf8\ud574\uacb0 / \ud2b9\uc774\uc0ac\ud56d", + "file_type": "document", + "source_file": "pages/A02_ProgDetail/A02_components.md", + "source_location": "L35", + "_origin": "ast", + "id": "pages_a02_progdetail_a02_components_\ubbf8\ud574\uacb0_\ud2b9\uc774\uc0ac\ud56d", + "community": 48, + "community_name": "A02_ProgDetail \u2014 \uc138\ubd80 \uad6c\ud604", + "norm_label": "\u1106\u1175\u1112\u1162\u1100\u1167\u11af / \u1110\u1173\u11a8\u110b\u1175\u1109\u1161\u1112\u1161\u11bc" + }, + { + "label": "A02_frontend.md", + "file_type": "document", + "source_file": "pages/A02_ProgDetail/A02_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a02_progdetail_a02_frontend", + "community": 49, + "community_name": "A02_ProgDetail \u2014 Frontend", + "norm_label": "a02_frontend.md" + }, + { + "label": "A02_ProgDetail \u2014 Frontend", + "file_type": "document", + "source_file": "pages/A02_ProgDetail/A02_frontend.md", + "source_location": "L8", + "_origin": "ast", + "id": "pages_a02_progdetail_a02_frontend_a02_progdetail_frontend", + "community": 49, + "community_name": "A02_ProgDetail \u2014 Frontend", + "norm_label": "a02_progdetail \u2014 frontend" + }, + { + "label": "\uad6c\uc870", + "file_type": "document", + "source_file": "pages/A02_ProgDetail/A02_frontend.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_a02_progdetail_a02_frontend_\uad6c\uc870", + "community": 49, + "community_name": "A02_ProgDetail \u2014 Frontend", + "norm_label": "\u1100\u116e\u110c\u1169" + }, + { + "label": "\ucef4\ud3ec\ub10c\ud2b8 \ubd84\uc11d", + "file_type": "document", + "source_file": "pages/A02_ProgDetail/A02_frontend.md", + "source_location": "L19", + "_origin": "ast", + "id": "pages_a02_progdetail_a02_frontend_\ucef4\ud3ec\ub10c\ud2b8_\ubd84\uc11d", + "community": 49, + "community_name": "A02_ProgDetail \u2014 Frontend", + "norm_label": "\u110f\u1165\u11b7\u1111\u1169\u1102\u1165\u11ab\u1110\u1173 \u1107\u116e\u11ab\u1109\u1165\u11a8" + }, + { + "label": "\uc81c\uc57d \uc900\uc218", + "file_type": "document", + "source_file": "pages/A02_ProgDetail/A02_frontend.md", + "source_location": "L27", + "_origin": "ast", + "id": "pages_a02_progdetail_a02_frontend_\uc81c\uc57d_\uc900\uc218", + "community": 49, + "community_name": "A02_ProgDetail \u2014 Frontend", + "norm_label": "\u110c\u1166\u110b\u1163\u11a8 \u110c\u116e\u11ab\u1109\u116e" + }, + { + "label": "\uc138\ubd80 \uad6c\ud604", + "file_type": "document", + "source_file": "pages/A02_ProgDetail/A02_frontend.md", + "source_location": "L34", + "_origin": "ast", + "id": "pages_a02_progdetail_a02_frontend_\uc138\ubd80_\uad6c\ud604", + "community": 49, + "community_name": "A02_ProgDetail \u2014 Frontend", + "norm_label": "\u1109\u1166\u1107\u116e \u1100\u116e\u1112\u1167\u11ab" + }, + { + "label": "A02_ProgDetail_UI_Page.md", + "file_type": "document", + "source_file": "pages/A02_ProgDetail/frontend/A02_ProgDetail_UI_Page.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a02_progdetail_frontend_a02_progdetail_ui_page", + "community": 117, + "community_name": "A02_ProgDetail_UI_Page.md", + "norm_label": "a02_progdetail_ui_page.md" + }, + { + "label": "A02_ProgDetail_UI_Page.ts", + "file_type": "document", + "source_file": "pages/A02_ProgDetail/frontend/A02_ProgDetail_UI_Page.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_a02_progdetail_frontend_a02_progdetail_ui_page_a02_progdetail_ui_page_ts", + "community": 117, + "community_name": "A02_ProgDetail_UI_Page.md", + "norm_label": "a02_progdetail_ui_page.ts" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/A02_ProgDetail/frontend/A02_ProgDetail_UI_Page.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_a02_progdetail_frontend_a02_progdetail_ui_page_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 117, + "community_name": "A02_ProgDetail_UI_Page.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/A02_ProgDetail/frontend/A02_ProgDetail_UI_Page.md", + "source_location": "L25", + "_origin": "ast", + "id": "pages_a02_progdetail_frontend_a02_progdetail_ui_page_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 117, + "community_name": "A02_ProgDetail_UI_Page.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "A03_frontend.md", + "file_type": "document", + "source_file": "pages/A03_CompDetail/A03_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a03_compdetail_a03_frontend", + "community": 24, + "community_name": "A03_CompDetail \u2014 Frontend", + "norm_label": "a03_frontend.md" + }, + { + "label": "A03_CompDetail \u2014 Frontend", + "file_type": "document", + "source_file": "pages/A03_CompDetail/A03_frontend.md", + "source_location": "L8", + "_origin": "ast", + "id": "pages_a03_compdetail_a03_frontend_a03_compdetail_frontend", + "community": 24, + "community_name": "A03_CompDetail \u2014 Frontend", + "norm_label": "a03_compdetail \u2014 frontend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc870", + "file_type": "document", + "source_file": "pages/A03_CompDetail/A03_frontend.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_a03_compdetail_a03_frontend_\ud30c\uc77c_\uad6c\uc870", + "community": 24, + "community_name": "A03_CompDetail \u2014 Frontend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "\ucef4\ud3ec\ub10c\ud2b8 (\uc139\uc158 \ube4c\ub354)", + "file_type": "document", + "source_file": "pages/A03_CompDetail/A03_frontend.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_a03_compdetail_a03_frontend_\ucef4\ud3ec\ub10c\ud2b8_\uc139\uc158_\ube4c\ub354", + "community": 24, + "community_name": "A03_CompDetail \u2014 Frontend", + "norm_label": "\u110f\u1165\u11b7\u1111\u1169\u1102\u1165\u11ab\u1110\u1173 (\u1109\u1166\u11a8\u1109\u1167\u11ab \u1107\u1175\u11af\u1103\u1165)" + }, + { + "label": "\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "file_type": "document", + "source_file": "pages/A03_CompDetail/A03_frontend.md", + "source_location": "L31", + "_origin": "ast", + "id": "pages_a03_compdetail_a03_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "community": 24, + "community_name": "A03_CompDetail \u2014 Frontend", + "norm_label": "\u1105\u1169\u110f\u1165\u11af\u1105\u1161\u110b\u1175\u110c\u1166\u110b\u1175\u1109\u1167\u11ab" + }, + { + "label": "\uc2a4\ud0c0\uc77c (CSS)", + "file_type": "document", + "source_file": "pages/A03_CompDetail/A03_frontend.md", + "source_location": "L47", + "_origin": "ast", + "id": "pages_a03_compdetail_a03_frontend_\uc2a4\ud0c0\uc77c_css", + "community": 24, + "community_name": "A03_CompDetail \u2014 Frontend", + "norm_label": "\u1109\u1173\u1110\u1161\u110b\u1175\u11af (css)" + }, + { + "label": "CSS \ud074\ub798\uc2a4 \uad6c\uc870", + "file_type": "document", + "source_file": "pages/A03_CompDetail/A03_frontend.md", + "source_location": "L49", + "_origin": "ast", + "id": "pages_a03_compdetail_a03_frontend_css_\ud074\ub798\uc2a4_\uad6c\uc870", + "community": 24, + "community_name": "A03_CompDetail \u2014 Frontend", + "norm_label": "css \u110f\u1173\u11af\u1105\u1162\u1109\u1173 \u1100\u116e\u110c\u1169" + }, + { + "label": "\ubc18\uc751\ud615", + "file_type": "document", + "source_file": "pages/A03_CompDetail/A03_frontend.md", + "source_location": "L63", + "_origin": "ast", + "id": "pages_a03_compdetail_a03_frontend_\ubc18\uc751\ud615", + "community": 24, + "community_name": "A03_CompDetail \u2014 Frontend", + "norm_label": "\u1107\u1161\u11ab\u110b\u1173\u11bc\u1112\u1167\u11bc" + }, + { + "label": "\uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/A03_CompDetail/A03_frontend.md", + "source_location": "L66", + "_origin": "ast", + "id": "pages_a03_compdetail_a03_frontend_\uc758\uc874\uc131", + "community": 24, + "community_name": "A03_CompDetail \u2014 Frontend", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "A04_frontend.md", + "file_type": "document", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a04_newshistory_a04_frontend", + "community": 10, + "community_name": "A04_NewsHistory \u2014 Frontend", + "norm_label": "a04_frontend.md" + }, + { + "label": "A04_NewsHistory \u2014 Frontend", + "file_type": "document", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L8", + "_origin": "ast", + "id": "pages_a04_newshistory_a04_frontend_a04_newshistory_frontend", + "community": 10, + "community_name": "A04_NewsHistory \u2014 Frontend", + "norm_label": "a04_newshistory \u2014 frontend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc870", + "file_type": "document", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_a04_newshistory_a04_frontend_\ud30c\uc77c_\uad6c\uc870", + "community": 10, + "community_name": "A04_NewsHistory \u2014 Frontend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "\ucef4\ud3ec\ub10c\ud2b8 (\uc139\uc158 \ube4c\ub354)", + "file_type": "document", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_a04_newshistory_a04_frontend_\ucef4\ud3ec\ub10c\ud2b8_\uc139\uc158_\ube4c\ub354", + "community": 10, + "community_name": "A04_NewsHistory \u2014 Frontend", + "norm_label": "\u110f\u1165\u11b7\u1111\u1169\u1102\u1165\u11ab\u1110\u1173 (\u1109\u1166\u11a8\u1109\u1167\u11ab \u1107\u1175\u11af\u1103\u1165)" + }, + { + "label": "Mock \ub370\uc774\ud130 \uad6c\uc870", + "file_type": "document", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L32", + "_origin": "ast", + "id": "pages_a04_newshistory_a04_frontend_mock_\ub370\uc774\ud130_\uad6c\uc870", + "community": 10, + "community_name": "A04_NewsHistory \u2014 Frontend", + "norm_label": "mock \u1103\u1166\u110b\u1175\u1110\u1165 \u1100\u116e\u110c\u1169" + }, + { + "label": "\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "file_type": "document", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L50", + "_origin": "ast", + "id": "pages_a04_newshistory_a04_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "community": 10, + "community_name": "A04_NewsHistory \u2014 Frontend", + "norm_label": "\u1105\u1169\u110f\u1165\u11af\u1105\u1161\u110b\u1175\u110c\u1166\u110b\u1175\u1109\u1167\u11ab" + }, + { + "label": "\uc2a4\ud0c0\uc77c (CSS)", + "file_type": "document", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L62", + "_origin": "ast", + "id": "pages_a04_newshistory_a04_frontend_\uc2a4\ud0c0\uc77c_css", + "community": 10, + "community_name": "A04_NewsHistory \u2014 Frontend", + "norm_label": "\u1109\u1173\u1110\u1161\u110b\u1175\u11af (css)" + }, + { + "label": "CSS \ud074\ub798\uc2a4 \uad6c\uc870", + "file_type": "document", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L64", + "_origin": "ast", + "id": "pages_a04_newshistory_a04_frontend_css_\ud074\ub798\uc2a4_\uad6c\uc870", + "community": 10, + "community_name": "A04_NewsHistory \u2014 Frontend", + "norm_label": "css \u110f\u1173\u11af\u1105\u1162\u1109\u1173 \u1100\u116e\u110c\u1169" + }, + { + "label": "\ubc18\uc751\ud615", + "file_type": "document", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L77", + "_origin": "ast", + "id": "pages_a04_newshistory_a04_frontend_\ubc18\uc751\ud615", + "community": 10, + "community_name": "A04_NewsHistory \u2014 Frontend", + "norm_label": "\u1107\u1161\u11ab\u110b\u1173\u11bc\u1112\u1167\u11bc" + }, + { + "label": "\uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L80", + "_origin": "ast", + "id": "pages_a04_newshistory_a04_frontend_\uc758\uc874\uc131", + "community": 10, + "community_name": "A04_NewsHistory \u2014 Frontend", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "\ubbf8\ud574\uacb0 \uc0ac\ud56d", + "file_type": "document", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L85", + "_origin": "ast", + "id": "pages_a04_newshistory_a04_frontend_\ubbf8\ud574\uacb0_\uc0ac\ud56d", + "community": 10, + "community_name": "A04_NewsHistory \u2014 Frontend", + "norm_label": "\u1106\u1175\u1112\u1162\u1100\u1167\u11af \u1109\u1161\u1112\u1161\u11bc" + }, + { + "label": "A05_frontend.md", + "file_type": "document", + "source_file": "pages/A05_EduDetail/A05_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a05_edudetail_a05_frontend", + "community": 15, + "community_name": "A05_EduDetail \u2014 Frontend", + "norm_label": "a05_frontend.md" + }, + { + "label": "A05_EduDetail \u2014 Frontend", + "file_type": "document", + "source_file": "pages/A05_EduDetail/A05_frontend.md", + "source_location": "L8", + "_origin": "ast", + "id": "pages_a05_edudetail_a05_frontend_a05_edudetail_frontend", + "community": 15, + "community_name": "A05_EduDetail \u2014 Frontend", + "norm_label": "a05_edudetail \u2014 frontend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc870", + "file_type": "document", + "source_file": "pages/A05_EduDetail/A05_frontend.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_a05_edudetail_a05_frontend_\ud30c\uc77c_\uad6c\uc870", + "community": 15, + "community_name": "A05_EduDetail \u2014 Frontend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "\ucef4\ud3ec\ub10c\ud2b8 (\uc139\uc158 \ube4c\ub354)", + "file_type": "document", + "source_file": "pages/A05_EduDetail/A05_frontend.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_a05_edudetail_a05_frontend_\ucef4\ud3ec\ub10c\ud2b8_\uc139\uc158_\ube4c\ub354", + "community": 15, + "community_name": "A05_EduDetail \u2014 Frontend", + "norm_label": "\u110f\u1165\u11b7\u1111\u1169\u1102\u1165\u11ab\u1110\u1173 (\u1109\u1166\u11a8\u1109\u1167\u11ab \u1107\u1175\u11af\u1103\u1165)" + }, + { + "label": "\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "file_type": "document", + "source_file": "pages/A05_EduDetail/A05_frontend.md", + "source_location": "L30", + "_origin": "ast", + "id": "pages_a05_edudetail_a05_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "community": 15, + "community_name": "A05_EduDetail \u2014 Frontend", + "norm_label": "\u1105\u1169\u110f\u1165\u11af\u1105\u1161\u110b\u1175\u110c\u1166\u110b\u1175\u1109\u1167\u11ab" + }, + { + "label": "\uc2a4\ud0c0\uc77c (CSS)", + "file_type": "document", + "source_file": "pages/A05_EduDetail/A05_frontend.md", + "source_location": "L43", + "_origin": "ast", + "id": "pages_a05_edudetail_a05_frontend_\uc2a4\ud0c0\uc77c_css", + "community": 15, + "community_name": "A05_EduDetail \u2014 Frontend", + "norm_label": "\u1109\u1173\u1110\u1161\u110b\u1175\u11af (css)" + }, + { + "label": "CSS \ud074\ub798\uc2a4 \uad6c\uc870", + "file_type": "document", + "source_file": "pages/A05_EduDetail/A05_frontend.md", + "source_location": "L45", + "_origin": "ast", + "id": "pages_a05_edudetail_a05_frontend_css_\ud074\ub798\uc2a4_\uad6c\uc870", + "community": 15, + "community_name": "A05_EduDetail \u2014 Frontend", + "norm_label": "css \u110f\u1173\u11af\u1105\u1162\u1109\u1173 \u1100\u116e\u110c\u1169" + }, + { + "label": "\ubc18\uc751\ud615", + "file_type": "document", + "source_file": "pages/A05_EduDetail/A05_frontend.md", + "source_location": "L58", + "_origin": "ast", + "id": "pages_a05_edudetail_a05_frontend_\ubc18\uc751\ud615", + "community": 15, + "community_name": "A05_EduDetail \u2014 Frontend", + "norm_label": "\u1107\u1161\u11ab\u110b\u1173\u11bc\u1112\u1167\u11bc" + }, + { + "label": "\uc774\ubca4\ud2b8 \ud578\ub4e4\ub7ec", + "file_type": "document", + "source_file": "pages/A05_EduDetail/A05_frontend.md", + "source_location": "L61", + "_origin": "ast", + "id": "pages_a05_edudetail_a05_frontend_\uc774\ubca4\ud2b8_\ud578\ub4e4\ub7ec", + "community": 15, + "community_name": "A05_EduDetail \u2014 Frontend", + "norm_label": "\u110b\u1175\u1107\u1166\u11ab\u1110\u1173 \u1112\u1162\u11ab\u1103\u1173\u11af\u1105\u1165" + }, + { + "label": "\uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/A05_EduDetail/A05_frontend.md", + "source_location": "L67", + "_origin": "ast", + "id": "pages_a05_edudetail_a05_frontend_\uc758\uc874\uc131", + "community": 15, + "community_name": "A05_EduDetail \u2014 Frontend", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "A06_backend.md", + "file_type": "document", + "source_file": "pages/A06_Login/A06_backend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a06_login_a06_backend", + "community": 25, + "community_name": "A06_Login \u2014 Backend", + "norm_label": "a06_backend.md" + }, + { + "label": "A06_Login \u2014 Backend", + "file_type": "document", + "source_file": "pages/A06_Login/A06_backend.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_a06_login_a06_backend_a06_login_backend", + "community": 25, + "community_name": "A06_Login \u2014 Backend", + "norm_label": "a06_login \u2014 backend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc870", + "file_type": "document", + "source_file": "pages/A06_Login/A06_backend.md", + "source_location": "L13", + "_origin": "ast", + "id": "pages_a06_login_a06_backend_\ud30c\uc77c_\uad6c\uc870", + "community": 25, + "community_name": "A06_Login \u2014 Backend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "API \uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "file_type": "document", + "source_file": "pages/A06_Login/A06_backend.md", + "source_location": "L20", + "_origin": "ast", + "id": "pages_a06_login_a06_backend_api_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "community": 25, + "community_name": "A06_Login \u2014 Backend", + "norm_label": "api \u110b\u1166\u11ab\u1103\u1173\u1111\u1169\u110b\u1175\u11ab\u1110\u1173" + }, + { + "label": "\ub0b4\ubd80 \ud5ec\ud37c", + "file_type": "document", + "source_file": "pages/A06_Login/A06_backend.md", + "source_location": "L30", + "_origin": "ast", + "id": "pages_a06_login_a06_backend_\ub0b4\ubd80_\ud5ec\ud37c", + "community": 25, + "community_name": "A06_Login \u2014 Backend", + "norm_label": "\u1102\u1162\u1107\u116e \u1112\u1166\u11af\u1111\u1165" + }, + { + "label": "\uc694\uccad \uc2a4\ud0a4\ub9c8 (Pydantic)", + "file_type": "document", + "source_file": "pages/A06_Login/A06_backend.md", + "source_location": "L37", + "_origin": "ast", + "id": "pages_a06_login_a06_backend_\uc694\uccad_\uc2a4\ud0a4\ub9c8_pydantic", + "community": 25, + "community_name": "A06_Login \u2014 Backend", + "norm_label": "\u110b\u116d\u110e\u1165\u11bc \u1109\u1173\u110f\u1175\u1106\u1161 (pydantic)" + }, + { + "label": "\ub85c\uadf8\uc778 \ub85c\uc9c1 \ud750\ub984", + "file_type": "document", + "source_file": "pages/A06_Login/A06_backend.md", + "source_location": "L45", + "_origin": "ast", + "id": "pages_a06_login_a06_backend_\ub85c\uadf8\uc778_\ub85c\uc9c1_\ud750\ub984", + "community": 25, + "community_name": "A06_Login \u2014 Backend", + "norm_label": "\u1105\u1169\u1100\u1173\u110b\u1175\u11ab \u1105\u1169\u110c\u1175\u11a8 \u1112\u1173\u1105\u1173\u11b7" + }, + { + "label": "\ubcf4\uc548 \uc815\ucc45 (\uc2e4 \ucf54\ub4dc \uae30\uc900)", + "file_type": "document", + "source_file": "pages/A06_Login/A06_backend.md", + "source_location": "L54", + "_origin": "ast", + "id": "pages_a06_login_a06_backend_\ubcf4\uc548_\uc815\ucc45_\uc2e4_\ucf54\ub4dc_\uae30\uc900", + "community": 25, + "community_name": "A06_Login \u2014 Backend", + "norm_label": "\u1107\u1169\u110b\u1161\u11ab \u110c\u1165\u11bc\u110e\u1162\u11a8 (\u1109\u1175\u11af \u110f\u1169\u1103\u1173 \u1100\u1175\u110c\u116e\u11ab)" + }, + { + "label": "\uc758\uc874\uc131 (\uacf5\ud1b5 \uc720\ud2f8)", + "file_type": "document", + "source_file": "pages/A06_Login/A06_backend.md", + "source_location": "L61", + "_origin": "ast", + "id": "pages_a06_login_a06_backend_\uc758\uc874\uc131_\uacf5\ud1b5_\uc720\ud2f8", + "community": 25, + "community_name": "A06_Login \u2014 Backend", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc (\u1100\u1169\u11bc\u1110\u1169\u11bc \u110b\u1172\u1110\u1175\u11af)" + }, + { + "label": "A06_frontend.md", + "file_type": "document", + "source_file": "pages/A06_Login/A06_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a06_login_a06_frontend", + "community": 16, + "community_name": "A06_Login \u2014 Frontend", + "norm_label": "a06_frontend.md" + }, + { + "label": "A06_Login \u2014 Frontend", + "file_type": "document", + "source_file": "pages/A06_Login/A06_frontend.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_a06_login_a06_frontend_a06_login_frontend", + "community": 16, + "community_name": "A06_Login \u2014 Frontend", + "norm_label": "a06_login \u2014 frontend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc870", + "file_type": "document", + "source_file": "pages/A06_Login/A06_frontend.md", + "source_location": "L13", + "_origin": "ast", + "id": "pages_a06_login_a06_frontend_\ud30c\uc77c_\uad6c\uc870", + "community": 16, + "community_name": "A06_Login \u2014 Frontend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "\ucef4\ud3ec\ub10c\ud2b8 / \ud568\uc218", + "file_type": "document", + "source_file": "pages/A06_Login/A06_frontend.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_a06_login_a06_frontend_\ucef4\ud3ec\ub10c\ud2b8_\ud568\uc218", + "community": 16, + "community_name": "A06_Login \u2014 Frontend", + "norm_label": "\u110f\u1165\u11b7\u1111\u1169\u1102\u1165\u11ab\u1110\u1173 / \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "API \ud074\ub77c\uc774\uc5b8\ud2b8 \ud568\uc218", + "file_type": "document", + "source_file": "pages/A06_Login/A06_frontend.md", + "source_location": "L30", + "_origin": "ast", + "id": "pages_a06_login_a06_frontend_api_\ud074\ub77c\uc774\uc5b8\ud2b8_\ud568\uc218", + "community": 16, + "community_name": "A06_Login \u2014 Frontend", + "norm_label": "api \u110f\u1173\u11af\u1105\u1161\u110b\u1175\u110b\u1165\u11ab\u1110\u1173 \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "\uc81c\ucd9c \ubc0f OTP \uc81c\uc5b4 \ub85c\uc9c1 (2\ub2e8\uacc4 \ud3fc \uc804\ud658)", + "file_type": "document", + "source_file": "pages/A06_Login/A06_frontend.md", + "source_location": "L43", + "_origin": "ast", + "id": "pages_a06_login_a06_frontend_\uc81c\ucd9c_\ubc0f_otp_\uc81c\uc5b4_\ub85c\uc9c1_2\ub2e8\uacc4_\ud3fc_\uc804\ud658", + "community": 16, + "community_name": "A06_Login \u2014 Frontend", + "norm_label": "\u110c\u1166\u110e\u116e\u11af \u1106\u1175\u11be otp \u110c\u1166\u110b\u1165 \u1105\u1169\u110c\u1175\u11a8 (2\u1103\u1161\u11ab\u1100\u1168 \u1111\u1169\u11b7 \u110c\u1165\u11ab\u1112\u116a\u11ab)" + }, + { + "label": "\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "file_type": "document", + "source_file": "pages/A06_Login/A06_frontend.md", + "source_location": "L56", + "_origin": "ast", + "id": "pages_a06_login_a06_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "community": 16, + "community_name": "A06_Login \u2014 Frontend", + "norm_label": "\u1105\u1169\u110f\u1165\u11af\u1105\u1161\u110b\u1175\u110c\u1166\u110b\u1175\u1109\u1167\u11ab" + }, + { + "label": "\uc2a4\ud0c0\uc77c (CSS)", + "file_type": "document", + "source_file": "pages/A06_Login/A06_frontend.md", + "source_location": "L70", + "_origin": "ast", + "id": "pages_a06_login_a06_frontend_\uc2a4\ud0c0\uc77c_css", + "community": 16, + "community_name": "A06_Login \u2014 Frontend", + "norm_label": "\u1109\u1173\u1110\u1161\u110b\u1175\u11af (css)" + }, + { + "label": "\uc774\ubca4\ud2b8 \ud578\ub4e4\ub7ec", + "file_type": "document", + "source_file": "pages/A06_Login/A06_frontend.md", + "source_location": "L78", + "_origin": "ast", + "id": "pages_a06_login_a06_frontend_\uc774\ubca4\ud2b8_\ud578\ub4e4\ub7ec", + "community": 16, + "community_name": "A06_Login \u2014 Frontend", + "norm_label": "\u110b\u1175\u1107\u1166\u11ab\u1110\u1173 \u1112\u1162\u11ab\u1103\u1173\u11af\u1105\u1165" + }, + { + "label": "\uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/A06_Login/A06_frontend.md", + "source_location": "L87", + "_origin": "ast", + "id": "pages_a06_login_a06_frontend_\uc758\uc874\uc131", + "community": 16, + "community_name": "A06_Login \u2014 Frontend", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "A06_Login_Router.md", + "file_type": "document", + "source_file": "pages/A06_Login/backend/A06_Login_Router.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a06_login_backend_a06_login_router", + "community": 118, + "community_name": "A06_Login_Router.md", + "norm_label": "a06_login_router.md" + }, + { + "label": "A06_Login_Router.py", + "file_type": "document", + "source_file": "pages/A06_Login/backend/A06_Login_Router.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_a06_login_backend_a06_login_router_a06_login_router_py", + "community": 118, + "community_name": "A06_Login_Router.md", + "norm_label": "a06_login_router.py" + }, + { + "label": "\ud83d\udee0\ufe0f \ub77c\uc6b0\ud130 API \ubc0f \uc8fc\uc694 \ud5ec\ud37c \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/A06_Login/backend/A06_Login_Router.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_a06_login_backend_a06_login_router_\ub77c\uc6b0\ud130_api_\ubc0f_\uc8fc\uc694_\ud5ec\ud37c_\ud568\uc218_\ubaa9\ub85d", + "community": 118, + "community_name": "A06_Login_Router.md", + "norm_label": "\ud83d\udee0\ufe0f \u1105\u1161\u110b\u116e\u1110\u1165 api \u1106\u1175\u11be \u110c\u116e\u110b\u116d \u1112\u1166\u11af\u1111\u1165 \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/A06_Login/backend/A06_Login_Router.md", + "source_location": "L26", + "_origin": "ast", + "id": "pages_a06_login_backend_a06_login_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 118, + "community_name": "A06_Login_Router.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "A07_backend.md", + "file_type": "document", + "source_file": "pages/A07_Register/A07_backend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a07_register_a07_backend", + "community": 27, + "community_name": "A07_Register \u2014 Backend", + "norm_label": "a07_backend.md" + }, + { + "label": "A07_Register \u2014 Backend", + "file_type": "document", + "source_file": "pages/A07_Register/A07_backend.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_a07_register_a07_backend_a07_register_backend", + "community": 27, + "community_name": "A07_Register \u2014 Backend", + "norm_label": "a07_register \u2014 backend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc870", + "file_type": "document", + "source_file": "pages/A07_Register/A07_backend.md", + "source_location": "L13", + "_origin": "ast", + "id": "pages_a07_register_a07_backend_\ud30c\uc77c_\uad6c\uc870", + "community": 27, + "community_name": "A07_Register \u2014 Backend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "API \uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "file_type": "document", + "source_file": "pages/A07_Register/A07_backend.md", + "source_location": "L20", + "_origin": "ast", + "id": "pages_a07_register_a07_backend_api_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "community": 27, + "community_name": "A07_Register \u2014 Backend", + "norm_label": "api \u110b\u1166\u11ab\u1103\u1173\u1111\u1169\u110b\u1175\u11ab\u1110\u1173" + }, + { + "label": "\uc694\uccad \uc2a4\ud0a4\ub9c8 (Pydantic)", + "file_type": "document", + "source_file": "pages/A07_Register/A07_backend.md", + "source_location": "L28", + "_origin": "ast", + "id": "pages_a07_register_a07_backend_\uc694\uccad_\uc2a4\ud0a4\ub9c8_pydantic", + "community": 27, + "community_name": "A07_Register \u2014 Backend", + "norm_label": "\u110b\u116d\u110e\u1165\u11bc \u1109\u1173\u110f\u1175\u1106\u1161 (pydantic)" + }, + { + "label": "\uac00\uc785 \ub85c\uc9c1 \ud750\ub984", + "file_type": "document", + "source_file": "pages/A07_Register/A07_backend.md", + "source_location": "L37", + "_origin": "ast", + "id": "pages_a07_register_a07_backend_\uac00\uc785_\ub85c\uc9c1_\ud750\ub984", + "community": 27, + "community_name": "A07_Register \u2014 Backend", + "norm_label": "\u1100\u1161\u110b\u1175\u11b8 \u1105\u1169\u110c\u1175\u11a8 \u1112\u1173\u1105\u1173\u11b7" + }, + { + "label": "\uc758\uc874\uc131 (\uacf5\ud1b5 \uc720\ud2f8)", + "file_type": "document", + "source_file": "pages/A07_Register/A07_backend.md", + "source_location": "L50", + "_origin": "ast", + "id": "pages_a07_register_a07_backend_\uc758\uc874\uc131_\uacf5\ud1b5_\uc720\ud2f8", + "community": 27, + "community_name": "A07_Register \u2014 Backend", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc (\u1100\u1169\u11bc\u1110\u1169\u11bc \u110b\u1172\u1110\u1175\u11af)" + }, + { + "label": "\ucc38\uace0", + "file_type": "document", + "source_file": "pages/A07_Register/A07_backend.md", + "source_location": "L56", + "_origin": "ast", + "id": "pages_a07_register_a07_backend_\ucc38\uace0", + "community": 27, + "community_name": "A07_Register \u2014 Backend", + "norm_label": "\u110e\u1161\u11b7\u1100\u1169" + }, + { + "label": "A07_frontend.md", + "file_type": "document", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a07_register_a07_frontend", + "community": 11, + "community_name": "A07_Register \u2014 Frontend", + "norm_label": "a07_frontend.md" + }, + { + "label": "A07_Register \u2014 Frontend", + "file_type": "document", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L8", + "_origin": "ast", + "id": "pages_a07_register_a07_frontend_a07_register_frontend", + "community": 11, + "community_name": "A07_Register \u2014 Frontend", + "norm_label": "a07_register \u2014 frontend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc870", + "file_type": "document", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_a07_register_a07_frontend_\ud30c\uc77c_\uad6c\uc870", + "community": 11, + "community_name": "A07_Register \u2014 Frontend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "\ucef4\ud3ec\ub10c\ud2b8 / \ud568\uc218 (UI_Auth_Page \u2014 \uc2e4\uc0ac\uc6a9)", + "file_type": "document", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L24", + "_origin": "ast", + "id": "pages_a07_register_a07_frontend_\ucef4\ud3ec\ub10c\ud2b8_\ud568\uc218_ui_auth_page_\uc2e4\uc0ac\uc6a9", + "community": 11, + "community_name": "A07_Register \u2014 Frontend", + "norm_label": "\u110f\u1165\u11b7\u1111\u1169\u1102\u1165\u11ab\u1110\u1173 / \u1112\u1161\u11b7\u1109\u116e (ui_auth_page \u2014 \u1109\u1175\u11af\u1109\u1161\u110b\u116d\u11bc)" + }, + { + "label": "API \ud074\ub77c\uc774\uc5b8\ud2b8 \ud568\uc218", + "file_type": "document", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L33", + "_origin": "ast", + "id": "pages_a07_register_a07_frontend_api_\ud074\ub77c\uc774\uc5b8\ud2b8_\ud568\uc218", + "community": 11, + "community_name": "A07_Register \u2014 Frontend", + "norm_label": "api \u110f\u1173\u11af\u1105\u1161\u110b\u1175\u110b\u1165\u11ab\u1110\u1173 \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "\uc81c\ucd9c \ub85c\uc9c1 (2\ub2e8\uacc4 \ud3fc \uc804\ud658)", + "file_type": "document", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L43", + "_origin": "ast", + "id": "pages_a07_register_a07_frontend_\uc81c\ucd9c_\ub85c\uc9c1_2\ub2e8\uacc4_\ud3fc_\uc804\ud658", + "community": 11, + "community_name": "A07_Register \u2014 Frontend", + "norm_label": "\u110c\u1166\u110e\u116e\u11af \u1105\u1169\u110c\u1175\u11a8 (2\u1103\u1161\u11ab\u1100\u1168 \u1111\u1169\u11b7 \u110c\u1165\u11ab\u1112\u116a\u11ab)" + }, + { + "label": "\uc57d\uad00 \ub3d9\uc758 (\uc544\ucf54\ub514\uc5b8)", + "file_type": "document", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L50", + "_origin": "ast", + "id": "pages_a07_register_a07_frontend_\uc57d\uad00_\ub3d9\uc758_\uc544\ucf54\ub514\uc5b8", + "community": 11, + "community_name": "A07_Register \u2014 Frontend", + "norm_label": "\u110b\u1163\u11a8\u1100\u116a\u11ab \u1103\u1169\u11bc\u110b\u1174 (\u110b\u1161\u110f\u1169\u1103\u1175\u110b\u1165\u11ab)" + }, + { + "label": "\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "file_type": "document", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L56", + "_origin": "ast", + "id": "pages_a07_register_a07_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "community": 11, + "community_name": "A07_Register \u2014 Frontend", + "norm_label": "\u1105\u1169\u110f\u1165\u11af\u1105\u1161\u110b\u1175\u110c\u1166\u110b\u1175\u1109\u1167\u11ab" + }, + { + "label": "\uc2a4\ud0c0\uc77c (CSS)", + "file_type": "document", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L70", + "_origin": "ast", + "id": "pages_a07_register_a07_frontend_\uc2a4\ud0c0\uc77c_css", + "community": 11, + "community_name": "A07_Register \u2014 Frontend", + "norm_label": "\u1109\u1173\u1110\u1161\u110b\u1175\u11af (css)" + }, + { + "label": "\uc774\ubca4\ud2b8 \ud578\ub4e4\ub7ec", + "file_type": "document", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L77", + "_origin": "ast", + "id": "pages_a07_register_a07_frontend_\uc774\ubca4\ud2b8_\ud578\ub4e4\ub7ec", + "community": 11, + "community_name": "A07_Register \u2014 Frontend", + "norm_label": "\u110b\u1175\u1107\u1166\u11ab\u1110\u1173 \u1112\u1162\u11ab\u1103\u1173\u11af\u1105\u1165" + }, + { + "label": "\uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L85", + "_origin": "ast", + "id": "pages_a07_register_a07_frontend_\uc758\uc874\uc131", + "community": 11, + "community_name": "A07_Register \u2014 Frontend", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "A07_Register_Router.md", + "file_type": "document", + "source_file": "pages/A07_Register/backend/A07_Register_Router.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a07_register_backend_a07_register_router", + "community": 119, + "community_name": "A07_Register_Router.md", + "norm_label": "a07_register_router.md" + }, + { + "label": "A07_Register_Router.py", + "file_type": "document", + "source_file": "pages/A07_Register/backend/A07_Register_Router.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_a07_register_backend_a07_register_router_a07_register_router_py", + "community": 119, + "community_name": "A07_Register_Router.md", + "norm_label": "a07_register_router.py" + }, + { + "label": "\ud83d\udee0\ufe0f \ub77c\uc6b0\ud130 API \ubc0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/A07_Register/backend/A07_Register_Router.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_a07_register_backend_a07_register_router_\ub77c\uc6b0\ud130_api_\ubc0f_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 119, + "community_name": "A07_Register_Router.md", + "norm_label": "\ud83d\udee0\ufe0f \u1105\u1161\u110b\u116e\u1110\u1165 api \u1106\u1175\u11be \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/A07_Register/backend/A07_Register_Router.md", + "source_location": "L22", + "_origin": "ast", + "id": "pages_a07_register_backend_a07_register_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 119, + "community_name": "A07_Register_Router.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "A08_backend.md", + "file_type": "document", + "source_file": "pages/A08_Support/A08_backend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a08_support_a08_backend", + "community": 17, + "community_name": "A08_Support \u2014 Backend", + "norm_label": "a08_backend.md" + }, + { + "label": "A08_Support \u2014 Backend", + "file_type": "document", + "source_file": "pages/A08_Support/A08_backend.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_a08_support_a08_backend_a08_support_backend", + "community": 17, + "community_name": "A08_Support \u2014 Backend", + "norm_label": "a08_support \u2014 backend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc870", + "file_type": "document", + "source_file": "pages/A08_Support/A08_backend.md", + "source_location": "L13", + "_origin": "ast", + "id": "pages_a08_support_a08_backend_\ud30c\uc77c_\uad6c\uc870", + "community": 17, + "community_name": "A08_Support \u2014 Backend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "API \uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "file_type": "document", + "source_file": "pages/A08_Support/A08_backend.md", + "source_location": "L20", + "_origin": "ast", + "id": "pages_a08_support_a08_backend_api_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "community": 17, + "community_name": "A08_Support \u2014 Backend", + "norm_label": "api \u110b\u1166\u11ab\u1103\u1173\u1111\u1169\u110b\u1175\u11ab\u1110\u1173" + }, + { + "label": "\ub0b4\ubd80 \ud5ec\ud37c", + "file_type": "document", + "source_file": "pages/A08_Support/A08_backend.md", + "source_location": "L26", + "_origin": "ast", + "id": "pages_a08_support_a08_backend_\ub0b4\ubd80_\ud5ec\ud37c", + "community": 17, + "community_name": "A08_Support \u2014 Backend", + "norm_label": "\u1102\u1162\u1107\u116e \u1112\u1166\u11af\u1111\u1165" + }, + { + "label": "\uc694\uccad \uc2a4\ud0a4\ub9c8 (Pydantic)", + "file_type": "document", + "source_file": "pages/A08_Support/A08_backend.md", + "source_location": "L32", + "_origin": "ast", + "id": "pages_a08_support_a08_backend_\uc694\uccad_\uc2a4\ud0a4\ub9c8_pydantic", + "community": 17, + "community_name": "A08_Support \u2014 Backend", + "norm_label": "\u110b\u116d\u110e\u1165\u11bc \u1109\u1173\u110f\u1175\u1106\u1161 (pydantic)" + }, + { + "label": "\uc811\uc218 \ub85c\uc9c1", + "file_type": "document", + "source_file": "pages/A08_Support/A08_backend.md", + "source_location": "L38", + "_origin": "ast", + "id": "pages_a08_support_a08_backend_\uc811\uc218_\ub85c\uc9c1", + "community": 17, + "community_name": "A08_Support \u2014 Backend", + "norm_label": "\u110c\u1165\u11b8\u1109\u116e \u1105\u1169\u110c\u1175\u11a8" + }, + { + "label": "DB \uc800\uc7a5 \uceec\ub7fc (\uc2e4 \ucf54\ub4dc INSERT \uae30\uc900)", + "file_type": "document", + "source_file": "pages/A08_Support/A08_backend.md", + "source_location": "L45", + "_origin": "ast", + "id": "pages_a08_support_a08_backend_db_\uc800\uc7a5_\uceec\ub7fc_\uc2e4_\ucf54\ub4dc_insert_\uae30\uc900", + "community": 17, + "community_name": "A08_Support \u2014 Backend", + "norm_label": "db \u110c\u1165\u110c\u1161\u11bc \u110f\u1165\u11af\u1105\u1165\u11b7 (\u1109\u1175\u11af \u110f\u1169\u1103\u1173 insert \u1100\u1175\u110c\u116e\u11ab)" + }, + { + "label": "\ud2b9\uc9d5", + "file_type": "document", + "source_file": "pages/A08_Support/A08_backend.md", + "source_location": "L52", + "_origin": "ast", + "id": "pages_a08_support_a08_backend_\ud2b9\uc9d5", + "community": 17, + "community_name": "A08_Support \u2014 Backend", + "norm_label": "\u1110\u1173\u11a8\u110c\u1175\u11bc" + }, + { + "label": "\uc758\uc874\uc131 (\uacf5\ud1b5 \uc720\ud2f8)", + "file_type": "document", + "source_file": "pages/A08_Support/A08_backend.md", + "source_location": "L57", + "_origin": "ast", + "id": "pages_a08_support_a08_backend_\uc758\uc874\uc131_\uacf5\ud1b5_\uc720\ud2f8", + "community": 17, + "community_name": "A08_Support \u2014 Backend", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc (\u1100\u1169\u11bc\u1110\u1169\u11bc \u110b\u1172\u1110\u1175\u11af)" + }, + { + "label": "A08_frontend.md", + "file_type": "document", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a08_support_a08_frontend", + "community": 12, + "community_name": "A08_Support \u2014 Frontend", + "norm_label": "a08_frontend.md" + }, + { + "label": "A08_Support \u2014 Frontend", + "file_type": "document", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L8", + "_origin": "ast", + "id": "pages_a08_support_a08_frontend_a08_support_frontend", + "community": 12, + "community_name": "A08_Support \u2014 Frontend", + "norm_label": "a08_support \u2014 frontend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc870", + "file_type": "document", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_a08_support_a08_frontend_\ud30c\uc77c_\uad6c\uc870", + "community": 12, + "community_name": "A08_Support \u2014 Frontend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "\ucef4\ud3ec\ub10c\ud2b8 / \ud568\uc218", + "file_type": "document", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L19", + "_origin": "ast", + "id": "pages_a08_support_a08_frontend_\ucef4\ud3ec\ub10c\ud2b8_\ud568\uc218", + "community": 12, + "community_name": "A08_Support \u2014 Frontend", + "norm_label": "\u110f\u1165\u11b7\u1111\u1169\u1102\u1165\u11ab\u1110\u1173 / \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "\uc81c\ucd9c \ub85c\uc9c1", + "file_type": "document", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L27", + "_origin": "ast", + "id": "pages_a08_support_a08_frontend_\uc81c\ucd9c_\ub85c\uc9c1", + "community": 12, + "community_name": "A08_Support \u2014 Frontend", + "norm_label": "\u110c\u1166\u110e\u116e\u11af \u1105\u1169\u110c\u1175\u11a8" + }, + { + "label": "\uc138\uc158 \uc790\ub3d9 \ucc44\uc6c0", + "file_type": "document", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L34", + "_origin": "ast", + "id": "pages_a08_support_a08_frontend_\uc138\uc158_\uc790\ub3d9_\ucc44\uc6c0", + "community": 12, + "community_name": "A08_Support \u2014 Frontend", + "norm_label": "\u1109\u1166\u1109\u1167\u11ab \u110c\u1161\u1103\u1169\u11bc \u110e\u1162\u110b\u116e\u11b7" + }, + { + "label": "\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "file_type": "document", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L39", + "_origin": "ast", + "id": "pages_a08_support_a08_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "community": 12, + "community_name": "A08_Support \u2014 Frontend", + "norm_label": "\u1105\u1169\u110f\u1165\u11af\u1105\u1161\u110b\u1175\u110c\u1166\u110b\u1175\u1109\u1167\u11ab" + }, + { + "label": "\uc2a4\ud0c0\uc77c (CSS)", + "file_type": "document", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L51", + "_origin": "ast", + "id": "pages_a08_support_a08_frontend_\uc2a4\ud0c0\uc77c_css", + "community": 12, + "community_name": "A08_Support \u2014 Frontend", + "norm_label": "\u1109\u1173\u1110\u1161\u110b\u1175\u11af (css)" + }, + { + "label": "\uc774\ubca4\ud2b8 \ud578\ub4e4\ub7ec", + "file_type": "document", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L59", + "_origin": "ast", + "id": "pages_a08_support_a08_frontend_\uc774\ubca4\ud2b8_\ud578\ub4e4\ub7ec", + "community": 12, + "community_name": "A08_Support \u2014 Frontend", + "norm_label": "\u110b\u1175\u1107\u1166\u11ab\u1110\u1173 \u1112\u1162\u11ab\u1103\u1173\u11af\u1105\u1165" + }, + { + "label": "\uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L65", + "_origin": "ast", + "id": "pages_a08_support_a08_frontend_\uc758\uc874\uc131", + "community": 12, + "community_name": "A08_Support \u2014 Frontend", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "\ucc38\uace0", + "file_type": "document", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L73", + "_origin": "ast", + "id": "pages_a08_support_a08_frontend_\ucc38\uace0", + "community": 12, + "community_name": "A08_Support \u2014 Frontend", + "norm_label": "\u110e\u1161\u11b7\u1100\u1169" + }, + { + "label": "A08_Support_Router.md", + "file_type": "document", + "source_file": "pages/A08_Support/backend/A08_Support_Router.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a08_support_backend_a08_support_router", + "community": 120, + "community_name": "A08_Support_Router.md", + "norm_label": "a08_support_router.md" + }, + { + "label": "A08_Support_Router.py", + "file_type": "document", + "source_file": "pages/A08_Support/backend/A08_Support_Router.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_a08_support_backend_a08_support_router_a08_support_router_py", + "community": 120, + "community_name": "A08_Support_Router.md", + "norm_label": "a08_support_router.py" + }, + { + "label": "\ud83d\udee0\ufe0f \ub77c\uc6b0\ud130 API \ubc0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/A08_Support/backend/A08_Support_Router.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_a08_support_backend_a08_support_router_\ub77c\uc6b0\ud130_api_\ubc0f_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 120, + "community_name": "A08_Support_Router.md", + "norm_label": "\ud83d\udee0\ufe0f \u1105\u1161\u110b\u116e\u1110\u1165 api \u1106\u1175\u11be \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/A08_Support/backend/A08_Support_Router.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_a08_support_backend_a08_support_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 120, + "community_name": "A08_Support_Router.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "A09_backend.md", + "file_type": "document", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a09_security_a09_backend", + "community": 6, + "community_name": "A09_Security \u2014 Backend", + "norm_label": "a09_backend.md" + }, + { + "label": "A09_Security \u2014 Backend", + "file_type": "document", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L8", + "_origin": "ast", + "id": "pages_a09_security_a09_backend_a09_security_backend", + "community": 6, + "community_name": "A09_Security \u2014 Backend", + "norm_label": "a09_security \u2014 backend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc870", + "file_type": "document", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_a09_security_a09_backend_\ud30c\uc77c_\uad6c\uc870", + "community": 6, + "community_name": "A09_Security \u2014 Backend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "API \uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "file_type": "document", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L19", + "_origin": "ast", + "id": "pages_a09_security_a09_backend_api_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "community": 6, + "community_name": "A09_Security \u2014 Backend", + "norm_label": "api \u110b\u1166\u11ab\u1103\u1173\u1111\u1169\u110b\u1175\u11ab\u1110\u1173" + }, + { + "label": "\ub9c8\uc2a4\ud130(\ud68c\uc0ac \uad00\ub9ac\uc790) \uc804\uc6a9 \u2014 `require_master`", + "file_type": "document", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_a09_security_a09_backend_\ub9c8\uc2a4\ud130_\ud68c\uc0ac_\uad00\ub9ac\uc790_\uc804\uc6a9_require_master", + "community": 6, + "community_name": "A09_Security \u2014 Backend", + "norm_label": "\u1106\u1161\u1109\u1173\u1110\u1165(\u1112\u116c\u1109\u1161 \u1100\u116a\u11ab\u1105\u1175\u110c\u1161) \u110c\u1165\u11ab\u110b\u116d\u11bc \u2014 `require_master`" + }, + { + "label": "\uc2dc\uc2a4\ud15c \uad00\ub9ac\uc790 \uc804\uc6a9 \u2014 `require_system_admin`", + "file_type": "document", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L31", + "_origin": "ast", + "id": "pages_a09_security_a09_backend_\uc2dc\uc2a4\ud15c_\uad00\ub9ac\uc790_\uc804\uc6a9_require_system_admin", + "community": 6, + "community_name": "A09_Security \u2014 Backend", + "norm_label": "\u1109\u1175\u1109\u1173\u1110\u1166\u11b7 \u1100\u116a\u11ab\u1105\u1175\u110c\u1161 \u110c\u1165\u11ab\u110b\u116d\u11bc \u2014 `require_system_admin`" + }, + { + "label": "\uc778\uc99d \uc0ac\uc6a9\uc790 \uacf5\ud1b5 \u2014 `verify_session`", + "file_type": "document", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L39", + "_origin": "ast", + "id": "pages_a09_security_a09_backend_\uc778\uc99d_\uc0ac\uc6a9\uc790_\uacf5\ud1b5_verify_session", + "community": 6, + "community_name": "A09_Security \u2014 Backend", + "norm_label": "\u110b\u1175\u11ab\u110c\u1173\u11bc \u1109\u1161\u110b\u116d\u11bc\u110c\u1161 \u1100\u1169\u11bc\u1110\u1169\u11bc \u2014 `verify_session`" + }, + { + "label": "\uc694\uccad \uc2a4\ud0a4\ub9c8 (Pydantic)", + "file_type": "document", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L45", + "_origin": "ast", + "id": "pages_a09_security_a09_backend_\uc694\uccad_\uc2a4\ud0a4\ub9c8_pydantic", + "community": 6, + "community_name": "A09_Security \u2014 Backend", + "norm_label": "\u110b\u116d\u110e\u1165\u11bc \u1109\u1173\u110f\u1175\u1106\u1161 (pydantic)" + }, + { + "label": "DB \uc800\uc7a5 (activity_logs)", + "file_type": "document", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L55", + "_origin": "ast", + "id": "pages_a09_security_a09_backend_db_\uc800\uc7a5_activity_logs", + "community": 6, + "community_name": "A09_Security \u2014 Backend", + "norm_label": "db \u110c\u1165\u110c\u1161\u11bc (activity_logs)" + }, + { + "label": "\uad8c\ud55c \ud5ec\ud37c", + "file_type": "document", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L60", + "_origin": "ast", + "id": "pages_a09_security_a09_backend_\uad8c\ud55c_\ud5ec\ud37c", + "community": 6, + "community_name": "A09_Security \u2014 Backend", + "norm_label": "\u1100\u116f\u11ab\u1112\u1161\u11ab \u1112\u1166\u11af\u1111\u1165" + }, + { + "label": "\uc758\uc874\uc131 (\uacf5\ud1b5 \uc720\ud2f8)", + "file_type": "document", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L67", + "_origin": "ast", + "id": "pages_a09_security_a09_backend_\uc758\uc874\uc131_\uacf5\ud1b5_\uc720\ud2f8", + "community": 6, + "community_name": "A09_Security \u2014 Backend", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc (\u1100\u1169\u11bc\u1110\u1169\u11bc \u110b\u1172\u1110\u1175\u11af)" + }, + { + "label": "\ucc38\uace0", + "file_type": "document", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L73", + "_origin": "ast", + "id": "pages_a09_security_a09_backend_\ucc38\uace0", + "community": 6, + "community_name": "A09_Security \u2014 Backend", + "norm_label": "\u110e\u1161\u11b7\u1100\u1169" + }, + { + "label": "A09_frontend.md", + "file_type": "document", + "source_file": "pages/A09_Security/A09_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a09_security_a09_frontend", + "community": 18, + "community_name": "A09_Security \u2014 Frontend", + "norm_label": "a09_frontend.md" + }, + { + "label": "A09_Security \u2014 Frontend", + "file_type": "document", + "source_file": "pages/A09_Security/A09_frontend.md", + "source_location": "L8", + "_origin": "ast", + "id": "pages_a09_security_a09_frontend_a09_security_frontend", + "community": 18, + "community_name": "A09_Security \u2014 Frontend", + "norm_label": "a09_security \u2014 frontend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc870", + "file_type": "document", + "source_file": "pages/A09_Security/A09_frontend.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_a09_security_a09_frontend_\ud30c\uc77c_\uad6c\uc870", + "community": 18, + "community_name": "A09_Security \u2014 Frontend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "\ucef4\ud3ec\ub10c\ud2b8 / \ud568\uc218", + "file_type": "document", + "source_file": "pages/A09_Security/A09_frontend.md", + "source_location": "L25", + "_origin": "ast", + "id": "pages_a09_security_a09_frontend_\ucef4\ud3ec\ub10c\ud2b8_\ud568\uc218", + "community": 18, + "community_name": "A09_Security \u2014 Frontend", + "norm_label": "\u110f\u1165\u11b7\u1111\u1169\u1102\u1165\u11ab\u1110\u1173 / \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "\uc57d\uad00 \ub370\uc774\ud130 (A09_Security_Terms.ts)", + "file_type": "document", + "source_file": "pages/A09_Security/A09_frontend.md", + "source_location": "L31", + "_origin": "ast", + "id": "pages_a09_security_a09_frontend_\uc57d\uad00_\ub370\uc774\ud130_a09_security_terms_ts", + "community": 18, + "community_name": "A09_Security \u2014 Frontend", + "norm_label": "\u110b\u1163\u11a8\u1100\u116a\u11ab \u1103\u1166\u110b\u1175\u1110\u1165 (a09_security_terms.ts)" + }, + { + "label": "API \ud074\ub77c\uc774\uc5b8\ud2b8 \ud568\uc218 (\u26a0\ufe0f \ubbf8\uc0ac\uc6a9, \uc815\uc758\ub9cc)", + "file_type": "document", + "source_file": "pages/A09_Security/A09_frontend.md", + "source_location": "L40", + "_origin": "ast", + "id": "pages_a09_security_a09_frontend_api_\ud074\ub77c\uc774\uc5b8\ud2b8_\ud568\uc218_\ubbf8\uc0ac\uc6a9_\uc815\uc758\ub9cc", + "community": 18, + "community_name": "A09_Security \u2014 Frontend", + "norm_label": "api \u110f\u1173\u11af\u1105\u1161\u110b\u1175\u110b\u1165\u11ab\u1110\u1173 \u1112\u1161\u11b7\u1109\u116e (\u26a0\ufe0f \u1106\u1175\u1109\u1161\u110b\u116d\u11bc, \u110c\u1165\u11bc\u110b\u1174\u1106\u1161\u11ab)" + }, + { + "label": "\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "file_type": "document", + "source_file": "pages/A09_Security/A09_frontend.md", + "source_location": "L53", + "_origin": "ast", + "id": "pages_a09_security_a09_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "community": 18, + "community_name": "A09_Security \u2014 Frontend", + "norm_label": "\u1105\u1169\u110f\u1165\u11af\u1105\u1161\u110b\u1175\u110c\u1166\u110b\u1175\u1109\u1167\u11ab" + }, + { + "label": "\uc2a4\ud0c0\uc77c (CSS)", + "file_type": "document", + "source_file": "pages/A09_Security/A09_frontend.md", + "source_location": "L64", + "_origin": "ast", + "id": "pages_a09_security_a09_frontend_\uc2a4\ud0c0\uc77c_css", + "community": 18, + "community_name": "A09_Security \u2014 Frontend", + "norm_label": "\u1109\u1173\u1110\u1161\u110b\u1175\u11af (css)" + }, + { + "label": "\u26a0\ufe0f \uc57d\uad00 \ud14d\uc2a4\ud2b8\uc640 \uc2e4 \ucf54\ub4dc \ubd88\uc77c\uce58", + "file_type": "document", + "source_file": "pages/A09_Security/A09_frontend.md", + "source_location": "L69", + "_origin": "ast", + "id": "pages_a09_security_a09_frontend_\uc57d\uad00_\ud14d\uc2a4\ud2b8\uc640_\uc2e4_\ucf54\ub4dc_\ubd88\uc77c\uce58", + "community": 18, + "community_name": "A09_Security \u2014 Frontend", + "norm_label": "\u26a0\ufe0f \u110b\u1163\u11a8\u1100\u116a\u11ab \u1110\u1166\u11a8\u1109\u1173\u1110\u1173\u110b\u116a \u1109\u1175\u11af \u110f\u1169\u1103\u1173 \u1107\u116e\u11af\u110b\u1175\u11af\u110e\u1175" + }, + { + "label": "\uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/A09_Security/A09_frontend.md", + "source_location": "L75", + "_origin": "ast", + "id": "pages_a09_security_a09_frontend_\uc758\uc874\uc131", + "community": 18, + "community_name": "A09_Security \u2014 Frontend", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "A09_Security_Router.md", + "file_type": "document", + "source_file": "pages/A09_Security/backend/A09_Security_Router.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_a09_security_backend_a09_security_router", + "community": 121, + "community_name": "A09_Security_Router.md", + "norm_label": "a09_security_router.md" + }, + { + "label": "A09_Security_Router.py", + "file_type": "document", + "source_file": "pages/A09_Security/backend/A09_Security_Router.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_a09_security_backend_a09_security_router_a09_security_router_py", + "community": 121, + "community_name": "A09_Security_Router.md", + "norm_label": "a09_security_router.py" + }, + { + "label": "\ud83d\udee0\ufe0f \ub77c\uc6b0\ud130 API \ubc0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/A09_Security/backend/A09_Security_Router.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_a09_security_backend_a09_security_router_\ub77c\uc6b0\ud130_api_\ubc0f_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 121, + "community_name": "A09_Security_Router.md", + "norm_label": "\ud83d\udee0\ufe0f \u1105\u1161\u110b\u116e\u1110\u1165 api \u1106\u1175\u11be \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/A09_Security/backend/A09_Security_Router.md", + "source_location": "L28", + "_origin": "ast", + "id": "pages_a09_security_backend_a09_security_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 121, + "community_name": "A09_Security_Router.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B01_api.md", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_api.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_api", + "community": 50, + "community_name": "B01_Dashboard \u2014 API", + "norm_label": "b01_api.md" + }, + { + "label": "B01_Dashboard \u2014 API", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_api.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_api_b01_dashboard_api", + "community": 50, + "community_name": "B01_Dashboard \u2014 API", + "norm_label": "b01_dashboard \u2014 api" + }, + { + "label": "\uc0ac\uc6a9\uc790\u00b7\ud68c\uc0ac", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_api.md", + "source_location": "L16", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_api_\uc0ac\uc6a9\uc790_\ud68c\uc0ac", + "community": 50, + "community_name": "B01_Dashboard \u2014 API", + "norm_label": "\u1109\u1161\u110b\u116d\u11bc\u110c\u1161\u00b7\u1112\u116c\u1109\u1161" + }, + { + "label": "\ud68c\uc0ac \uad00\ub9ac\uc790", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_api.md", + "source_location": "L27", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_api_\ud68c\uc0ac_\uad00\ub9ac\uc790", + "community": 50, + "community_name": "B01_Dashboard \u2014 API", + "norm_label": "\u1112\u116c\u1109\u1161 \u1100\u116a\u11ab\u1105\u1175\u110c\u1161" + }, + { + "label": "\ud504\ub85c\uc81d\ud2b8\u00b7\uc790\ub3d9\ud654", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_api.md", + "source_location": "L37", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_api_\ud504\ub85c\uc81d\ud2b8_\uc790\ub3d9\ud654", + "community": 50, + "community_name": "B01_Dashboard \u2014 API", + "norm_label": "\u1111\u1173\u1105\u1169\u110c\u1166\u11a8\u1110\u1173\u00b7\u110c\u1161\u1103\u1169\u11bc\u1112\u116a" + }, + { + "label": "\uc2dc\uc2a4\ud15c \uad00\ub9ac\uc790", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_api.md", + "source_location": "L48", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_api_\uc2dc\uc2a4\ud15c_\uad00\ub9ac\uc790", + "community": 50, + "community_name": "B01_Dashboard \u2014 API", + "norm_label": "\u1109\u1175\u1109\u1173\u1110\u1166\u11b7 \u1100\u116a\u11ab\u1105\u1175\u110c\u1161" + }, + { + "label": "B01_backend.md", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_backend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_backend", + "community": 35, + "community_name": "B01_Dashboard \u2014 Backend", + "norm_label": "b01_backend.md" + }, + { + "label": "B01_Dashboard \u2014 Backend", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_backend.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_backend_b01_dashboard_backend", + "community": 35, + "community_name": "B01_Dashboard \u2014 Backend", + "norm_label": "b01_dashboard \u2014 backend" + }, + { + "label": "\uc138\ubd84\ud654 \ubc31\uc5d4\ub4dc \uc704\ud0a4 \uba85\uc138", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_backend.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_backend_\uc138\ubd84\ud654_\ubc31\uc5d4\ub4dc_\uc704\ud0a4_\uba85\uc138", + "community": 35, + "community_name": "B01_Dashboard \u2014 Backend", + "norm_label": "\u1109\u1166\u1107\u116e\u11ab\u1112\u116a \u1107\u1162\u11a8\u110b\u1166\u11ab\u1103\u1173 \u110b\u1171\u110f\u1175 \u1106\u1167\u11bc\u1109\u1166" + }, + { + "label": "\ub77c\uc6b0\ud130 \uad8c\ud55c \ud5ec\ud37c", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_backend.md", + "source_location": "L18", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_backend_\ub77c\uc6b0\ud130_\uad8c\ud55c_\ud5ec\ud37c", + "community": 35, + "community_name": "B01_Dashboard \u2014 Backend", + "norm_label": "\u1105\u1161\u110b\u116e\u1110\u1165 \u1100\u116f\u11ab\u1112\u1161\u11ab \u1112\u1166\u11af\u1111\u1165" + }, + { + "label": "\uc800\uc7a5\uc18c \ubc0f \uc0ad\uc81c \ud568\uc218", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_backend.md", + "source_location": "L30", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_backend_\uc800\uc7a5\uc18c_\ubc0f_\uc0ad\uc81c_\ud568\uc218", + "community": 35, + "community_name": "B01_Dashboard \u2014 Backend", + "norm_label": "\u110c\u1165\u110c\u1161\u11bc\u1109\u1169 \u1106\u1175\u11be \u1109\u1161\u11a8\u110c\u1166 \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "\uc694\uccad \uc2a4\ud0a4\ub9c8", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_backend.md", + "source_location": "L51", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_backend_\uc694\uccad_\uc2a4\ud0a4\ub9c8", + "community": 35, + "community_name": "B01_Dashboard \u2014 Backend", + "norm_label": "\u110b\u116d\u110e\u1165\u11bc \u1109\u1173\u110f\u1175\u1106\u1161" + }, + { + "label": "\uae30\uc220\ubd80\ucc44", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_backend.md", + "source_location": "L61", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_backend_\uae30\uc220\ubd80\ucc44", + "community": 35, + "community_name": "B01_Dashboard \u2014 Backend", + "norm_label": "\u1100\u1175\u1109\u116e\u11af\u1107\u116e\u110e\u1162" + }, + { + "label": "B01_db.md", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_db.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_db", + "community": 122, + "community_name": "B01_Dashboard \u2014 DB \uc0ac\uc6a9 \uad00\uacc4", + "norm_label": "b01_db.md" + }, + { + "label": "B01_Dashboard \u2014 DB \uc0ac\uc6a9 \uad00\uacc4", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_db.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_db_b01_dashboard_db_\uc0ac\uc6a9_\uad00\uacc4", + "community": 122, + "community_name": "B01_Dashboard \u2014 DB \uc0ac\uc6a9 \uad00\uacc4", + "norm_label": "b01_dashboard \u2014 db \u1109\u1161\u110b\u116d\u11bc \u1100\u116a\u11ab\u1100\u1168" + }, + { + "label": "\ud2b8\ub79c\uc7ad\uc158 \uacbd\uacc4", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_db.md", + "source_location": "L25", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_db_\ud2b8\ub79c\uc7ad\uc158_\uacbd\uacc4", + "community": 122, + "community_name": "B01_Dashboard \u2014 DB \uc0ac\uc6a9 \uad00\uacc4", + "norm_label": "\u1110\u1173\u1105\u1162\u11ab\u110c\u1162\u11a8\u1109\u1167\u11ab \u1100\u1167\u11bc\u1100\u1168" + }, + { + "label": "B01_dependencies.md", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_dependencies.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_dependencies", + "community": 123, + "community_name": "B01_Dashboard \u2014 Dependencies", + "norm_label": "b01_dependencies.md" + }, + { + "label": "B01_Dashboard \u2014 Dependencies", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_dependencies.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_dependencies_b01_dashboard_dependencies", + "community": 123, + "community_name": "B01_Dashboard \u2014 Dependencies", + "norm_label": "b01_dashboard \u2014 dependencies" + }, + { + "label": "\ud504\ub85c\uc81d\ud2b8 \uacf5\ud1b5 \ubaa8\ub4c8", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_dependencies.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_dependencies_\ud504\ub85c\uc81d\ud2b8_\uacf5\ud1b5_\ubaa8\ub4c8", + "community": 123, + "community_name": "B01_Dashboard \u2014 Dependencies", + "norm_label": "\u1111\u1173\u1105\u1169\u110c\u1166\u11a8\u1110\u1173 \u1100\u1169\u11bc\u1110\u1169\u11bc \u1106\u1169\u1103\u1172\u11af" + }, + { + "label": "B01_frontend.md", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_frontend", + "community": 36, + "community_name": "B01_Dashboard \u2014 Frontend", + "norm_label": "b01_frontend.md" + }, + { + "label": "B01_Dashboard \u2014 Frontend", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_frontend.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_frontend_b01_dashboard_frontend", + "community": 36, + "community_name": "B01_Dashboard \u2014 Frontend", + "norm_label": "b01_dashboard \u2014 frontend" + }, + { + "label": "\ud30c\uc77c\uacfc \uc9c4\uc785\uc810", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_frontend.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_frontend_\ud30c\uc77c\uacfc_\uc9c4\uc785\uc810", + "community": 36, + "community_name": "B01_Dashboard \u2014 Frontend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af\u1100\u116a \u110c\u1175\u11ab\u110b\u1175\u11b8\u110c\u1165\u11b7" + }, + { + "label": "\ubd84\ud560\ub41c UI \ucef4\ud3ec\ub10c\ud2b8 \ud30c\uc77c", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_frontend.md", + "source_location": "L20", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_frontend_\ubd84\ud560\ub41c_ui_\ucef4\ud3ec\ub10c\ud2b8_\ud30c\uc77c", + "community": 36, + "community_name": "B01_Dashboard \u2014 Frontend", + "norm_label": "\u1107\u116e\u11ab\u1112\u1161\u11af\u1103\u116c\u11ab ui \u110f\u1165\u11b7\u1111\u1169\u1102\u1165\u11ab\u1110\u1173 \u1111\u1161\u110b\u1175\u11af" + }, + { + "label": "UI \uad8c\ud55c \ud5ec\ud37c", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_frontend.md", + "source_location": "L33", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_frontend_ui_\uad8c\ud55c_\ud5ec\ud37c", + "community": 36, + "community_name": "B01_Dashboard \u2014 Frontend", + "norm_label": "ui \u1100\u116f\u11ab\u1112\u1161\u11ab \u1112\u1166\u11af\u1111\u1165" + }, + { + "label": "\ubaa8\ub2ec", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_frontend.md", + "source_location": "L45", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_frontend_\ubaa8\ub2ec", + "community": 36, + "community_name": "B01_Dashboard \u2014 Frontend", + "norm_label": "\u1106\u1169\u1103\u1161\u11af" + }, + { + "label": "\uacf5\uc720 \uc790\uc6d0 \uc5f0\uacb0", + "file_type": "document", + "source_file": "pages/B01_Dashboard/B01_frontend.md", + "source_location": "L59", + "_origin": "ast", + "id": "pages_b01_dashboard_b01_frontend_\uacf5\uc720_\uc790\uc6d0_\uc5f0\uacb0", + "community": 36, + "community_name": "B01_Dashboard \u2014 Frontend", + "norm_label": "\u1100\u1169\u11bc\u110b\u1172 \u110c\u1161\u110b\u116f\u11ab \u110b\u1167\u11ab\u1100\u1167\u11af" + }, + { + "label": "B01_Dashboard_Router.md", + "file_type": "document", + "source_file": "pages/B01_Dashboard/backend/B01_Dashboard_Router.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b01_dashboard_backend_b01_dashboard_router", + "community": 124, + "community_name": "B01_Dashboard_Router.md", + "norm_label": "b01_dashboard_router.md" + }, + { + "label": "B01_Dashboard_Router.py", + "file_type": "document", + "source_file": "pages/B01_Dashboard/backend/B01_Dashboard_Router.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b01_dashboard_backend_b01_dashboard_router_b01_dashboard_router_py", + "community": 124, + "community_name": "B01_Dashboard_Router.md", + "norm_label": "b01_dashboard_router.py" + }, + { + "label": "\ud83d\udee0\ufe0f \ub77c\uc6b0\ud130 API \ubc0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B01_Dashboard/backend/B01_Dashboard_Router.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b01_dashboard_backend_b01_dashboard_router_\ub77c\uc6b0\ud130_api_\ubc0f_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 124, + "community_name": "B01_Dashboard_Router.md", + "norm_label": "\ud83d\udee0\ufe0f \u1105\u1161\u110b\u116e\u1110\u1165 api \u1106\u1175\u11be \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B01_Dashboard/backend/B01_Dashboard_Router.md", + "source_location": "L26", + "_origin": "ast", + "id": "pages_b01_dashboard_backend_b01_dashboard_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 124, + "community_name": "B01_Dashboard_Router.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B01_Dashboard_UI_Page.md", + "file_type": "document", + "source_file": "pages/B01_Dashboard/frontend/B01_Dashboard_UI_Page.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b01_dashboard_frontend_b01_dashboard_ui_page", + "community": 125, + "community_name": "B01_Dashboard_UI_Page.md", + "norm_label": "b01_dashboard_ui_page.md" + }, + { + "label": "B01_Dashboard_UI_Page.ts", + "file_type": "document", + "source_file": "pages/B01_Dashboard/frontend/B01_Dashboard_UI_Page.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b01_dashboard_frontend_b01_dashboard_ui_page_b01_dashboard_ui_page_ts", + "community": 125, + "community_name": "B01_Dashboard_UI_Page.md", + "norm_label": "b01_dashboard_ui_page.ts" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B01_Dashboard/frontend/B01_Dashboard_UI_Page.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b01_dashboard_frontend_b01_dashboard_ui_page_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 125, + "community_name": "B01_Dashboard_UI_Page.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B01_Dashboard/frontend/B01_Dashboard_UI_Page.md", + "source_location": "L20", + "_origin": "ast", + "id": "pages_b01_dashboard_frontend_b01_dashboard_ui_page_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 125, + "community_name": "B01_Dashboard_UI_Page.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B02_backend.md", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_backend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b02_projregister_b02_backend", + "community": 19, + "community_name": "B02_ProjRegister \u2014 Backend", + "norm_label": "b02_backend.md" + }, + { + "label": "B02_ProjRegister \u2014 Backend", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_backend.md", + "source_location": "L8", + "_origin": "ast", + "id": "pages_b02_projregister_b02_backend_b02_projregister_backend", + "community": 19, + "community_name": "B02_ProjRegister \u2014 Backend", + "norm_label": "b02_projregister \u2014 backend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc870", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_backend.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b02_projregister_b02_backend_\ud30c\uc77c_\uad6c\uc870", + "community": 19, + "community_name": "B02_ProjRegister \u2014 Backend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "API \uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_backend.md", + "source_location": "L22", + "_origin": "ast", + "id": "pages_b02_projregister_b02_backend_api_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "community": 19, + "community_name": "B02_ProjRegister \u2014 Backend", + "norm_label": "api \u110b\u1166\u11ab\u1103\u1173\u1111\u1169\u110b\u1175\u11ab\u1110\u1173" + }, + { + "label": "\ud568\uc218", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_backend.md", + "source_location": "L28", + "_origin": "ast", + "id": "pages_b02_projregister_b02_backend_\ud568\uc218", + "community": 19, + "community_name": "B02_ProjRegister \u2014 Backend", + "norm_label": "\u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "\uc694\uccad/\uc751\ub2f5 \uc2a4\ud0a4\ub9c8 (Pydantic)", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_backend.md", + "source_location": "L38", + "_origin": "ast", + "id": "pages_b02_projregister_b02_backend_\uc694\uccad_\uc751\ub2f5_\uc2a4\ud0a4\ub9c8_pydantic", + "community": 19, + "community_name": "B02_ProjRegister \u2014 Backend", + "norm_label": "\u110b\u116d\u110e\u1165\u11bc/\u110b\u1173\u11bc\u1103\u1161\u11b8 \u1109\u1173\u110f\u1175\u1106\u1161 (pydantic)" + }, + { + "label": "\uc0dd\uc131 \ub85c\uc9c1 (create_project \ud2b8\ub79c\uc7ad\uc158)", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_backend.md", + "source_location": "L45", + "_origin": "ast", + "id": "pages_b02_projregister_b02_backend_\uc0dd\uc131_\ub85c\uc9c1_create_project_\ud2b8\ub79c\uc7ad\uc158", + "community": 19, + "community_name": "B02_ProjRegister \u2014 Backend", + "norm_label": "\u1109\u1162\u11bc\u1109\u1165\u11bc \u1105\u1169\u110c\u1175\u11a8 (create_project \u1110\u1173\u1105\u1162\u11ab\u110c\u1162\u11a8\u1109\u1167\u11ab)" + }, + { + "label": "DB \uc800\uc7a5 \uceec\ub7fc (projects INSERT)", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_backend.md", + "source_location": "L56", + "_origin": "ast", + "id": "pages_b02_projregister_b02_backend_db_\uc800\uc7a5_\uceec\ub7fc_projects_insert", + "community": 19, + "community_name": "B02_ProjRegister \u2014 Backend", + "norm_label": "db \u110c\u1165\u110c\u1161\u11bc \u110f\u1165\u11af\u1105\u1165\u11b7 (projects insert)" + }, + { + "label": "\uc758\uc874\uc131 (\uacf5\ud1b5 \uc720\ud2f8)", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_backend.md", + "source_location": "L61", + "_origin": "ast", + "id": "pages_b02_projregister_b02_backend_\uc758\uc874\uc131_\uacf5\ud1b5_\uc720\ud2f8", + "community": 19, + "community_name": "B02_ProjRegister \u2014 Backend", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc (\u1100\u1169\u11bc\u1110\u1169\u11bc \u110b\u1172\u1110\u1175\u11af)" + }, + { + "label": "\ucc38\uace0", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_backend.md", + "source_location": "L69", + "_origin": "ast", + "id": "pages_b02_projregister_b02_backend_\ucc38\uace0", + "community": 19, + "community_name": "B02_ProjRegister \u2014 Backend", + "norm_label": "\u110e\u1161\u11b7\u1100\u1169" + }, + { + "label": "B02_db.md", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_db.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b02_projregister_b02_db", + "community": 62, + "community_name": "B02_ProjRegister \u2014 DB", + "norm_label": "b02_db.md" + }, + { + "label": "B02_ProjRegister \u2014 DB", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_db.md", + "source_location": "L8", + "_origin": "ast", + "id": "pages_b02_projregister_b02_db_b02_projregister_db", + "community": 62, + "community_name": "B02_ProjRegister \u2014 DB", + "norm_label": "b02_projregister \u2014 db" + }, + { + "label": "\uc4f0\ub294 \ud14c\uc774\ube14", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_db.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b02_projregister_b02_db_\uc4f0\ub294_\ud14c\uc774\ube14", + "community": 62, + "community_name": "B02_ProjRegister \u2014 DB", + "norm_label": "\u110a\u1173\u1102\u1173\u11ab \u1110\u1166\u110b\u1175\u1107\u1173\u11af" + }, + { + "label": "\uc800\uc7a5\uc18c(\ud30c\uc77c\uc2dc\uc2a4\ud15c)", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_db.md", + "source_location": "L20", + "_origin": "ast", + "id": "pages_b02_projregister_b02_db_\uc800\uc7a5\uc18c_\ud30c\uc77c\uc2dc\uc2a4\ud15c", + "community": 62, + "community_name": "B02_ProjRegister \u2014 DB", + "norm_label": "\u110c\u1165\u110c\u1161\u11bc\u1109\u1169(\u1111\u1161\u110b\u1175\u11af\u1109\u1175\u1109\u1173\u1110\u1166\u11b7)" + }, + { + "label": "\ucc38\uace0 (\uacc4\ud68d \ub2f9\uc2dc \uc758\ub3c4)", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_db.md", + "source_location": "L26", + "_origin": "ast", + "id": "pages_b02_projregister_b02_db_\ucc38\uace0_\uacc4\ud68d_\ub2f9\uc2dc_\uc758\ub3c4", + "community": 62, + "community_name": "B02_ProjRegister \u2014 DB", + "norm_label": "\u110e\u1161\u11b7\u1100\u1169 (\u1100\u1168\u1112\u116c\u11a8 \u1103\u1161\u11bc\u1109\u1175 \u110b\u1174\u1103\u1169)" + }, + { + "label": "B02_frontend.md", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b02_projregister_b02_frontend", + "community": 13, + "community_name": "B02_ProjRegister \u2014 Frontend", + "norm_label": "b02_frontend.md" + }, + { + "label": "B02_ProjRegister \u2014 Frontend", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L8", + "_origin": "ast", + "id": "pages_b02_projregister_b02_frontend_b02_projregister_frontend", + "community": 13, + "community_name": "B02_ProjRegister \u2014 Frontend", + "norm_label": "b02_projregister \u2014 frontend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc870", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b02_projregister_b02_frontend_\ud30c\uc77c_\uad6c\uc870", + "community": 13, + "community_name": "B02_ProjRegister \u2014 Frontend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "\ucef4\ud3ec\ub10c\ud2b8 / \ud568\uc218", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L19", + "_origin": "ast", + "id": "pages_b02_projregister_b02_frontend_\ucef4\ud3ec\ub10c\ud2b8_\ud568\uc218", + "community": 13, + "community_name": "B02_ProjRegister \u2014 Frontend", + "norm_label": "\u110f\u1165\u11b7\u1111\u1169\u1102\u1165\u11ab\u1110\u1173 / \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "\uc785\ub825 \ud544\ub4dc", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L26", + "_origin": "ast", + "id": "pages_b02_projregister_b02_frontend_\uc785\ub825_\ud544\ub4dc", + "community": 13, + "community_name": "B02_ProjRegister \u2014 Frontend", + "norm_label": "\u110b\u1175\u11b8\u1105\u1167\u11a8 \u1111\u1175\u11af\u1103\u1173" + }, + { + "label": "\uc81c\ucd9c \ub85c\uc9c1", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L37", + "_origin": "ast", + "id": "pages_b02_projregister_b02_frontend_\uc81c\ucd9c_\ub85c\uc9c1", + "community": 13, + "community_name": "B02_ProjRegister \u2014 Frontend", + "norm_label": "\u110c\u1166\u110e\u116e\u11af \u1105\u1169\u110c\u1175\u11a8" + }, + { + "label": "\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L45", + "_origin": "ast", + "id": "pages_b02_projregister_b02_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "community": 13, + "community_name": "B02_ProjRegister \u2014 Frontend", + "norm_label": "\u1105\u1169\u110f\u1165\u11af\u1105\u1161\u110b\u1175\u110c\u1166\u110b\u1175\u1109\u1167\u11ab" + }, + { + "label": "\uc2a4\ud0c0\uc77c (CSS)", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L57", + "_origin": "ast", + "id": "pages_b02_projregister_b02_frontend_\uc2a4\ud0c0\uc77c_css", + "community": 13, + "community_name": "B02_ProjRegister \u2014 Frontend", + "norm_label": "\u1109\u1173\u1110\u1161\u110b\u1175\u11af (css)" + }, + { + "label": "\uc774\ubca4\ud2b8 \ud578\ub4e4\ub7ec", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L66", + "_origin": "ast", + "id": "pages_b02_projregister_b02_frontend_\uc774\ubca4\ud2b8_\ud578\ub4e4\ub7ec", + "community": 13, + "community_name": "B02_ProjRegister \u2014 Frontend", + "norm_label": "\u110b\u1175\u1107\u1166\u11ab\u1110\u1173 \u1112\u1162\u11ab\u1103\u1173\u11af\u1105\u1165" + }, + { + "label": "\uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L72", + "_origin": "ast", + "id": "pages_b02_projregister_b02_frontend_\uc758\uc874\uc131", + "community": 13, + "community_name": "B02_ProjRegister \u2014 Frontend", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "\ucc38\uace0", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L80", + "_origin": "ast", + "id": "pages_b02_projregister_b02_frontend_\ucc38\uace0", + "community": 13, + "community_name": "B02_ProjRegister \u2014 Frontend", + "norm_label": "\u110e\u1161\u11b7\u1100\u1169" + }, + { + "label": "B02_ProjRegister_Router.md", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/backend/B02_ProjRegister_Router.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b02_projregister_backend_b02_projregister_router", + "community": 126, + "community_name": "B02_ProjRegister_Router.md", + "norm_label": "b02_projregister_router.md" + }, + { + "label": "B02_ProjRegister_Router.py", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/backend/B02_ProjRegister_Router.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b02_projregister_backend_b02_projregister_router_b02_projregister_router_py", + "community": 126, + "community_name": "B02_ProjRegister_Router.md", + "norm_label": "b02_projregister_router.py" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/backend/B02_ProjRegister_Router.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b02_projregister_backend_b02_projregister_router_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 126, + "community_name": "B02_ProjRegister_Router.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B02_ProjRegister/backend/B02_ProjRegister_Router.md", + "source_location": "L20", + "_origin": "ast", + "id": "pages_b02_projregister_backend_b02_projregister_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 126, + "community_name": "B02_ProjRegister_Router.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B03_FileInput_plan_lidar_multi_file.md", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_FileInput_plan_lidar_multi_file.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_fileinput_plan_lidar_multi_file", + "community": 149, + "community_name": "B03_FileInput_plan_lidar_multi_file.md", + "norm_label": "b03_fileinput_plan_lidar_multi_file.md" + }, + { + "label": "B03 \ub2e4\uc911 \ub77c\uc774\ub2e4 \ud30c\uc77c\u00b7\ub300\uc6a9\ub7c9 \ucc98\ub9ac \ubcf4\ub958 \uacc4\ud68d", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_FileInput_plan_lidar_multi_file.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_fileinput_plan_lidar_multi_file_b03_\ub2e4\uc911_\ub77c\uc774\ub2e4_\ud30c\uc77c_\ub300\uc6a9\ub7c9_\ucc98\ub9ac_\ubcf4\ub958_\uacc4\ud68d", + "community": 149, + "community_name": "B03_FileInput_plan_lidar_multi_file.md", + "norm_label": "b03 \u1103\u1161\u110c\u116e\u11bc \u1105\u1161\u110b\u1175\u1103\u1161 \u1111\u1161\u110b\u1175\u11af\u00b7\u1103\u1162\u110b\u116d\u11bc\u1105\u1163\u11bc \u110e\u1165\u1105\u1175 \u1107\u1169\u1105\u1172 \u1100\u1168\u1112\u116c\u11a8" + }, + { + "label": "B03_api.md", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_api.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_api", + "community": 63, + "community_name": "B03_FileInput \u2014 API", + "norm_label": "b03_api.md" + }, + { + "label": "B03_FileInput \u2014 API", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_api.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_api_b03_fileinput_api", + "community": 63, + "community_name": "B03_FileInput \u2014 API", + "norm_label": "b03_fileinput \u2014 api" + }, + { + "label": "\uc77c\ubc18 \uc5c5\ub85c\ub4dc", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_api.md", + "source_location": "L16", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_api_\uc77c\ubc18_\uc5c5\ub85c\ub4dc", + "community": 63, + "community_name": "B03_FileInput \u2014 API", + "norm_label": "\u110b\u1175\u11af\u1107\u1161\u11ab \u110b\u1165\u11b8\u1105\u1169\u1103\u1173" + }, + { + "label": "\uccad\ud06c \uc5c5\ub85c\ub4dc", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_api.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_api_\uccad\ud06c_\uc5c5\ub85c\ub4dc", + "community": 63, + "community_name": "B03_FileInput \u2014 API", + "norm_label": "\u110e\u1165\u11bc\u110f\u1173 \u110b\u1165\u11b8\u1105\u1169\u1103\u1173" + }, + { + "label": "workflow \uc870\ud68c", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_api.md", + "source_location": "L29", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_api_workflow_\uc870\ud68c", + "community": 63, + "community_name": "B03_FileInput \u2014 API", + "norm_label": "workflow \u110c\u1169\u1112\u116c" + }, + { + "label": "B03_backend.md", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_backend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_backend", + "community": 37, + "community_name": "B03_FileInput \u2014 Backend", + "norm_label": "b03_backend.md" + }, + { + "label": "B03_FileInput \u2014 Backend", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_backend.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_backend_b03_fileinput_backend", + "community": 37, + "community_name": "B03_FileInput \u2014 Backend", + "norm_label": "b03_fileinput \u2014 backend" + }, + { + "label": "\uc785\ub825 \uac80\uc99d\u00b7\ud30c\uc77c \ucc98\ub9ac", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_backend.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_backend_\uc785\ub825_\uac80\uc99d_\ud30c\uc77c_\ucc98\ub9ac", + "community": 37, + "community_name": "B03_FileInput \u2014 Backend", + "norm_label": "\u110b\u1175\u11b8\u1105\u1167\u11a8 \u1100\u1165\u11b7\u110c\u1173\u11bc\u00b7\u1111\u1161\u110b\u1175\u11af \u110e\u1165\u1105\u1175" + }, + { + "label": "\uba54\ud0c0\ub370\uc774\ud130 \ubd84\uc11d \ubc0f \ud30c\uc77c \uc9c0\ubb38", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_backend.md", + "source_location": "L26", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_backend_\uba54\ud0c0\ub370\uc774\ud130_\ubd84\uc11d_\ubc0f_\ud30c\uc77c_\uc9c0\ubb38", + "community": 37, + "community_name": "B03_FileInput \u2014 Backend", + "norm_label": "\u1106\u1166\u1110\u1161\u1103\u1166\u110b\u1175\u1110\u1165 \u1107\u116e\u11ab\u1109\u1165\u11a8 \u1106\u1175\u11be \u1111\u1161\u110b\u1175\u11af \u110c\u1175\u1106\u116e\u11ab" + }, + { + "label": "\uc784\uc2dc \ubcf4\uad00\ud568 (R2 Temp Upload)", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_backend.md", + "source_location": "L37", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_backend_\uc784\uc2dc_\ubcf4\uad00\ud568_r2_temp_upload", + "community": 37, + "community_name": "B03_FileInput \u2014 Backend", + "norm_label": "\u110b\u1175\u11b7\u1109\u1175 \u1107\u1169\u1100\u116a\u11ab\u1112\u1161\u11b7 (r2 temp upload)" + }, + { + "label": "\uc800\uc7a5\uc18c \ubc0f \ucd08\uae30\ud654", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_backend.md", + "source_location": "L45", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_backend_\uc800\uc7a5\uc18c_\ubc0f_\ucd08\uae30\ud654", + "community": 37, + "community_name": "B03_FileInput \u2014 Backend", + "norm_label": "\u110c\u1165\u110c\u1161\u11bc\u1109\u1169 \u1106\u1175\u11be \u110e\u1169\u1100\u1175\u1112\u116a" + }, + { + "label": "workflow\u00b7\uc54c\ub9bc", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_backend.md", + "source_location": "L54", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_backend_workflow_\uc54c\ub9bc", + "community": 37, + "community_name": "B03_FileInput \u2014 Backend", + "norm_label": "workflow\u00b7\u110b\u1161\u11af\u1105\u1175\u11b7" + }, + { + "label": "B03_db.md", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_db.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_db", + "community": 127, + "community_name": "B03_FileInput \u2014 DB \uc0ac\uc6a9 \uad00\uacc4", + "norm_label": "b03_db.md" + }, + { + "label": "B03_FileInput \u2014 DB \uc0ac\uc6a9 \uad00\uacc4", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_db.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_db_b03_fileinput_db_\uc0ac\uc6a9_\uad00\uacc4", + "community": 127, + "community_name": "B03_FileInput \u2014 DB \uc0ac\uc6a9 \uad00\uacc4", + "norm_label": "b03_fileinput \u2014 db \u1109\u1161\u110b\u116d\u11bc \u1100\u116a\u11ab\u1100\u1168" + }, + { + "label": "\ud30c\uc77c \uacbd\ub85c", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_db.md", + "source_location": "L22", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_db_\ud30c\uc77c_\uacbd\ub85c", + "community": 127, + "community_name": "B03_FileInput \u2014 DB \uc0ac\uc6a9 \uad00\uacc4", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u1167\u11bc\u1105\u1169" + }, + { + "label": "B03_dependencies.md", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_dependencies.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_dependencies", + "community": 128, + "community_name": "B03_FileInput \u2014 Dependencies", + "norm_label": "b03_dependencies.md" + }, + { + "label": "B03_FileInput \u2014 Dependencies", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_dependencies.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_dependencies_b03_fileinput_dependencies", + "community": 128, + "community_name": "B03_FileInput \u2014 Dependencies", + "norm_label": "b03_fileinput \u2014 dependencies" + }, + { + "label": "\uacf5\ud1b5 \ubaa8\ub4c8", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_dependencies.md", + "source_location": "L24", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_dependencies_\uacf5\ud1b5_\ubaa8\ub4c8", + "community": 128, + "community_name": "B03_FileInput \u2014 Dependencies", + "norm_label": "\u1100\u1169\u11bc\u1110\u1169\u11bc \u1106\u1169\u1103\u1172\u11af" + }, + { + "label": "B03_frontend.md", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_frontend", + "community": 51, + "community_name": "B03_FileInput \u2014 Frontend", + "norm_label": "b03_frontend.md" + }, + { + "label": "B03_FileInput \u2014 Frontend", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_frontend.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_frontend_b03_fileinput_frontend", + "community": 51, + "community_name": "B03_FileInput \u2014 Frontend", + "norm_label": "b03_fileinput \u2014 frontend" + }, + { + "label": "\ud398\uc774\uc9c0\u00b7\uc5c5\ub85c\ub4dc \ud750\ub984", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_frontend.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_frontend_\ud398\uc774\uc9c0_\uc5c5\ub85c\ub4dc_\ud750\ub984", + "community": 51, + "community_name": "B03_FileInput \u2014 Frontend", + "norm_label": "\u1111\u1166\u110b\u1175\u110c\u1175\u00b7\u110b\u1165\u11b8\u1105\u1169\u1103\u1173 \u1112\u1173\u1105\u1173\u11b7" + }, + { + "label": "UI \uc9c0\uc6d0 \uc720\ud2f8\ub9ac\ud2f0 (\ubd84\ud560 \uc644\ub8cc)", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_frontend.md", + "source_location": "L25", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_frontend_ui_\uc9c0\uc6d0_\uc720\ud2f8\ub9ac\ud2f0_\ubd84\ud560_\uc644\ub8cc", + "community": 51, + "community_name": "B03_FileInput \u2014 Frontend", + "norm_label": "ui \u110c\u1175\u110b\u116f\u11ab \u110b\u1172\u1110\u1175\u11af\u1105\u1175\u1110\u1175 (\u1107\u116e\u11ab\u1112\u1161\u11af \u110b\u116a\u11ab\u1105\u116d)" + }, + { + "label": "API \ud074\ub77c\uc774\uc5b8\ud2b8", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_frontend.md", + "source_location": "L30", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_frontend_api_\ud074\ub77c\uc774\uc5b8\ud2b8", + "community": 51, + "community_name": "B03_FileInput \u2014 Frontend", + "norm_label": "api \u110f\u1173\u11af\u1105\u1161\u110b\u1175\u110b\u1165\u11ab\u1110\u1173" + }, + { + "label": "\ube0c\ub77c\uc6b0\uc800 \uc0c1\ud0dc\u00b7\uc624\ud504\ub77c\uc778 \ubcf4\uc870", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_frontend.md", + "source_location": "L40", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_frontend_\ube0c\ub77c\uc6b0\uc800_\uc0c1\ud0dc_\uc624\ud504\ub77c\uc778_\ubcf4\uc870", + "community": 51, + "community_name": "B03_FileInput \u2014 Frontend", + "norm_label": "\u1107\u1173\u1105\u1161\u110b\u116e\u110c\u1165 \u1109\u1161\u11bc\u1110\u1162\u00b7\u110b\u1169\u1111\u1173\u1105\u1161\u110b\u1175\u11ab \u1107\u1169\u110c\u1169" + }, + { + "label": "B03_route_snapshot_crs.md", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_route_snapshot_crs.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_route_snapshot_crs", + "community": 163, + "community_name": "B05 \uad6c\uc870\ubb3c 3D \ud22c\uc601 \ucee4\ube0c", + "norm_label": "b03_route_snapshot_crs.md" + }, + { + "label": "B03 \uacc4\ud68d\ub178\uc120 \uc815\ubcf8\u00b7\uc88c\ud45c\uacc4 \ud6c4\uc18d", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_route_snapshot_crs.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_route_snapshot_crs_b03_\uacc4\ud68d\ub178\uc120_\uc815\ubcf8_\uc88c\ud45c\uacc4_\ud6c4\uc18d", + "community": 163, + "community_name": "B05 \uad6c\uc870\ubb3c 3D \ud22c\uc601 \ucee4\ube0c", + "norm_label": "b03 \u1100\u1168\u1112\u116c\u11a8\u1102\u1169\u1109\u1165\u11ab \u110c\u1165\u11bc\u1107\u1169\u11ab\u00b7\u110c\u116a\u1111\u116d\u1100\u1168 \u1112\u116e\u1109\u1169\u11a8" + }, + { + "label": "\uacc4\ud68d\ub178\uc120 \uc815\ubcf8", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_route_snapshot_crs.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_route_snapshot_crs_\uacc4\ud68d\ub178\uc120_\uc815\ubcf8", + "community": 163, + "community_name": "B05 \uad6c\uc870\ubb3c 3D \ud22c\uc601 \ucee4\ube0c", + "norm_label": "\u1100\u1168\u1112\u116c\u11a8\u1102\u1169\u1109\u1165\u11ab \u110c\u1165\u11bc\u1107\u1169\u11ab" + }, + { + "label": "LAS \uc5c6\ub294 \uc124\uacc4\uc640 \uc5c5\ub85c\ub4dc \uc0c1\ud0dc", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_route_snapshot_crs.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_route_snapshot_crs_las_\uc5c6\ub294_\uc124\uacc4\uc640_\uc5c5\ub85c\ub4dc_\uc0c1\ud0dc", + "community": 163, + "community_name": "B05 \uad6c\uc870\ubb3c 3D \ud22c\uc601 \ucee4\ube0c", + "norm_label": "las \u110b\u1165\u11b9\u1102\u1173\u11ab \u1109\u1165\u11af\u1100\u1168\u110b\u116a \u110b\u1165\u11b8\u1105\u1169\u1103\u1173 \u1109\u1161\u11bc\u1110\u1162" + }, + { + "label": "B03_upload_ui_2026_09.md", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_upload_ui_2026_09.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_upload_ui_2026_09", + "community": 164, + "community_name": "B05_Profile \u2014 Frontend", + "norm_label": "b03_upload_ui_2026_09.md" + }, + { + "label": "B03 \ud30c\uc77c \uc785\ub825 \ud654\uba74 \uc815\ub9ac", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_upload_ui_2026_09.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_upload_ui_2026_09_b03_\ud30c\uc77c_\uc785\ub825_\ud654\uba74_\uc815\ub9ac", + "community": 164, + "community_name": "B05_Profile \u2014 Frontend", + "norm_label": "b03 \u1111\u1161\u110b\u1175\u11af \u110b\u1175\u11b8\u1105\u1167\u11a8 \u1112\u116a\u1106\u1167\u11ab \u110c\u1165\u11bc\u1105\u1175" + }, + { + "label": "\ud654\uba74 \uad6c\uc131", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_upload_ui_2026_09.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_upload_ui_2026_09_\ud654\uba74_\uad6c\uc131", + "community": 164, + "community_name": "B05_Profile \u2014 Frontend", + "norm_label": "\u1112\u116a\u1106\u1167\u11ab \u1100\u116e\u1109\u1165\u11bc" + }, + { + "label": "\uc785\ub825 \uaddc\uce59", + "file_type": "document", + "source_file": "pages/B03_FileInput/B03_upload_ui_2026_09.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b03_fileinput_b03_upload_ui_2026_09_\uc785\ub825_\uaddc\uce59", + "community": 164, + "community_name": "B05_Profile \u2014 Frontend", + "norm_label": "\u110b\u1175\u11b8\u1105\u1167\u11a8 \u1100\u1172\u110e\u1175\u11a8" + }, + { + "label": "B03_FileInput_Router.md", + "file_type": "document", + "source_file": "pages/B03_FileInput/backend/B03_FileInput_Router.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b03_fileinput_backend_b03_fileinput_router", + "community": 129, + "community_name": "B03_FileInput_Router.md", + "norm_label": "b03_fileinput_router.md" + }, + { + "label": "B03_FileInput_Router.py", + "file_type": "document", + "source_file": "pages/B03_FileInput/backend/B03_FileInput_Router.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b03_fileinput_backend_b03_fileinput_router_b03_fileinput_router_py", + "community": 129, + "community_name": "B03_FileInput_Router.md", + "norm_label": "b03_fileinput_router.py" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B03_FileInput/backend/B03_FileInput_Router.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b03_fileinput_backend_b03_fileinput_router_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 129, + "community_name": "B03_FileInput_Router.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B03_FileInput/backend/B03_FileInput_Router.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_b03_fileinput_backend_b03_fileinput_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 129, + "community_name": "B03_FileInput_Router.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B04_api.md", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_api.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_api", + "community": 97, + "community_name": "B04_PreProcess \u2014 API", + "norm_label": "b04_api.md" + }, + { + "label": "B04_PreProcess \u2014 API", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_api.md", + "source_location": "L8", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_api_b04_preprocess_api", + "community": 97, + "community_name": "B04_PreProcess \u2014 API", + "norm_label": "b04_preprocess \u2014 api" + }, + { + "label": "\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_api.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_api_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "community": 97, + "community_name": "B04_PreProcess \u2014 API", + "norm_label": "\u110b\u1166\u11ab\u1103\u1173\u1111\u1169\u110b\u1175\u11ab\u1110\u1173" + }, + { + "label": "\uc694\uccad/\uc751\ub2f5 \uc2a4\ud0a4\ub9c8 (Pydantic)", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_api.md", + "source_location": "L40", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_api_\uc694\uccad_\uc751\ub2f5_\uc2a4\ud0a4\ub9c8_pydantic", + "community": 97, + "community_name": "B04_PreProcess \u2014 API", + "norm_label": "\u110b\u116d\u110e\u1165\u11bc/\u110b\u1173\u11bc\u1103\u1161\u11b8 \u1109\u1173\u110f\u1175\u1106\u1161 (pydantic)" + }, + { + "label": "B04_backend.md", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_backend", + "community": 20, + "community_name": "B04_PreProcess \u2014 Backend", + "norm_label": "b04_backend.md" + }, + { + "label": "B04_PreProcess \u2014 Backend", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_backend_b04_preprocess_backend", + "community": 20, + "community_name": "B04_PreProcess \u2014 Backend", + "norm_label": "b04_preprocess \u2014 backend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc131 (\uc624\ucf00\uc2a4\ud2b8\ub808\uc774\ud130/\uc800\uc7a5\uc18c/\ub77c\uc6b0\ud130)", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "source_location": "L13", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_backend_\ud30c\uc77c_\uad6c\uc131_\uc624\ucf00\uc2a4\ud2b8\ub808\uc774\ud130_\uc800\uc7a5\uc18c_\ub77c\uc6b0\ud130", + "community": 20, + "community_name": "B04_PreProcess \u2014 Backend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u1109\u1165\u11bc (\u110b\u1169\u110f\u1166\u1109\u1173\u1110\u1173\u1105\u1166\u110b\u1175\u1110\u1165/\u110c\u1165\u110c\u1161\u11bc\u1109\u1169/\u1105\u1161\u110b\u116e\u1110\u1165)" + }, + { + "label": "\uc5d4\uc9c4 \uc11c\ube0c\ubaa8\ub4c8", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "source_location": "L27", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_backend_\uc5d4\uc9c4_\uc11c\ube0c\ubaa8\ub4c8", + "community": 20, + "community_name": "B04_PreProcess \u2014 Backend", + "norm_label": "\u110b\u1166\u11ab\u110c\u1175\u11ab \u1109\u1165\u1107\u1173\u1106\u1169\u1103\u1172\u11af" + }, + { + "label": "\uc8fc\uc694 \ud568\uc218 (Router / Repository / Engine / Utility)", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "source_location": "L45", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_backend_\uc8fc\uc694_\ud568\uc218_router_repository_engine_utility", + "community": 20, + "community_name": "B04_PreProcess \u2014 Backend", + "norm_label": "\u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e (router / repository / engine / utility)" + }, + { + "label": "\uc218\uce58\uc9c0\ud615\ub3c4 \ub3c4\uc5fd \uc624\ubc84\ub808\uc774 \uc544\ud0a4\ud14d\ucc98 (2026-07-26, 2026-08-01 S8 \uac1c\ud3b8)", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "source_location": "L68", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_backend_\uc218\uce58\uc9c0\ud615\ub3c4_\ub3c4\uc5fd_\uc624\ubc84\ub808\uc774_\uc544\ud0a4\ud14d\ucc98_2026_07_26_2026_08_01_s8_\uac1c\ud3b8", + "community": 20, + "community_name": "B04_PreProcess \u2014 Backend", + "norm_label": "\u1109\u116e\u110e\u1175\u110c\u1175\u1112\u1167\u11bc\u1103\u1169 \u1103\u1169\u110b\u1167\u11b8 \u110b\u1169\u1107\u1165\u1105\u1166\u110b\u1175 \u110b\u1161\u110f\u1175\u1110\u1166\u11a8\u110e\u1165 (2026-07-26, 2026-08-01 s8 \u1100\u1162\u1111\u1167\u11ab)" + }, + { + "label": "\uc6cc\ud06c\ud50c\ub85c\uc6b0 \uc0c1\ud0dc \uc804\uc774 \ubc0f \uc790\ub3d9 \ud655\uc815", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "source_location": "L75", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_backend_\uc6cc\ud06c\ud50c\ub85c\uc6b0_\uc0c1\ud0dc_\uc804\uc774_\ubc0f_\uc790\ub3d9_\ud655\uc815", + "community": 20, + "community_name": "B04_PreProcess \u2014 Backend", + "norm_label": "\u110b\u116f\u110f\u1173\u1111\u1173\u11af\u1105\u1169\u110b\u116e \u1109\u1161\u11bc\u1110\u1162 \u110c\u1165\u11ab\u110b\u1175 \u1106\u1175\u11be \u110c\u1161\u1103\u1169\u11bc \u1112\u116a\u11a8\u110c\u1165\u11bc" + }, + { + "label": "\u2699\ufe0f \uc124\uc815 \ubc0f \ud658\uacbd \ud30c\uc77c \uc815\ud569\uc131", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "source_location": "L82", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_backend_\uc124\uc815_\ubc0f_\ud658\uacbd_\ud30c\uc77c_\uc815\ud569\uc131", + "community": 20, + "community_name": "B04_PreProcess \u2014 Backend", + "norm_label": "\u2699\ufe0f \u1109\u1165\u11af\u110c\u1165\u11bc \u1106\u1175\u11be \u1112\u116a\u11ab\u1100\u1167\u11bc \u1111\u1161\u110b\u1175\u11af \u110c\u1165\u11bc\u1112\u1161\u11b8\u1109\u1165\u11bc" + }, + { + "label": "\ud83d\udccb \uad6c\ud604 \uc608\uc678 \ucc98\ub9ac \uac80\ud1a0 \ud56d\ubaa9 (PLAN)", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "source_location": "L92", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_backend_\uad6c\ud604_\uc608\uc678_\ucc98\ub9ac_\uac80\ud1a0_\ud56d\ubaa9_plan", + "community": 20, + "community_name": "B04_PreProcess \u2014 Backend", + "norm_label": "\ud83d\udccb \u1100\u116e\u1112\u1167\u11ab \u110b\u1168\u110b\u116c \u110e\u1165\u1105\u1175 \u1100\u1165\u11b7\u1110\u1169 \u1112\u1161\u11bc\u1106\u1169\u11a8 (plan)" + }, + { + "label": "2D/GIS \ubbf8\ud45c\uc2dc \uc6d0\uc778 \ubd84\uc11d \ubc0f \uc870\uce58", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "source_location": "L97", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_backend_2d_gis_\ubbf8\ud45c\uc2dc_\uc6d0\uc778_\ubd84\uc11d_\ubc0f_\uc870\uce58", + "community": 20, + "community_name": "B04_PreProcess \u2014 Backend", + "norm_label": "2d/gis \u1106\u1175\u1111\u116d\u1109\u1175 \u110b\u116f\u11ab\u110b\u1175\u11ab \u1107\u116e\u11ab\u1109\u1165\u11a8 \u1106\u1175\u11be \u110c\u1169\u110e\u1175" + }, + { + "label": "B04_compass_crs_2026_09.md", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_compass_crs_2026_09.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_compass_crs_2026_09", + "community": 165, + "community_name": "B05 \uc720\ud1a0\uace1\uc120\u00b7\uad6c\uc870\ubb3c \ud6c4\uc18d", + "norm_label": "b04_compass_crs_2026_09.md" + }, + { + "label": "B04 3D \ubc29\uc704\u00b7\uc88c\ud45c\uacc4 \ucd5c\uc2e0 \uacb0\uc815", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_compass_crs_2026_09.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_compass_crs_2026_09_b04_3d_\ubc29\uc704_\uc88c\ud45c\uacc4_\ucd5c\uc2e0_\uacb0\uc815", + "community": 165, + "community_name": "B05 \uc720\ud1a0\uace1\uc120\u00b7\uad6c\uc870\ubb3c \ud6c4\uc18d", + "norm_label": "b04 3d \u1107\u1161\u11bc\u110b\u1171\u00b7\u110c\u116a\u1111\u116d\u1100\u1168 \u110e\u116c\u1109\u1175\u11ab \u1100\u1167\u11af\u110c\u1165\u11bc" + }, + { + "label": "3D \ubc29\uc704 \uc704\uc82f", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_compass_crs_2026_09.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_compass_crs_2026_09_3d_\ubc29\uc704_\uc704\uc82f", + "community": 165, + "community_name": "B05 \uc720\ud1a0\uace1\uc120\u00b7\uad6c\uc870\ubb3c \ud6c4\uc18d", + "norm_label": "3d \u1107\u1161\u11bc\u110b\u1171 \u110b\u1171\u110c\u1166\u11ba" + }, + { + "label": "\uc791\uc5c5 \uc88c\ud45c\uacc4", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_compass_crs_2026_09.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_compass_crs_2026_09_\uc791\uc5c5_\uc88c\ud45c\uacc4", + "community": 165, + "community_name": "B05 \uc720\ud1a0\uace1\uc120\u00b7\uad6c\uc870\ubb3c \ud6c4\uc18d", + "norm_label": "\u110c\u1161\u11a8\u110b\u1165\u11b8 \u110c\u116a\u1111\u116d\u1100\u1168" + }, + { + "label": "B04_db.md", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_db.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_db", + "community": 64, + "community_name": "B04_PreProcess \u2014 DB", + "norm_label": "b04_db.md" + }, + { + "label": "B04_PreProcess \u2014 DB", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_db.md", + "source_location": "L8", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_db_b04_preprocess_db", + "community": 64, + "community_name": "B04_PreProcess \u2014 DB", + "norm_label": "b04_preprocess \u2014 db" + }, + { + "label": "\uc4f0\ub294 \ud14c\uc774\ube14", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_db.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_db_\uc4f0\ub294_\ud14c\uc774\ube14", + "community": 64, + "community_name": "B04_PreProcess \u2014 DB", + "norm_label": "\u110a\u1173\u1102\u1173\u11ab \u1110\u1166\u110b\u1175\u1107\u1173\u11af" + }, + { + "label": "Repository \ud568\uc218", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_db.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_db_repository_\ud568\uc218", + "community": 64, + "community_name": "B04_PreProcess \u2014 DB", + "norm_label": "repository \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "\ucc38\uace0", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_db.md", + "source_location": "L34", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_db_\ucc38\uace0", + "community": 64, + "community_name": "B04_PreProcess \u2014 DB", + "norm_label": "\u110e\u1161\u11b7\u1100\u1169" + }, + { + "label": "B04_dependencies.md", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_dependencies.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_dependencies", + "community": 98, + "community_name": "B04_PreProcess \u2014 Dependencies", + "norm_label": "b04_dependencies.md" + }, + { + "label": "B04_PreProcess \u2014 Dependencies", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_dependencies.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_dependencies_b04_preprocess_dependencies", + "community": 98, + "community_name": "B04_PreProcess \u2014 Dependencies", + "norm_label": "b04_preprocess \u2014 dependencies" + }, + { + "label": "\ubc31\uc5d4\ub4dc (Python)", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_dependencies.md", + "source_location": "L13", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_dependencies_\ubc31\uc5d4\ub4dc_python", + "community": 98, + "community_name": "B04_PreProcess \u2014 Dependencies", + "norm_label": "\u1107\u1162\u11a8\u110b\u1166\u11ab\u1103\u1173 (python)" + }, + { + "label": "\ud504\ub860\ud2b8\uc5d4\ub4dc (TypeScript)", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_dependencies.md", + "source_location": "L26", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_dependencies_\ud504\ub860\ud2b8\uc5d4\ub4dc_typescript", + "community": 98, + "community_name": "B04_PreProcess \u2014 Dependencies", + "norm_label": "\u1111\u1173\u1105\u1169\u11ab\u1110\u1173\u110b\u1166\u11ab\u1103\u1173 (typescript)" + }, + { + "label": "B04_drainage_compass_crs.md", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_drainage_compass_crs.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_drainage_compass_crs", + "community": 146, + "community_name": "B01~B09 Workflow \ub370\uc774\ud130 \ud750\ub984", + "norm_label": "b04_drainage_compass_crs.md" + }, + { + "label": "B04 \uc138\ubd80\uc720\uc5ed\u00b7\ubc29\uc704\u00b7\uc88c\ud45c\uacc4", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_drainage_compass_crs.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_drainage_compass_crs_b04_\uc138\ubd80\uc720\uc5ed_\ubc29\uc704_\uc88c\ud45c\uacc4", + "community": 146, + "community_name": "B01~B09 Workflow \ub370\uc774\ud130 \ud750\ub984", + "norm_label": "b04 \u1109\u1166\u1107\u116e\u110b\u1172\u110b\u1167\u11a8\u00b7\u1107\u1161\u11bc\u110b\u1171\u00b7\u110c\u116a\u1111\u116d\u1100\u1168" + }, + { + "label": "\uc138\ubd80\uc720\uc5ed \ud615\uc0c1 \ubcf4\uc874", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_drainage_compass_crs.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_drainage_compass_crs_\uc138\ubd80\uc720\uc5ed_\ud615\uc0c1_\ubcf4\uc874", + "community": 146, + "community_name": "B01~B09 Workflow \ub370\uc774\ud130 \ud750\ub984", + "norm_label": "\u1109\u1166\u1107\u116e\u110b\u1172\u110b\u1167\u11a8 \u1112\u1167\u11bc\u1109\u1161\u11bc \u1107\u1169\u110c\u1169\u11ab" + }, + { + "label": "\uc885\ub2e8 \ub192\ub0ae\uc774 \uae30\ubc18 \ubc30\uc815", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_drainage_compass_crs.md", + "source_location": "L24", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_drainage_compass_crs_\uc885\ub2e8_\ub192\ub0ae\uc774_\uae30\ubc18_\ubc30\uc815", + "community": 146, + "community_name": "B01~B09 Workflow \ub370\uc774\ud130 \ud750\ub984", + "norm_label": "\u110c\u1169\u11bc\u1103\u1161\u11ab \u1102\u1169\u11c1\u1102\u1161\u11bd\u110b\u1175 \u1100\u1175\u1107\u1161\u11ab \u1107\u1162\u110c\u1165\u11bc" + }, + { + "label": "3D \ubc29\uc704\uc640 \uc88c\ud45c\uacc4", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_drainage_compass_crs.md", + "source_location": "L32", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_drainage_compass_crs_3d_\ubc29\uc704\uc640_\uc88c\ud45c\uacc4", + "community": 146, + "community_name": "B01~B09 Workflow \ub370\uc774\ud130 \ud750\ub984", + "norm_label": "3d \u1107\u1161\u11bc\u110b\u1171\u110b\u116a \u110c\u116a\u1111\u116d\u1100\u1168" + }, + { + "label": "B04_frontend.md", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_frontend", + "community": 21, + "community_name": "B04_PreProcess \u2014 Frontend", + "norm_label": "b04_frontend.md" + }, + { + "label": "B04_PreProcess \u2014 Frontend", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_frontend_b04_preprocess_frontend", + "community": 21, + "community_name": "B04_PreProcess \u2014 Frontend", + "norm_label": "b04_preprocess \u2014 frontend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc870", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_frontend_\ud30c\uc77c_\uad6c\uc870", + "community": 21, + "community_name": "B04_PreProcess \u2014 Frontend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "\u26a0\ufe0f \uacc4\ud68d\uc11c\uc640 \uc2e4 \ucf54\ub4dc \ubd88\uc77c\uce58 (3D \ubdf0\uc5b4)", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "source_location": "L32", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_frontend_\uacc4\ud68d\uc11c\uc640_\uc2e4_\ucf54\ub4dc_\ubd88\uc77c\uce58_3d_\ubdf0\uc5b4", + "community": 21, + "community_name": "B04_PreProcess \u2014 Frontend", + "norm_label": "\u26a0\ufe0f \u1100\u1168\u1112\u116c\u11a8\u1109\u1165\u110b\u116a \u1109\u1175\u11af \u110f\u1169\u1103\u1173 \u1107\u116e\u11af\u110b\u1175\u11af\u110e\u1175 (3d \u1107\u1172\u110b\u1165)" + }, + { + "label": "3D \ubdf0\uc5b4 DOM \ub9c8\uc6b4\ud2b8 \ubc84\uadf8 \uc218\ub9ac", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "source_location": "L42", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_frontend_3d_\ubdf0\uc5b4_dom_\ub9c8\uc6b4\ud2b8_\ubc84\uadf8_\uc218\ub9ac", + "community": 21, + "community_name": "B04_PreProcess \u2014 Frontend", + "norm_label": "3d \u1107\u1172\u110b\u1165 dom \u1106\u1161\u110b\u116e\u11ab\u1110\u1173 \u1107\u1165\u1100\u1173 \u1109\u116e\u1105\u1175" + }, + { + "label": "3D \ubdf0\uc5b4 \ud14c\ub9c8 \uc5f0\ub3d9 \ubc0f \uac00\ub3c5\uc131 \uac1c\uc120", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "source_location": "L46", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_frontend_3d_\ubdf0\uc5b4_\ud14c\ub9c8_\uc5f0\ub3d9_\ubc0f_\uac00\ub3c5\uc131_\uac1c\uc120", + "community": 21, + "community_name": "B04_PreProcess \u2014 Frontend", + "norm_label": "3d \u1107\u1172\u110b\u1165 \u1110\u1166\u1106\u1161 \u110b\u1167\u11ab\u1103\u1169\u11bc \u1106\u1175\u11be \u1100\u1161\u1103\u1169\u11a8\u1109\u1165\u11bc \u1100\u1162\u1109\u1165\u11ab" + }, + { + "label": "\ucef4\ud3ec\ub10c\ud2b8 & API \ud568\uc218", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "source_location": "L51", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_frontend_\ucef4\ud3ec\ub10c\ud2b8_api_\ud568\uc218", + "community": 21, + "community_name": "B04_PreProcess \u2014 Frontend", + "norm_label": "\u110f\u1165\u11b7\u1111\u1169\u1102\u1165\u11ab\u1110\u1173 & api \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "\ucc98\ub9ac \ud750\ub984", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "source_location": "L65", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_frontend_\ucc98\ub9ac_\ud750\ub984", + "community": 21, + "community_name": "B04_PreProcess \u2014 Frontend", + "norm_label": "\u110e\u1165\u1105\u1175 \u1112\u1173\u1105\u1173\u11b7" + }, + { + "label": "3D \uce74\uba54\ub77c \ucee4\uc11c \ud53c\ubd07 & 2D \uc624\ubc84\ub808\uc774 UI \uac1c\uc120 (2026-08-01~02 \uc77c\uc6d0\ud654)", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "source_location": "L73", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_frontend_3d_\uce74\uba54\ub77c_\ucee4\uc11c_\ud53c\ubd07_2d_\uc624\ubc84\ub808\uc774_ui_\uac1c\uc120_2026_08_01_02_\uc77c\uc6d0\ud654", + "community": 21, + "community_name": "B04_PreProcess \u2014 Frontend", + "norm_label": "3d \u110f\u1161\u1106\u1166\u1105\u1161 \u110f\u1165\u1109\u1165 \u1111\u1175\u1107\u1169\u11ba & 2d \u110b\u1169\u1107\u1165\u1105\u1166\u110b\u1175 ui \u1100\u1162\u1109\u1165\u11ab (2026-08-01~02 \u110b\u1175\u11af\u110b\u116f\u11ab\u1112\u116a)" + }, + { + "label": "\uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "source_location": "L82", + "_origin": "ast", + "id": "pages_b04_preprocess_b04_frontend_\uc758\uc874\uc131", + "community": 21, + "community_name": "B04_PreProcess \u2014 Frontend", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B04_PreProcess_Router.md", + "file_type": "document", + "source_file": "pages/B04_PreProcess/backend/B04_PreProcess_Router.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b04_preprocess_backend_b04_preprocess_router", + "community": 130, + "community_name": "B04_PreProcess_Router.md", + "norm_label": "b04_preprocess_router.md" + }, + { + "label": "B04_PreProcess_Router.py", + "file_type": "document", + "source_file": "pages/B04_PreProcess/backend/B04_PreProcess_Router.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b04_preprocess_backend_b04_preprocess_router_b04_preprocess_router_py", + "community": 130, + "community_name": "B04_PreProcess_Router.md", + "norm_label": "b04_preprocess_router.py" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B04_PreProcess/backend/B04_PreProcess_Router.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b04_preprocess_backend_b04_preprocess_router_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 130, + "community_name": "B04_PreProcess_Router.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B04_PreProcess/backend/B04_PreProcess_Router.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_b04_preprocess_backend_b04_preprocess_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 130, + "community_name": "B04_PreProcess_Router.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B05_Profile_plan_2026-08-18.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-18.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_profile_plan_2026_08_18", + "community": 53, + "community_name": "B05 \uad6c\uc870\ubb3c\u00b7UI \ud604\uc7ac \uacc4\ud68d", + "norm_label": "b05_profile_plan_2026-08-18.md" + }, + { + "label": "B05 \uad6c\uc870\ubb3c\u00b7UI \ud604\uc7ac \uacc4\ud68d", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-18.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_profile_plan_2026_08_18_b05_\uad6c\uc870\ubb3c_ui_\ud604\uc7ac_\uacc4\ud68d", + "community": 53, + "community_name": "B05 \uad6c\uc870\ubb3c\u00b7UI \ud604\uc7ac \uacc4\ud68d", + "norm_label": "b05 \u1100\u116e\u110c\u1169\u1106\u116e\u11af\u00b7ui \u1112\u1167\u11ab\u110c\u1162 \u1100\u1168\u1112\u116c\u11a8" + }, + { + "label": "B05/B06 \uad6c\uc870\ubb3c \uc801\uc6a9 \ubc94\uc704", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-18.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_b05_profile_plan_2026_08_18_b05_b06_\uad6c\uc870\ubb3c_\uc801\uc6a9_\ubc94\uc704", + "community": 53, + "community_name": "B05 \uad6c\uc870\ubb3c\u00b7UI \ud604\uc7ac \uacc4\ud68d", + "norm_label": "b05/b06 \u1100\u116e\u110c\u1169\u1106\u116e\u11af \u110c\u1165\u11a8\u110b\u116d\u11bc \u1107\u1165\u11b7\u110b\u1171" + }, + { + "label": "2026-08-18 \uc0ac\uc774\ub4dc \ud328\ub110\u00b7\uc785\ub825 \ub85c\uc9c1 \uacc4\ud68d \uae30\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-18.md", + "source_location": "L29", + "_origin": "ast", + "id": "pages_b05_profile_b05_profile_plan_2026_08_18_2026_08_18_\uc0ac\uc774\ub4dc_\ud328\ub110_\uc785\ub825_\ub85c\uc9c1_\uacc4\ud68d_\uae30\ub85d", + "community": 53, + "community_name": "B05 \uad6c\uc870\ubb3c\u00b7UI \ud604\uc7ac \uacc4\ud68d", + "norm_label": "2026-08-18 \u1109\u1161\u110b\u1175\u1103\u1173 \u1111\u1162\u1102\u1165\u11af\u00b7\u110b\u1175\u11b8\u1105\u1167\u11a8 \u1105\u1169\u110c\u1175\u11a8 \u1100\u1168\u1112\u116c\u11a8 \u1100\u1175\u1105\u1169\u11a8" + }, + { + "label": "2026-08-18 B05 \ud398\uc774\uc9c0 \uac1c\uc120 2\ucc28 \uacc4\ud68d \uae30\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-18.md", + "source_location": "L40", + "_origin": "ast", + "id": "pages_b05_profile_b05_profile_plan_2026_08_18_2026_08_18_b05_\ud398\uc774\uc9c0_\uac1c\uc120_2\ucc28_\uacc4\ud68d_\uae30\ub85d", + "community": 53, + "community_name": "B05 \uad6c\uc870\ubb3c\u00b7UI \ud604\uc7ac \uacc4\ud68d", + "norm_label": "2026-08-18 b05 \u1111\u1166\u110b\u1175\u110c\u1175 \u1100\u1162\u1109\u1165\u11ab 2\u110e\u1161 \u1100\u1168\u1112\u116c\u11a8 \u1100\u1175\u1105\u1169\u11a8" + }, + { + "label": "\ud6c4\uc18d \uacb0\uc815 \ub300\uae30", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-18.md", + "source_location": "L51", + "_origin": "ast", + "id": "pages_b05_profile_b05_profile_plan_2026_08_18_\ud6c4\uc18d_\uacb0\uc815_\ub300\uae30", + "community": 53, + "community_name": "B05 \uad6c\uc870\ubb3c\u00b7UI \ud604\uc7ac \uacc4\ud68d", + "norm_label": "\u1112\u116e\u1109\u1169\u11a8 \u1100\u1167\u11af\u110c\u1165\u11bc \u1103\u1162\u1100\u1175" + }, + { + "label": "B05_Profile_plan_2026-08-19.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-19.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_profile_plan_2026_08_19", + "community": 54, + "community_name": "B05 \uad6c\uc870\ubb3c \uc785\ub825\u00b7\uc885\ub2e8 \ud45c\uc2dc \uc815\ube44 \u2014 2026-08-19", + "norm_label": "b05_profile_plan_2026-08-19.md" + }, + { + "label": "B05 \uad6c\uc870\ubb3c \uc785\ub825\u00b7\uc885\ub2e8 \ud45c\uc2dc \uc815\ube44 \u2014 2026-08-19", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-19.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_profile_plan_2026_08_19_b05_\uad6c\uc870\ubb3c_\uc785\ub825_\uc885\ub2e8_\ud45c\uc2dc_\uc815\ube44_2026_08_19", + "community": 54, + "community_name": "B05 \uad6c\uc870\ubb3c \uc785\ub825\u00b7\uc885\ub2e8 \ud45c\uc2dc \uc815\ube44 \u2014 2026-08-19", + "norm_label": "b05 \u1100\u116e\u110c\u1169\u1106\u116e\u11af \u110b\u1175\u11b8\u1105\u1167\u11a8\u00b7\u110c\u1169\u11bc\u1103\u1161\u11ab \u1111\u116d\u1109\u1175 \u110c\u1165\u11bc\u1107\u1175 \u2014 2026-08-19" + }, + { + "label": "\uae30\uc900 \ud574\uc11d \ubcf4\ub958", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-19.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_b05_profile_plan_2026_08_19_\uae30\uc900_\ud574\uc11d_\ubcf4\ub958", + "community": 54, + "community_name": "B05 \uad6c\uc870\ubb3c \uc785\ub825\u00b7\uc885\ub2e8 \ud45c\uc2dc \uc815\ube44 \u2014 2026-08-19", + "norm_label": "\u1100\u1175\u110c\u116e\u11ab \u1112\u1162\u1109\u1165\u11a8 \u1107\u1169\u1105\u1172" + }, + { + "label": "\uc644\ub8cc \ubc94\uc704", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-19.md", + "source_location": "L18", + "_origin": "ast", + "id": "pages_b05_profile_b05_profile_plan_2026_08_19_\uc644\ub8cc_\ubc94\uc704", + "community": 54, + "community_name": "B05 \uad6c\uc870\ubb3c \uc785\ub825\u00b7\uc885\ub2e8 \ud45c\uc2dc \uc815\ube44 \u2014 2026-08-19", + "norm_label": "\u110b\u116a\u11ab\u1105\u116d \u1107\u1165\u11b7\u110b\u1171" + }, + { + "label": "\uc8fc\uc694 \ud56d\ubaa9", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-19.md", + "source_location": "L32", + "_origin": "ast", + "id": "pages_b05_profile_b05_profile_plan_2026_08_19_\uc8fc\uc694_\ud56d\ubaa9", + "community": 54, + "community_name": "B05 \uad6c\uc870\ubb3c \uc785\ub825\u00b7\uc885\ub2e8 \ud45c\uc2dc \uc815\ube44 \u2014 2026-08-19", + "norm_label": "\u110c\u116e\u110b\u116d \u1112\u1161\u11bc\u1106\u1169\u11a8" + }, + { + "label": "\uae30\ub85d\ub41c \uac80\uc99d", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-19.md", + "source_location": "L42", + "_origin": "ast", + "id": "pages_b05_profile_b05_profile_plan_2026_08_19_\uae30\ub85d\ub41c_\uac80\uc99d", + "community": 54, + "community_name": "B05 \uad6c\uc870\ubb3c \uc785\ub825\u00b7\uc885\ub2e8 \ud45c\uc2dc \uc815\ube44 \u2014 2026-08-19", + "norm_label": "\u1100\u1175\u1105\u1169\u11a8\u1103\u116c\u11ab \u1100\u1165\u11b7\u110c\u1173\u11bc" + }, + { + "label": "B05_api.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_api.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_api", + "community": 65, + "community_name": "B05_Profile \u2014 API", + "norm_label": "b05_api.md" + }, + { + "label": "B05_Profile \u2014 API", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_api.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_api_b05_profile_api", + "community": 65, + "community_name": "B05_Profile \u2014 API", + "norm_label": "b05_profile \u2014 api" + }, + { + "label": "\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_api.md", + "source_location": "L16", + "_origin": "ast", + "id": "pages_b05_profile_b05_api_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "community": 65, + "community_name": "B05_Profile \u2014 API", + "norm_label": "\u110b\u1166\u11ab\u1103\u1173\u1111\u1169\u110b\u1175\u11ab\u1110\u1173" + }, + { + "label": "API \uc2a4\ud0a4\ub9c8 \ubc0f \ubc18\ud658 \ud544\ub4dc", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_api.md", + "source_location": "L31", + "_origin": "ast", + "id": "pages_b05_profile_b05_api_api_\uc2a4\ud0a4\ub9c8_\ubc0f_\ubc18\ud658_\ud544\ub4dc", + "community": 65, + "community_name": "B05_Profile \u2014 API", + "norm_label": "api \u1109\u1173\u110f\u1175\u1106\u1161 \u1106\u1175\u11be \u1107\u1161\u11ab\u1112\u116a\u11ab \u1111\u1175\u11af\u1103\u1173" + }, + { + "label": "`POST /{project_id}/route/confirm` \uc694\uccad (`RouteConfirmRequest`)", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_api.md", + "source_location": "L33", + "_origin": "ast", + "id": "pages_b05_profile_b05_api_post_project_id_route_confirm_\uc694\uccad_routeconfirmrequest", + "community": 65, + "community_name": "B05_Profile \u2014 API", + "norm_label": "`post /{project_id}/route/confirm` \u110b\u116d\u110e\u1165\u11bc (`routeconfirmrequest`)" + }, + { + "label": "B05_backend.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_backend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_backend", + "community": 99, + "community_name": "B05_Profile \u2014 Backend", + "norm_label": "b05_backend.md" + }, + { + "label": "B05_Profile \u2014 Backend", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_backend.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_backend_b05_profile_backend", + "community": 99, + "community_name": "B05_Profile \u2014 Backend", + "norm_label": "b05_profile \u2014 backend" + }, + { + "label": "\ud83d\udcc2 \uc18c\uc2a4\ucf54\ub4dc 1:1 \uc138\ubd84\ud654 \uc704\ud0a4 \ud30c\uc77c \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_backend.md", + "source_location": "L16", + "_origin": "ast", + "id": "pages_b05_profile_b05_backend_\uc18c\uc2a4\ucf54\ub4dc_1_1_\uc138\ubd84\ud654_\uc704\ud0a4_\ud30c\uc77c_\ubaa9\ub85d", + "community": 99, + "community_name": "B05_Profile \u2014 Backend", + "norm_label": "\ud83d\udcc2 \u1109\u1169\u1109\u1173\u110f\u1169\u1103\u1173 1:1 \u1109\u1166\u1107\u116e\u11ab\u1112\u116a \u110b\u1171\u110f\u1175 \u1111\u1161\u110b\u1175\u11af \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udccb \ud575\uc2ec \ubc31\uc5d4\ub4dc \uc544\ud0a4\ud14d\ucc98 \uac1c\uc694", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_backend.md", + "source_location": "L33", + "_origin": "ast", + "id": "pages_b05_profile_b05_backend_\ud575\uc2ec_\ubc31\uc5d4\ub4dc_\uc544\ud0a4\ud14d\ucc98_\uac1c\uc694", + "community": 99, + "community_name": "B05_Profile \u2014 Backend", + "norm_label": "\ud83d\udccb \u1112\u1162\u11a8\u1109\u1175\u11b7 \u1107\u1162\u11a8\u110b\u1166\u11ab\u1103\u1173 \u110b\u1161\u110f\u1175\u1110\u1166\u11a8\u110e\u1165 \u1100\u1162\u110b\u116d" + }, + { + "label": "B05_completed_followups.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_completed_followups.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_completed_followups", + "community": 150, + "community_name": "B05_completed_followups.md", + "norm_label": "b05_completed_followups.md" + }, + { + "label": "B05 \ud6c4\uc18d \uc644\ub8cc \ud56d\ubaa9", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_completed_followups.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_completed_followups_b05_\ud6c4\uc18d_\uc644\ub8cc_\ud56d\ubaa9", + "community": 150, + "community_name": "B05_completed_followups.md", + "norm_label": "b05 \u1112\u116e\u1109\u1169\u11a8 \u110b\u116a\u11ab\u1105\u116d \u1112\u1161\u11bc\u1106\u1169\u11a8" + }, + { + "label": "B05_corridor_cut_fill.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_cut_fill.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_cut_fill", + "community": 158, + "community_name": "B03 \uacc4\ud68d\ub178\uc120 \uc815\ubcf8\u00b7\uc88c\ud45c\uacc4 \ud6c4\uc18d", + "norm_label": "b05_corridor_cut_fill.md" + }, + { + "label": "B05 \uad6c\uc870\ubb3c \uad6c\uac04 \uc808\ucde8\u00b7\uce21\ubcbd\u00b7\uc131\ud1a0 \ud328\uce58", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_cut_fill.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_cut_fill_b05_\uad6c\uc870\ubb3c_\uad6c\uac04_\uc808\ucde8_\uce21\ubcbd_\uc131\ud1a0_\ud328\uce58", + "community": 158, + "community_name": "B03 \uacc4\ud68d\ub178\uc120 \uc815\ubcf8\u00b7\uc88c\ud45c\uacc4 \ud6c4\uc18d", + "norm_label": "b05 \u1100\u116e\u110c\u1169\u1106\u116e\u11af \u1100\u116e\u1100\u1161\u11ab \u110c\u1165\u11af\u110e\u1171\u00b7\u110e\u1173\u11a8\u1107\u1167\u11a8\u00b7\u1109\u1165\u11bc\u1110\u1169 \u1111\u1162\u110e\u1175" + }, + { + "label": "\uc808\ucde8\uc640 \uacbd\uacc4", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_cut_fill.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_cut_fill_\uc808\ucde8\uc640_\uacbd\uacc4", + "community": 158, + "community_name": "B03 \uacc4\ud68d\ub178\uc120 \uc815\ubcf8\u00b7\uc88c\ud45c\uacc4 \ud6c4\uc18d", + "norm_label": "\u110c\u1165\u11af\u110e\u1171\u110b\u116a \u1100\u1167\u11bc\u1100\u1168" + }, + { + "label": "B06 \ubcc0\ud615 \uc131\ud1a0\uc120 \ud328\uce58", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_cut_fill.md", + "source_location": "L26", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_cut_fill_b06_\ubcc0\ud615_\uc131\ud1a0\uc120_\ud328\uce58", + "community": 158, + "community_name": "B03 \uacc4\ud68d\ub178\uc120 \uc815\ubcf8\u00b7\uc88c\ud45c\uacc4 \ud6c4\uc18d", + "norm_label": "b06 \u1107\u1167\u11ab\u1112\u1167\u11bc \u1109\u1165\u11bc\u1110\u1169\u1109\u1165\u11ab \u1111\u1162\u110e\u1175" + }, + { + "label": "\uc800\uc7a5\u00b7\uac80\uc99d", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_cut_fill.md", + "source_location": "L39", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_cut_fill_\uc800\uc7a5_\uac80\uc99d", + "community": 158, + "community_name": "B03 \uacc4\ud68d\ub178\uc120 \uc815\ubcf8\u00b7\uc88c\ud45c\uacc4 \ud6c4\uc18d", + "norm_label": "\u110c\u1165\u110c\u1161\u11bc\u00b7\u1100\u1165\u11b7\u110c\u1173\u11bc" + }, + { + "label": "B05_corridor_followup_decisions.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_followup_decisions.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_followup_decisions", + "community": 151, + "community_name": "B05_corridor_followup_decisions.md", + "norm_label": "b05_corridor_followup_decisions.md" + }, + { + "label": "B05 \uad6c\uc870\ubb3c 3D \ud6c4\uc18d \ud310\uc815", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_followup_decisions.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_followup_decisions_b05_\uad6c\uc870\ubb3c_3d_\ud6c4\uc18d_\ud310\uc815", + "community": 151, + "community_name": "B05_corridor_followup_decisions.md", + "norm_label": "b05 \u1100\u116e\u110c\u1169\u1106\u116e\u11af 3d \u1112\u116e\u1109\u1169\u11a8 \u1111\u1161\u11ab\u110c\u1165\u11bc" + }, + { + "label": "B05_corridor_patch_finish.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_patch_finish.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_patch_finish", + "community": 66, + "community_name": "B05 \ubcc0\ud615 \uc131\ud1a0\uba74 \ub9c8\uac10\u00b7\ub0a0\uac1c \ud328\uce58", + "norm_label": "b05_corridor_patch_finish.md" + }, + { + "label": "B05 \ubcc0\ud615 \uc131\ud1a0\uba74 \ub9c8\uac10\u00b7\ub0a0\uac1c \ud328\uce58", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_patch_finish.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_patch_finish_b05_\ubcc0\ud615_\uc131\ud1a0\uba74_\ub9c8\uac10_\ub0a0\uac1c_\ud328\uce58", + "community": 66, + "community_name": "B05 \ubcc0\ud615 \uc131\ud1a0\uba74 \ub9c8\uac10\u00b7\ub0a0\uac1c \ud328\uce58", + "norm_label": "b05 \u1107\u1167\u11ab\u1112\u1167\u11bc \u1109\u1165\u11bc\u1110\u1169\u1106\u1167\u11ab \u1106\u1161\u1100\u1161\u11b7\u00b7\u1102\u1161\u11af\u1100\u1162 \u1111\u1162\u110e\u1175" + }, + { + "label": "\ud328\uce58 \ub9c8\uac10", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_patch_finish.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_patch_finish_\ud328\uce58_\ub9c8\uac10", + "community": 66, + "community_name": "B05 \ubcc0\ud615 \uc131\ud1a0\uba74 \ub9c8\uac10\u00b7\ub0a0\uac1c \ud328\uce58", + "norm_label": "\u1111\u1162\u110e\u1175 \u1106\u1161\u1100\u1161\u11b7" + }, + { + "label": "\uc138\uc6d4\uad50 \ub0a0\uac1c \ud328\uce58", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_patch_finish.md", + "source_location": "L25", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_patch_finish_\uc138\uc6d4\uad50_\ub0a0\uac1c_\ud328\uce58", + "community": 66, + "community_name": "B05 \ubcc0\ud615 \uc131\ud1a0\uba74 \ub9c8\uac10\u00b7\ub0a0\uac1c \ud328\uce58", + "norm_label": "\u1109\u1166\u110b\u116f\u11af\u1100\u116d \u1102\u1161\u11af\u1100\u1162 \u1111\u1162\u110e\u1175" + }, + { + "label": "\uc800\uc7a5\u00b7\uac80\uc99d", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_patch_finish.md", + "source_location": "L36", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_patch_finish_\uc800\uc7a5_\uac80\uc99d", + "community": 66, + "community_name": "B05 \ubcc0\ud615 \uc131\ud1a0\uba74 \ub9c8\uac10\u00b7\ub0a0\uac1c \ud328\uce58", + "norm_label": "\u110c\u1165\u110c\u1161\u11bc\u00b7\u1100\u1165\u11b7\u110c\u1173\u11bc" + }, + { + "label": "B05_corridor_plan_curves.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_plan_curves.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_plan_curves", + "community": 44, + "community_name": "\uc800\uc7a5 \uacbd\ub85c \uaddc\uce59 (Workflow-based Folder Structure)", + "norm_label": "b05_corridor_plan_curves.md" + }, + { + "label": "B05 \uad6c\uc870\ubb3c 3D \ud22c\uc601 \ucee4\ube0c", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_plan_curves.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_plan_curves_b05_\uad6c\uc870\ubb3c_3d_\ud22c\uc601_\ucee4\ube0c", + "community": 44, + "community_name": "\uc800\uc7a5 \uacbd\ub85c \uaddc\uce59 (Workflow-based Folder Structure)", + "norm_label": "b05 \u1100\u116e\u110c\u1169\u1106\u116e\u11af 3d \u1110\u116e\u110b\u1167\u11bc \u110f\u1165\u1107\u1173" + }, + { + "label": "\ucee4\ube0c \uc0dd\uc131\u00b7\ub80c\ub354", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_plan_curves.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_plan_curves_\ucee4\ube0c_\uc0dd\uc131_\ub80c\ub354", + "community": 44, + "community_name": "\uc800\uc7a5 \uacbd\ub85c \uaddc\uce59 (Workflow-based Folder Structure)", + "norm_label": "\u110f\u1165\u1107\u1173 \u1109\u1162\u11bc\u1109\u1165\u11bc\u00b7\u1105\u1166\u11ab\u1103\u1165" + }, + { + "label": "\ube44\ud0c8 \ud22c\uc601\u00b7\uc131\ud1a0\uba74 \uc808\ub2e8", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_plan_curves.md", + "source_location": "L28", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_plan_curves_\ube44\ud0c8_\ud22c\uc601_\uc131\ud1a0\uba74_\uc808\ub2e8", + "community": 44, + "community_name": "\uc800\uc7a5 \uacbd\ub85c \uaddc\uce59 (Workflow-based Folder Structure)", + "norm_label": "\u1107\u1175\u1110\u1161\u11af \u1110\u116e\u110b\u1167\u11bc\u00b7\u1109\u1165\u11bc\u1110\u1169\u1106\u1167\u11ab \u110c\u1165\u11af\u1103\u1161\u11ab" + }, + { + "label": "\uad6c\uc870\ubb3c \ub0a0\uac1c\u00b7\ubc14\ub2e5 \uc5f0\uacb0", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_plan_curves.md", + "source_location": "L42", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_plan_curves_\uad6c\uc870\ubb3c_\ub0a0\uac1c_\ubc14\ub2e5_\uc5f0\uacb0", + "community": 44, + "community_name": "\uc800\uc7a5 \uacbd\ub85c \uaddc\uce59 (Workflow-based Folder Structure)", + "norm_label": "\u1100\u116e\u110c\u1169\u1106\u116e\u11af \u1102\u1161\u11af\u1100\u1162\u00b7\u1107\u1161\u1103\u1161\u11a8 \u110b\u1167\u11ab\u1100\u1167\u11af" + }, + { + "label": "\uc800\uc7a5\u00b7\ud638\ud658\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_plan_curves.md", + "source_location": "L52", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_plan_curves_\uc800\uc7a5_\ud638\ud658\uc131", + "community": 44, + "community_name": "\uc800\uc7a5 \uacbd\ub85c \uaddc\uce59 (Workflow-based Folder Structure)", + "norm_label": "\u110c\u1165\u110c\u1161\u11bc\u00b7\u1112\u1169\u1112\u116a\u11ab\u1109\u1165\u11bc" + }, + { + "label": "\uac80\uc99d", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_plan_curves.md", + "source_location": "L61", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_plan_curves_\uac80\uc99d", + "community": 44, + "community_name": "\uc800\uc7a5 \uacbd\ub85c \uaddc\uce59 (Workflow-based Folder Structure)", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc" + }, + { + "label": "B05_corridor_surface.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_surface.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_surface", + "community": 52, + "community_name": "B05 \uacc4\ud68d\ub178\uc120 \ucf54\ub9ac\ub3c4 \uc0bc\uac01\ub9dd \uc11c\ud53c\uc2a4", + "norm_label": "b05_corridor_surface.md" + }, + { + "label": "B05 \uacc4\ud68d\ub178\uc120 \ucf54\ub9ac\ub3c4 \uc0bc\uac01\ub9dd \uc11c\ud53c\uc2a4", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_surface.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_surface_b05_\uacc4\ud68d\ub178\uc120_\ucf54\ub9ac\ub3c4_\uc0bc\uac01\ub9dd_\uc11c\ud53c\uc2a4", + "community": 52, + "community_name": "B05 \uacc4\ud68d\ub178\uc120 \ucf54\ub9ac\ub3c4 \uc0bc\uac01\ub9dd \uc11c\ud53c\uc2a4", + "norm_label": "b05 \u1100\u1168\u1112\u116c\u11a8\u1102\u1169\u1109\u1165\u11ab \u110f\u1169\u1105\u1175\u1103\u1169 \u1109\u1161\u11b7\u1100\u1161\u11a8\u1106\u1161\u11bc \u1109\u1165\u1111\u1175\u1109\u1173" + }, + { + "label": "\ud504\ub860\ud2b8\uc5d4\ub4dc \uad6c\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_surface.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_surface_\ud504\ub860\ud2b8\uc5d4\ub4dc_\uad6c\uc131", + "community": 52, + "community_name": "B05 \uacc4\ud68d\ub178\uc120 \ucf54\ub9ac\ub3c4 \uc0bc\uac01\ub9dd \uc11c\ud53c\uc2a4", + "norm_label": "\u1111\u1173\u1105\u1169\u11ab\u1110\u1173\u110b\u1166\u11ab\u1103\u1173 \u1100\u116e\u1109\u1165\u11bc" + }, + { + "label": "\uc800\uc7a5\u00b7\ud638\ud658\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_surface.md", + "source_location": "L30", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_surface_\uc800\uc7a5_\ud638\ud658\uc131", + "community": 52, + "community_name": "B05 \uacc4\ud68d\ub178\uc120 \ucf54\ub9ac\ub3c4 \uc0bc\uac01\ub9dd \uc11c\ud53c\uc2a4", + "norm_label": "\u110c\u1165\u110c\u1161\u11bc\u00b7\u1112\u1169\u1112\u116a\u11ab\u1109\u1165\u11bc" + }, + { + "label": "\uc9c4\ud589 \uc911 \uacc4\ud68d", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_surface.md", + "source_location": "L42", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_surface_\uc9c4\ud589_\uc911_\uacc4\ud68d", + "community": 52, + "community_name": "B05 \uacc4\ud68d\ub178\uc120 \ucf54\ub9ac\ub3c4 \uc0bc\uac01\ub9dd \uc11c\ud53c\uc2a4", + "norm_label": "\u110c\u1175\u11ab\u1112\u1162\u11bc \u110c\u116e\u11bc \u1100\u1168\u1112\u116c\u11a8" + }, + { + "label": "\uac80\uc99d", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_surface.md", + "source_location": "L46", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_surface_\uac80\uc99d", + "community": 52, + "community_name": "B05 \uacc4\ud68d\ub178\uc120 \ucf54\ub9ac\ub3c4 \uc0bc\uac01\ub9dd \uc11c\ud53c\uc2a4", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc" + }, + { + "label": "B05_corridor_turn_correction_plan.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_turn_correction_plan.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_turn_correction_plan", + "community": 38, + "community_name": "B05 \uae09\uc120\ud68c 3D \uad6d\ubd80 \ubcf4\uc815 \uacc4\ud68d", + "norm_label": "b05_corridor_turn_correction_plan.md" + }, + { + "label": "B05 \uae09\uc120\ud68c 3D \uad6d\ubd80 \ubcf4\uc815 \uacc4\ud68d", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_turn_correction_plan.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_turn_correction_plan_b05_\uae09\uc120\ud68c_3d_\uad6d\ubd80_\ubcf4\uc815_\uacc4\ud68d", + "community": 38, + "community_name": "B05 \uae09\uc120\ud68c 3D \uad6d\ubd80 \ubcf4\uc815 \uacc4\ud68d", + "norm_label": "b05 \u1100\u1173\u11b8\u1109\u1165\u11ab\u1112\u116c 3d \u1100\u116e\u11a8\u1107\u116e \u1107\u1169\u110c\u1165\u11bc \u1100\u1168\u1112\u116c\u11a8" + }, + { + "label": "\ubaa9\uc801\uacfc \uacbd\uacc4", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_turn_correction_plan.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_turn_correction_plan_\ubaa9\uc801\uacfc_\uacbd\uacc4", + "community": 38, + "community_name": "B05 \uae09\uc120\ud68c 3D \uad6d\ubd80 \ubcf4\uc815 \uacc4\ud68d", + "norm_label": "\u1106\u1169\u11a8\u110c\u1165\u11a8\u1100\u116a \u1100\u1167\u11bc\u1100\u1168" + }, + { + "label": "\uad6d\ubd80 \ud328\uce58 \uc808\ucc28", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_turn_correction_plan.md", + "source_location": "L18", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_turn_correction_plan_\uad6d\ubd80_\ud328\uce58_\uc808\ucc28", + "community": 38, + "community_name": "B05 \uae09\uc120\ud68c 3D \uad6d\ubd80 \ubcf4\uc815 \uacc4\ud68d", + "norm_label": "\u1100\u116e\u11a8\u1107\u116e \u1111\u1162\u110e\u1175 \u110c\u1165\u11af\u110e\u1161" + }, + { + "label": "\uad6c\uc870\ubb3c \uc5f0\ub3d9", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_turn_correction_plan.md", + "source_location": "L29", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_turn_correction_plan_\uad6c\uc870\ubb3c_\uc5f0\ub3d9", + "community": 38, + "community_name": "B05 \uae09\uc120\ud68c 3D \uad6d\ubd80 \ubcf4\uc815 \uacc4\ud68d", + "norm_label": "\u1100\u116e\u110c\u1169\u1106\u116e\u11af \u110b\u1167\u11ab\u1103\u1169\u11bc" + }, + { + "label": "\ud655\uc778\ub41c \ub178\uacac \ud655\uc7a5 \ud68c\uadc0", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_turn_correction_plan.md", + "source_location": "L37", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_turn_correction_plan_\ud655\uc778\ub41c_\ub178\uacac_\ud655\uc7a5_\ud68c\uadc0", + "community": 38, + "community_name": "B05 \uae09\uc120\ud68c 3D \uad6d\ubd80 \ubcf4\uc815 \uacc4\ud68d", + "norm_label": "\u1112\u116a\u11a8\u110b\u1175\u11ab\u1103\u116c\u11ab \u1102\u1169\u1100\u1167\u11ab \u1112\u116a\u11a8\u110c\u1161\u11bc \u1112\u116c\u1100\u1171" + }, + { + "label": "\uc644\ub8cc \uc870\uac74", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_corridor_turn_correction_plan.md", + "source_location": "L48", + "_origin": "ast", + "id": "pages_b05_profile_b05_corridor_turn_correction_plan_\uc644\ub8cc_\uc870\uac74", + "community": 38, + "community_name": "B05 \uae09\uc120\ud68c 3D \uad6d\ubd80 \ubcf4\uc815 \uacc4\ud68d", + "norm_label": "\u110b\u116a\u11ab\u1105\u116d \u110c\u1169\u1100\u1165\u11ab" + }, + { + "label": "B05_db.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_db.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_db", + "community": 100, + "community_name": "B05_Profile \u2014 DB \uc0ac\uc6a9 \uad00\uacc4", + "norm_label": "b05_db.md" + }, + { + "label": "B05_Profile \u2014 DB \uc0ac\uc6a9 \uad00\uacc4", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_db.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_db_b05_profile_db_\uc0ac\uc6a9_\uad00\uacc4", + "community": 100, + "community_name": "B05_Profile \u2014 DB \uc0ac\uc6a9 \uad00\uacc4", + "norm_label": "b05_profile \u2014 db \u1109\u1161\u110b\u116d\u11bc \u1100\u116a\u11ab\u1100\u1168" + }, + { + "label": "Repository \ud568\uc218", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_db.md", + "source_location": "L22", + "_origin": "ast", + "id": "pages_b05_profile_b05_db_repository_\ud568\uc218", + "community": 100, + "community_name": "B05_Profile \u2014 DB \uc0ac\uc6a9 \uad00\uacc4", + "norm_label": "repository \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "\uc800\uc7a5 \uacbd\ub85c", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_db.md", + "source_location": "L33", + "_origin": "ast", + "id": "pages_b05_profile_b05_db_\uc800\uc7a5_\uacbd\ub85c", + "community": 100, + "community_name": "B05_Profile \u2014 DB \uc0ac\uc6a9 \uad00\uacc4", + "norm_label": "\u110c\u1165\u110c\u1161\u11bc \u1100\u1167\u11bc\u1105\u1169" + }, + { + "label": "B05_dependencies.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_dependencies.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_dependencies", + "community": 131, + "community_name": "B05_Profile \u2014 Dependencies", + "norm_label": "b05_dependencies.md" + }, + { + "label": "B05_Profile \u2014 Dependencies", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_dependencies.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_dependencies_b05_profile_dependencies", + "community": 131, + "community_name": "B05_Profile \u2014 Dependencies", + "norm_label": "b05_profile \u2014 dependencies" + }, + { + "label": "\ud398\uc774\uc9c0 \ud30c\uc77c\ubcc4 \uc5f0\uacb0", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_dependencies.md", + "source_location": "L24", + "_origin": "ast", + "id": "pages_b05_profile_b05_dependencies_\ud398\uc774\uc9c0_\ud30c\uc77c\ubcc4_\uc5f0\uacb0", + "community": 131, + "community_name": "B05_Profile \u2014 Dependencies", + "norm_label": "\u1111\u1166\u110b\u1175\u110c\u1175 \u1111\u1161\u110b\u1175\u11af\u1107\u1167\u11af \u110b\u1167\u11ab\u1100\u1167\u11af" + }, + { + "label": "B05_frontend.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_frontend", + "community": 55, + "community_name": "B07 \uad6c\uc870\ubb3c \ud45c\uc900\ub3c4 \u2014 \uc870\uc0ac\u00b7\ud569\uc758\uc640 \ud604\uc7ac \ud1b5\ub85c", + "norm_label": "b05_frontend.md" + }, + { + "label": "B05_Profile \u2014 Frontend", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_frontend.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_frontend_b05_profile_frontend", + "community": 55, + "community_name": "B07 \uad6c\uc870\ubb3c \ud45c\uc900\ub3c4 \u2014 \uc870\uc0ac\u00b7\ud569\uc758\uc640 \ud604\uc7ac \ud1b5\ub85c", + "norm_label": "b05_profile \u2014 frontend" + }, + { + "label": "\ud83d\udcc2 \uc18c\uc2a4\ucf54\ub4dc 1:1 \uc138\ubd84\ud654 \uc704\ud0a4 \ud30c\uc77c \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_frontend.md", + "source_location": "L18", + "_origin": "ast", + "id": "pages_b05_profile_b05_frontend_\uc18c\uc2a4\ucf54\ub4dc_1_1_\uc138\ubd84\ud654_\uc704\ud0a4_\ud30c\uc77c_\ubaa9\ub85d", + "community": 55, + "community_name": "B07 \uad6c\uc870\ubb3c \ud45c\uc900\ub3c4 \u2014 \uc870\uc0ac\u00b7\ud569\uc758\uc640 \ud604\uc7ac \ud1b5\ub85c", + "norm_label": "\ud83d\udcc2 \u1109\u1169\u1109\u1173\u110f\u1169\u1103\u1173 1:1 \u1109\u1166\u1107\u116e\u11ab\u1112\u116a \u110b\u1171\u110f\u1175 \u1111\u1161\u110b\u1175\u11af \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udccb \ud575\uc2ec \ud504\ub860\ud2b8\uc5d4\ub4dc \uc544\ud0a4\ud14d\ucc98 \uac1c\uc694", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_frontend.md", + "source_location": "L45", + "_origin": "ast", + "id": "pages_b05_profile_b05_frontend_\ud575\uc2ec_\ud504\ub860\ud2b8\uc5d4\ub4dc_\uc544\ud0a4\ud14d\ucc98_\uac1c\uc694", + "community": 55, + "community_name": "B07 \uad6c\uc870\ubb3c \ud45c\uc900\ub3c4 \u2014 \uc870\uc0ac\u00b7\ud569\uc758\uc640 \ud604\uc7ac \ud1b5\ub85c", + "norm_label": "\ud83d\udccb \u1112\u1162\u11a8\u1109\u1175\u11b7 \u1111\u1173\u1105\u1169\u11ab\u1110\u1173\u110b\u1166\u11ab\u1103\u1173 \u110b\u1161\u110f\u1175\u1110\u1166\u11a8\u110e\u1165 \u1100\u1162\u110b\u116d" + }, + { + "label": "\ub0a8\uc740 \ud30c\uc77c \ud55c\uacc4", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_frontend.md", + "source_location": "L62", + "_origin": "ast", + "id": "pages_b05_profile_b05_frontend_\ub0a8\uc740_\ud30c\uc77c_\ud55c\uacc4", + "community": 55, + "community_name": "B07 \uad6c\uc870\ubb3c \ud45c\uc900\ub3c4 \u2014 \uc870\uc0ac\u00b7\ud569\uc758\uc640 \ud604\uc7ac \ud1b5\ub85c", + "norm_label": "\u1102\u1161\u11b7\u110b\u1173\u11ab \u1111\u1161\u110b\u1175\u11af \u1112\u1161\u11ab\u1100\u1168" + }, + { + "label": "\uc885\ub2e8\ud14c\uc774\ube14 \ud45c\uc2dc \ubcf4\uc815", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_frontend.md", + "source_location": "L66", + "_origin": "ast", + "id": "pages_b05_profile_b05_frontend_\uc885\ub2e8\ud14c\uc774\ube14_\ud45c\uc2dc_\ubcf4\uc815", + "community": 55, + "community_name": "B07 \uad6c\uc870\ubb3c \ud45c\uc900\ub3c4 \u2014 \uc870\uc0ac\u00b7\ud569\uc758\uc640 \ud604\uc7ac \ud1b5\ub85c", + "norm_label": "\u110c\u1169\u11bc\u1103\u1161\u11ab\u1110\u1166\u110b\u1175\u1107\u1173\u11af \u1111\u116d\u1109\u1175 \u1107\u1169\u110c\u1165\u11bc" + }, + { + "label": "\uc885\ub2e8 \ud3b8\uc9d1 \uc548\uc804\uc7a5\uce58", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_frontend.md", + "source_location": "L70", + "_origin": "ast", + "id": "pages_b05_profile_b05_frontend_\uc885\ub2e8_\ud3b8\uc9d1_\uc548\uc804\uc7a5\uce58", + "community": 55, + "community_name": "B07 \uad6c\uc870\ubb3c \ud45c\uc900\ub3c4 \u2014 \uc870\uc0ac\u00b7\ud569\uc758\uc640 \ud604\uc7ac \ud1b5\ub85c", + "norm_label": "\u110c\u1169\u11bc\u1103\u1161\u11ab \u1111\u1167\u11ab\u110c\u1175\u11b8 \u110b\u1161\u11ab\u110c\u1165\u11ab\u110c\u1161\u11bc\u110e\u1175" + }, + { + "label": "B05_frontend_alignment.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_frontend_alignment.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_frontend_alignment", + "community": 67, + "community_name": "B05_Profile \u2014 Profile Alignment & Table", + "norm_label": "b05_frontend_alignment.md" + }, + { + "label": "B05_Profile \u2014 Profile Alignment & Table", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_frontend_alignment.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_frontend_alignment_b05_profile_profile_alignment_table", + "community": 67, + "community_name": "B05_Profile \u2014 Profile Alignment & Table", + "norm_label": "b05_profile \u2014 profile alignment & table" + }, + { + "label": "\uc885\ub2e8 \uacc4\ud68d\uace0 \ud3b8\uc9d1 \uc778\ud130\ub799\uc158 (`_UI_Profile_Edit.ts`, `_UI_Profile_Panel.ts`, `_UI_Page.ts`)", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_frontend_alignment.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b05_profile_b05_frontend_alignment_\uc885\ub2e8_\uacc4\ud68d\uace0_\ud3b8\uc9d1_\uc778\ud130\ub799\uc158_ui_profile_edit_ts_ui_profile_panel_ts_ui_page_ts", + "community": 67, + "community_name": "B05_Profile \u2014 Profile Alignment & Table", + "norm_label": "\u110c\u1169\u11bc\u1103\u1161\u11ab \u1100\u1168\u1112\u116c\u11a8\u1100\u1169 \u1111\u1167\u11ab\u110c\u1175\u11b8 \u110b\u1175\u11ab\u1110\u1165\u1105\u1162\u11a8\u1109\u1167\u11ab (`_ui_profile_edit.ts`, `_ui_profile_panel.ts`, `_ui_page.ts`)" + }, + { + "label": "12\ud589 \ub3c4\uba74 \ud14c\uc774\ube14 \ubc0f \uac00\ub85c \uc2a4\ud06c\ub864 \uc815\ub82c \uac1c\ud3b8 (`_UI_Profile_Table.ts`, `_UI_Profile_Panel.ts`)", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_frontend_alignment.md", + "source_location": "L22", + "_origin": "ast", + "id": "pages_b05_profile_b05_frontend_alignment_12\ud589_\ub3c4\uba74_\ud14c\uc774\ube14_\ubc0f_\uac00\ub85c_\uc2a4\ud06c\ub864_\uc815\ub82c_\uac1c\ud3b8_ui_profile_table_ts_ui_profile_panel_ts", + "community": 67, + "community_name": "B05_Profile \u2014 Profile Alignment & Table", + "norm_label": "12\u1112\u1162\u11bc \u1103\u1169\u1106\u1167\u11ab \u1110\u1166\u110b\u1175\u1107\u1173\u11af \u1106\u1175\u11be \u1100\u1161\u1105\u1169 \u1109\u1173\u110f\u1173\u1105\u1169\u11af \u110c\u1165\u11bc\u1105\u1167\u11af \u1100\u1162\u1111\u1167\u11ab (`_ui_profile_table.ts`, `_ui_profile_panel.ts`)" + }, + { + "label": "\ube44\uc815\uaddc \uce21\uc810(\uad6c\uc870\ubb3c) \ud14c\uc774\ube14 \uc624\ubc84\ub808\uc774 & \ub7f0\ud0c0\uc784 \uac80\uc99d (`_UI_Profile_Table.ts`, `_UI_IrregularStations.ts`)", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_frontend_alignment.md", + "source_location": "L42", + "_origin": "ast", + "id": "pages_b05_profile_b05_frontend_alignment_\ube44\uc815\uaddc_\uce21\uc810_\uad6c\uc870\ubb3c_\ud14c\uc774\ube14_\uc624\ubc84\ub808\uc774_\ub7f0\ud0c0\uc784_\uac80\uc99d_ui_profile_table_ts_ui_irregularstations_ts", + "community": 67, + "community_name": "B05_Profile \u2014 Profile Alignment & Table", + "norm_label": "\u1107\u1175\u110c\u1165\u11bc\u1100\u1172 \u110e\u1173\u11a8\u110c\u1165\u11b7(\u1100\u116e\u110c\u1169\u1106\u116e\u11af) \u1110\u1166\u110b\u1175\u1107\u1173\u11af \u110b\u1169\u1107\u1165\u1105\u1166\u110b\u1175 & \u1105\u1165\u11ab\u1110\u1161\u110b\u1175\u11b7 \u1100\u1165\u11b7\u110c\u1173\u11bc (`_ui_profile_table.ts`, `_ui_irregularstations.ts`)" + }, + { + "label": "B05_frontend_viewer.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_frontend_viewer.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_frontend_viewer", + "community": 101, + "community_name": "B05_Profile \u2014 3D Viewer & Interaction", + "norm_label": "b05_frontend_viewer.md" + }, + { + "label": "B05_Profile \u2014 3D Viewer & Interaction", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_frontend_viewer.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_frontend_viewer_b05_profile_3d_viewer_interaction", + "community": 101, + "community_name": "B05_Profile \u2014 3D Viewer & Interaction", + "norm_label": "b05_profile \u2014 3d viewer & interaction" + }, + { + "label": "3D \uc9c0\ud615 \ubdf0\ud3ec\ud2b8 \uc2dc\uac01\ud654 (`_UI_Viewer.ts`, `_UI_Markers.ts`)", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_frontend_viewer.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b05_profile_b05_frontend_viewer_3d_\uc9c0\ud615_\ubdf0\ud3ec\ud2b8_\uc2dc\uac01\ud654_ui_viewer_ts_ui_markers_ts", + "community": 101, + "community_name": "B05_Profile \u2014 3D Viewer & Interaction", + "norm_label": "3d \u110c\u1175\u1112\u1167\u11bc \u1107\u1172\u1111\u1169\u1110\u1173 \u1109\u1175\u1100\u1161\u11a8\u1112\u116a (`_ui_viewer.ts`, `_ui_markers.ts`)" + }, + { + "label": "3D \ub9c8\ucee4 \uc9c1\uc811 \ub4dc\ub798\uadf8 \uc774\ub3d9 (0_old I-401 \uc774\uc2dd)", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_frontend_viewer.md", + "source_location": "L19", + "_origin": "ast", + "id": "pages_b05_profile_b05_frontend_viewer_3d_\ub9c8\ucee4_\uc9c1\uc811_\ub4dc\ub798\uadf8_\uc774\ub3d9_0_old_i_401_\uc774\uc2dd", + "community": 101, + "community_name": "B05_Profile \u2014 3D Viewer & Interaction", + "norm_label": "3d \u1106\u1161\u110f\u1165 \u110c\u1175\u11a8\u110c\u1165\u11b8 \u1103\u1173\u1105\u1162\u1100\u1173 \u110b\u1175\u1103\u1169\u11bc (0_old i-401 \u110b\u1175\u1109\u1175\u11a8)" + }, + { + "label": "B05_masshaul_structure_2026_09.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_masshaul_structure_2026_09.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_masshaul_structure_2026_09", + "community": 166, + "community_name": "B05 \uc885\ub2e8\uace1\uc120\u00b7\uc2e4\uc2dc\uac04 \ud6a1\ub2e8 \uc5f0\ub3d9", + "norm_label": "b05_masshaul_structure_2026_09.md" + }, + { + "label": "B05 \uc720\ud1a0\uace1\uc120\u00b7\uad6c\uc870\ubb3c \ud6c4\uc18d", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_masshaul_structure_2026_09.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_masshaul_structure_2026_09_b05_\uc720\ud1a0\uace1\uc120_\uad6c\uc870\ubb3c_\ud6c4\uc18d", + "community": 166, + "community_name": "B05 \uc885\ub2e8\uace1\uc120\u00b7\uc2e4\uc2dc\uac04 \ud6a1\ub2e8 \uc5f0\ub3d9", + "norm_label": "b05 \u110b\u1172\u1110\u1169\u1100\u1169\u11a8\u1109\u1165\u11ab\u00b7\u1100\u116e\u110c\u1169\u1106\u116e\u11af \u1112\u116e\u1109\u1169\u11a8" + }, + { + "label": "\uc720\ud1a0\uace1\uc120 \uacf5\uc6a9\ud654", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_masshaul_structure_2026_09.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b05_profile_b05_masshaul_structure_2026_09_\uc720\ud1a0\uace1\uc120_\uacf5\uc6a9\ud654", + "community": 166, + "community_name": "B05 \uc885\ub2e8\uace1\uc120\u00b7\uc2e4\uc2dc\uac04 \ud6a1\ub2e8 \uc5f0\ub3d9", + "norm_label": "\u110b\u1172\u1110\u1169\u1100\u1169\u11a8\u1109\u1165\u11ab \u1100\u1169\u11bc\u110b\u116d\u11bc\u1112\u116a" + }, + { + "label": "\uc720\uc9c0\u00b7\ud310\uc815 \uc0ac\ud56d", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_masshaul_structure_2026_09.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b05_profile_b05_masshaul_structure_2026_09_\uc720\uc9c0_\ud310\uc815_\uc0ac\ud56d", + "community": 166, + "community_name": "B05 \uc885\ub2e8\uace1\uc120\u00b7\uc2e4\uc2dc\uac04 \ud6a1\ub2e8 \uc5f0\ub3d9", + "norm_label": "\u110b\u1172\u110c\u1175\u00b7\u1111\u1161\u11ab\u110c\u1165\u11bc \u1109\u1161\u1112\u1161\u11bc" + }, + { + "label": "B05_profile_interaction_2026_09.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_profile_interaction_2026_09.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_profile_interaction_2026_09", + "community": 167, + "community_name": "B06 \ud6a1\ub2e8 \uacc4\uc0b0 \ubbf8\ub7ec\u00b7\uce74\ub4dc \ud45c\uae30", + "norm_label": "b05_profile_interaction_2026_09.md" + }, + { + "label": "B05 \uc885\ub2e8\uace1\uc120\u00b7\uc2e4\uc2dc\uac04 \ud6a1\ub2e8 \uc5f0\ub3d9", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_profile_interaction_2026_09.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_profile_interaction_2026_09_b05_\uc885\ub2e8\uace1\uc120_\uc2e4\uc2dc\uac04_\ud6a1\ub2e8_\uc5f0\ub3d9", + "community": 167, + "community_name": "B06 \ud6a1\ub2e8 \uacc4\uc0b0 \ubbf8\ub7ec\u00b7\uce74\ub4dc \ud45c\uae30", + "norm_label": "b05 \u110c\u1169\u11bc\u1103\u1161\u11ab\u1100\u1169\u11a8\u1109\u1165\u11ab\u00b7\u1109\u1175\u11af\u1109\u1175\u1100\u1161\u11ab \u1112\u116c\u11bc\u1103\u1161\u11ab \u110b\u1167\u11ab\u1103\u1169\u11bc" + }, + { + "label": "\ucd08\uae30 \uc885\ub2e8\uace1\uc120", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_profile_interaction_2026_09.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b05_profile_b05_profile_interaction_2026_09_\ucd08\uae30_\uc885\ub2e8\uace1\uc120", + "community": 167, + "community_name": "B06 \ud6a1\ub2e8 \uacc4\uc0b0 \ubbf8\ub7ec\u00b7\uce74\ub4dc \ud45c\uae30", + "norm_label": "\u110e\u1169\u1100\u1175 \u110c\u1169\u11bc\u1103\u1161\u11ab\u1100\u1169\u11a8\u1109\u1165\u11ab" + }, + { + "label": "\uc2e4\uc2dc\uac04 \ud6a1\ub2e8\u00b7\uc720\ud1a0\uace1\uc120", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_profile_interaction_2026_09.md", + "source_location": "L24", + "_origin": "ast", + "id": "pages_b05_profile_b05_profile_interaction_2026_09_\uc2e4\uc2dc\uac04_\ud6a1\ub2e8_\uc720\ud1a0\uace1\uc120", + "community": 167, + "community_name": "B06 \ud6a1\ub2e8 \uacc4\uc0b0 \ubbf8\ub7ec\u00b7\uce74\ub4dc \ud45c\uae30", + "norm_label": "\u1109\u1175\u11af\u1109\u1175\u1100\u1161\u11ab \u1112\u116c\u11bc\u1103\u1161\u11ab\u00b7\u110b\u1172\u1110\u1169\u1100\u1169\u11a8\u1109\u1165\u11ab" + }, + { + "label": "B05_structure_stations.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_structure_stations.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_structure_stations", + "community": 68, + "community_name": "B05 \uad6c\uc870\ubb3c \ube44\uc815\uaddc \uce21\uc810 \uacf5\uae09", + "norm_label": "b05_structure_stations.md" + }, + { + "label": "B05 \uad6c\uc870\ubb3c \ube44\uc815\uaddc \uce21\uc810 \uacf5\uae09", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_structure_stations.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_structure_stations_b05_\uad6c\uc870\ubb3c_\ube44\uc815\uaddc_\uce21\uc810_\uacf5\uae09", + "community": 68, + "community_name": "B05 \uad6c\uc870\ubb3c \ube44\uc815\uaddc \uce21\uc810 \uacf5\uae09", + "norm_label": "b05 \u1100\u116e\u110c\u1169\u1106\u116e\u11af \u1107\u1175\u110c\u1165\u11bc\u1100\u1172 \u110e\u1173\u11a8\u110c\u1165\u11b7 \u1100\u1169\u11bc\u1100\u1173\u11b8" + }, + { + "label": "\uacf5\uae09 \uacbd\ub85c", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_structure_stations.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_b05_structure_stations_\uacf5\uae09_\uacbd\ub85c", + "community": 68, + "community_name": "B05 \uad6c\uc870\ubb3c \ube44\uc815\uaddc \uce21\uc810 \uacf5\uae09", + "norm_label": "\u1100\u1169\u11bc\u1100\u1173\u11b8 \u1100\u1167\u11bc\u1105\u1169" + }, + { + "label": "\uc815\ubcf8 \uaddc\uce59", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_structure_stations.md", + "source_location": "L24", + "_origin": "ast", + "id": "pages_b05_profile_b05_structure_stations_\uc815\ubcf8_\uaddc\uce59", + "community": 68, + "community_name": "B05 \uad6c\uc870\ubb3c \ube44\uc815\uaddc \uce21\uc810 \uacf5\uae09", + "norm_label": "\u110c\u1165\u11bc\u1107\u1169\u11ab \u1100\u1172\u110e\u1175\u11a8" + }, + { + "label": "\uac80\uc99d", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_structure_stations.md", + "source_location": "L34", + "_origin": "ast", + "id": "pages_b05_profile_b05_structure_stations_\uac80\uc99d", + "community": 68, + "community_name": "B05 \uad6c\uc870\ubb3c \ube44\uc815\uaddc \uce21\uc810 \uacf5\uae09", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc" + }, + { + "label": "B05_structures.md", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_structures.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_b05_structures", + "community": 22, + "community_name": "B05 \uad6c\uc870\ubb3c \uc815\ubcf8\u00b7\ud1b5\ud569 \ud3b8\uc9d1", + "norm_label": "b05_structures.md" + }, + { + "label": "B05 \uad6c\uc870\ubb3c \uc815\ubcf8\u00b7\ud1b5\ud569 \ud3b8\uc9d1", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_structures.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_b05_structures_b05_\uad6c\uc870\ubb3c_\uc815\ubcf8_\ud1b5\ud569_\ud3b8\uc9d1", + "community": 22, + "community_name": "B05 \uad6c\uc870\ubb3c \uc815\ubcf8\u00b7\ud1b5\ud569 \ud3b8\uc9d1", + "norm_label": "b05 \u1100\u116e\u110c\u1169\u1106\u116e\u11af \u110c\u1165\u11bc\u1107\u1169\u11ab\u00b7\u1110\u1169\u11bc\u1112\u1161\u11b8 \u1111\u1167\u11ab\u110c\u1175\u11b8" + }, + { + "label": "\uc815\ubcf8\uacfc \ud0c0\uc785 \ub808\uc9c0\uc2a4\ud2b8\ub9ac", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_structures.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_b05_structures_\uc815\ubcf8\uacfc_\ud0c0\uc785_\ub808\uc9c0\uc2a4\ud2b8\ub9ac", + "community": 22, + "community_name": "B05 \uad6c\uc870\ubb3c \uc815\ubcf8\u00b7\ud1b5\ud569 \ud3b8\uc9d1", + "norm_label": "\u110c\u1165\u11bc\u1107\u1169\u11ab\u1100\u116a \u1110\u1161\u110b\u1175\u11b8 \u1105\u1166\u110c\u1175\u1109\u1173\u1110\u1173\u1105\u1175" + }, + { + "label": "\ubc30\uc218\uad00\u00b7\uc2dc\uc124 \uc635\uc158", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_structures.md", + "source_location": "L24", + "_origin": "ast", + "id": "pages_b05_profile_b05_structures_\ubc30\uc218\uad00_\uc2dc\uc124_\uc635\uc158", + "community": 22, + "community_name": "B05 \uad6c\uc870\ubb3c \uc815\ubcf8\u00b7\ud1b5\ud569 \ud3b8\uc9d1", + "norm_label": "\u1107\u1162\u1109\u116e\u1100\u116a\u11ab\u00b7\u1109\u1175\u1109\u1165\u11af \u110b\u1169\u11b8\u1109\u1167\u11ab" + }, + { + "label": "\ubc31\uc5d4\ub4dc \ud30c\uc77c", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_structures.md", + "source_location": "L35", + "_origin": "ast", + "id": "pages_b05_profile_b05_structures_\ubc31\uc5d4\ub4dc_\ud30c\uc77c", + "community": 22, + "community_name": "B05 \uad6c\uc870\ubb3c \uc815\ubcf8\u00b7\ud1b5\ud569 \ud3b8\uc9d1", + "norm_label": "\u1107\u1162\u11a8\u110b\u1166\u11ab\u1103\u1173 \u1111\u1161\u110b\u1175\u11af" + }, + { + "label": "\ud504\ub860\ud2b8\uc5d4\ub4dc \ud30c\uc77c\uacfc \ub3d9\uc791", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_structures.md", + "source_location": "L44", + "_origin": "ast", + "id": "pages_b05_profile_b05_structures_\ud504\ub860\ud2b8\uc5d4\ub4dc_\ud30c\uc77c\uacfc_\ub3d9\uc791", + "community": 22, + "community_name": "B05 \uad6c\uc870\ubb3c \uc815\ubcf8\u00b7\ud1b5\ud569 \ud3b8\uc9d1", + "norm_label": "\u1111\u1173\u1105\u1169\u11ab\u1110\u1173\u110b\u1166\u11ab\u1103\u1173 \u1111\u1161\u110b\u1175\u11af\u1100\u116a \u1103\u1169\u11bc\u110c\u1161\u11a8" + }, + { + "label": "\uc720\uc5ed \ucd94\ucc9c\u00b7\uac1c\ub7b5 \ub2e8\uba74", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_structures.md", + "source_location": "L57", + "_origin": "ast", + "id": "pages_b05_profile_b05_structures_\uc720\uc5ed_\ucd94\ucc9c_\uac1c\ub7b5_\ub2e8\uba74", + "community": 22, + "community_name": "B05 \uad6c\uc870\ubb3c \uc815\ubcf8\u00b7\ud1b5\ud569 \ud3b8\uc9d1", + "norm_label": "\u110b\u1172\u110b\u1167\u11a8 \u110e\u116e\u110e\u1165\u11ab\u00b7\u1100\u1162\u1105\u1163\u11a8 \u1103\u1161\u11ab\u1106\u1167\u11ab" + }, + { + "label": "API", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_structures.md", + "source_location": "L67", + "_origin": "ast", + "id": "pages_b05_profile_b05_structures_api", + "community": 22, + "community_name": "B05 \uad6c\uc870\ubb3c \uc815\ubcf8\u00b7\ud1b5\ud569 \ud3b8\uc9d1", + "norm_label": "api" + }, + { + "label": "B06 \uacbd\uacc4\uc640 \ub0a8\uc740 \ubc94\uc704", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_structures.md", + "source_location": "L75", + "_origin": "ast", + "id": "pages_b05_profile_b05_structures_b06_\uacbd\uacc4\uc640_\ub0a8\uc740_\ubc94\uc704", + "community": 22, + "community_name": "B05 \uad6c\uc870\ubb3c \uc815\ubcf8\u00b7\ud1b5\ud569 \ud3b8\uc9d1", + "norm_label": "b06 \u1100\u1167\u11bc\u1100\u1168\u110b\u116a \u1102\u1161\u11b7\u110b\u1173\u11ab \u1107\u1165\u11b7\u110b\u1171" + }, + { + "label": "\uac80\uc99d", + "file_type": "document", + "source_file": "pages/B05_Profile/B05_structures.md", + "source_location": "L81", + "_origin": "ast", + "id": "pages_b05_profile_b05_structures_\uac80\uc99d", + "community": 22, + "community_name": "B05 \uad6c\uc870\ubb3c \uc815\ubcf8\u00b7\ud1b5\ud569 \ud3b8\uc9d1", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc" + }, + { + "label": "B05_Profile_Engine_Grade.md", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Grade.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_engine_grade", + "community": 132, + "community_name": "B05_Profile_Engine_Grade.md", + "norm_label": "b05_profile_engine_grade.md" + }, + { + "label": "B05_Profile_Engine_Grade.py", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Grade.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_engine_grade_b05_profile_engine_grade_py", + "community": 132, + "community_name": "B05_Profile_Engine_Grade.md", + "norm_label": "b05_profile_engine_grade.py" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud074\ub798\uc2a4 \ubc0f \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Grade.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_engine_grade_\uc8fc\uc694_\ud074\ub798\uc2a4_\ubc0f_\ud568\uc218_\ubaa9\ub85d", + "community": 132, + "community_name": "B05_Profile_Engine_Grade.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u110f\u1173\u11af\u1105\u1162\u1109\u1173 \u1106\u1175\u11be \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Grade.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_engine_grade_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 132, + "community_name": "B05_Profile_Engine_Grade.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B05_Profile_Engine_Sections.md", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Sections.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_engine_sections", + "community": 102, + "community_name": "B05_Profile_Engine_Sections.md", + "norm_label": "b05_profile_engine_sections.md" + }, + { + "label": "B05_Profile_Engine_Sections.py", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Sections.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_engine_sections_b05_profile_engine_sections_py", + "community": 102, + "community_name": "B05_Profile_Engine_Sections.md", + "norm_label": "b05_profile_engine_sections.py" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Sections.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_engine_sections_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 102, + "community_name": "B05_Profile_Engine_Sections.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\u26a0\ufe0f \ub7f0\ud0c0\uc784 \uac80\uc99d \uc8fc\uc758\uc0ac\ud56d (2026-07-24 \uac80\uc99d \ubcf4\uace0\uc11c \uae30\uc900)", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Sections.md", + "source_location": "L24", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_engine_sections_\ub7f0\ud0c0\uc784_\uac80\uc99d_\uc8fc\uc758\uc0ac\ud56d_2026_07_24_\uac80\uc99d_\ubcf4\uace0\uc11c_\uae30\uc900", + "community": 102, + "community_name": "B05_Profile_Engine_Sections.md", + "norm_label": "\u26a0\ufe0f \u1105\u1165\u11ab\u1110\u1161\u110b\u1175\u11b7 \u1100\u1165\u11b7\u110c\u1173\u11bc \u110c\u116e\u110b\u1174\u1109\u1161\u1112\u1161\u11bc (2026-07-24 \u1100\u1165\u11b7\u110c\u1173\u11bc \u1107\u1169\u1100\u1169\u1109\u1165 \u1100\u1175\u110c\u116e\u11ab)" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Sections.md", + "source_location": "L28", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_engine_sections_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 102, + "community_name": "B05_Profile_Engine_Sections.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B05_Profile_Engine_Solver.md", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Solver.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_engine_solver", + "community": 133, + "community_name": "B05_Profile_Engine_Solver.md", + "norm_label": "b05_profile_engine_solver.md" + }, + { + "label": "B05_Profile_Engine_Solver.py", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Solver.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_engine_solver_b05_profile_engine_solver_py", + "community": 133, + "community_name": "B05_Profile_Engine_Solver.md", + "norm_label": "b05_profile_engine_solver.py" + }, + { + "label": "\ud83d\udee0\ufe0f \uc5d4\uc9c4 \ud575\uc2ec \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Solver.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_engine_solver_\uc5d4\uc9c4_\ud575\uc2ec_\ud568\uc218_\ubaa9\ub85d", + "community": 133, + "community_name": "B05_Profile_Engine_Solver.md", + "norm_label": "\ud83d\udee0\ufe0f \u110b\u1166\u11ab\u110c\u1175\u11ab \u1112\u1162\u11a8\u1109\u1175\u11b7 \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Solver.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_engine_solver_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 133, + "community_name": "B05_Profile_Engine_Solver.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B05_Profile_Repository.md", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Repository.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_repository", + "community": 134, + "community_name": "B05_Profile_Repository.md", + "norm_label": "b05_profile_repository.md" + }, + { + "label": "B05_Profile_Repository.py", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Repository.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_repository_b05_profile_repository_py", + "community": 134, + "community_name": "B05_Profile_Repository.md", + "norm_label": "b05_profile_repository.py" + }, + { + "label": "\ud83d\udee0\ufe0f DB \uc811\uadfc \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Repository.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_repository_db_\uc811\uadfc_\ud568\uc218_\ubaa9\ub85d", + "community": 134, + "community_name": "B05_Profile_Repository.md", + "norm_label": "\ud83d\udee0\ufe0f db \u110c\u1165\u11b8\u1100\u1173\u11ab \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Repository.md", + "source_location": "L27", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_repository_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 134, + "community_name": "B05_Profile_Repository.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B05_Profile_Router.md", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Router.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_router", + "community": 135, + "community_name": "B05_Profile_Router.md", + "norm_label": "b05_profile_router.md" + }, + { + "label": "B05_Profile_Router.py", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Router.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_router_b05_profile_router_py", + "community": 135, + "community_name": "B05_Profile_Router.md", + "norm_label": "b05_profile_router.py" + }, + { + "label": "\ud83d\udee0\ufe0f \ub77c\uc6b0\ud130 API \ubc0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Router.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_router_\ub77c\uc6b0\ud130_api_\ubc0f_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 135, + "community_name": "B05_Profile_Router.md", + "norm_label": "\ud83d\udee0\ufe0f \u1105\u1161\u110b\u116e\u1110\u1165 api \u1106\u1175\u11be \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \ubaa8\ub4c8 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Router.md", + "source_location": "L24", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_router_\uc5f0\uad00_\ubaa8\ub4c8_\ubc0f_\uc758\uc874\uc131", + "community": 135, + "community_name": "B05_Profile_Router.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1106\u1169\u1103\u1172\u11af \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B05_Profile_Router_Confirm.md", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Router_Confirm.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_router_confirm", + "community": 136, + "community_name": "B05_Profile_Router_Confirm.md", + "norm_label": "b05_profile_router_confirm.md" + }, + { + "label": "B05_Profile_Router_Confirm.py", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Router_Confirm.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_router_confirm_b05_profile_router_confirm_py", + "community": 136, + "community_name": "B05_Profile_Router_Confirm.md", + "norm_label": "b05_profile_router_confirm.py" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud5ec\ud37c \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Router_Confirm.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_router_confirm_\uc8fc\uc694_\ud5ec\ud37c_\ud568\uc218_\ubaa9\ub85d", + "community": 136, + "community_name": "B05_Profile_Router_Confirm.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1166\u11af\u1111\u1165 \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \ubaa8\ub4c8", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Router_Confirm.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_router_confirm_\uc5f0\uad00_\ubaa8\ub4c8", + "community": 136, + "community_name": "B05_Profile_Router_Confirm.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1106\u1169\u1103\u1172\u11af" + }, + { + "label": "B05_Profile_Schema.md", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Schema.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_schema", + "community": 137, + "community_name": "B05_Profile_Schema.md", + "norm_label": "b05_profile_schema.md" + }, + { + "label": "B05_Profile_Schema.py", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Schema.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_schema_b05_profile_schema_py", + "community": 137, + "community_name": "B05_Profile_Schema.md", + "norm_label": "b05_profile_schema.py" + }, + { + "label": "\ud83d\udee0\ufe0f Pydantic \ubaa8\ub378 \ubc0f \uac80\uc99d \ud5ec\ud37c \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Schema.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_schema_pydantic_\ubaa8\ub378_\ubc0f_\uac80\uc99d_\ud5ec\ud37c_\ubaa9\ub85d", + "community": 137, + "community_name": "B05_Profile_Schema.md", + "norm_label": "\ud83d\udee0\ufe0f pydantic \u1106\u1169\u1103\u1166\u11af \u1106\u1175\u11be \u1100\u1165\u11b7\u110c\u1173\u11bc \u1112\u1166\u11af\u1111\u1165 \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/backend/B05_Profile_Schema.md", + "source_location": "L29", + "_origin": "ast", + "id": "pages_b05_profile_backend_b05_profile_schema_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 137, + "community_name": "B05_Profile_Schema.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B05_Profile_Api_Fetch.md", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_Api_Fetch.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_api_fetch", + "community": 103, + "community_name": "B05_Profile_Api_Fetch.ts", + "norm_label": "b05_profile_api_fetch.md" + }, + { + "label": "B05_Profile_Api_Fetch.ts", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_Api_Fetch.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_api_fetch_b05_profile_api_fetch_ts", + "community": 103, + "community_name": "B05_Profile_Api_Fetch.ts", + "norm_label": "b05_profile_api_fetch.ts" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 API \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_Api_Fetch.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_api_fetch_\uc8fc\uc694_api_\ud568\uc218_\ubaa9\ub85d", + "community": 103, + "community_name": "B05_Profile_Api_Fetch.ts", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d api \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_Api_Fetch.md", + "source_location": "L24", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_api_fetch_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 103, + "community_name": "B05_Profile_Api_Fetch.ts", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B05_Profile_UI_Drainage_Panel.md", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Panel.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_drainage_panel", + "community": 104, + "community_name": "B05_Profile_UI_Drainage_Panel", + "norm_label": "b05_profile_ui_drainage_panel.md" + }, + { + "label": "B05_Profile_UI_Drainage_Panel", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Panel.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_drainage_panel_b05_profile_ui_drainage_panel", + "community": 104, + "community_name": "B05_Profile_UI_Drainage_Panel", + "norm_label": "b05_profile_ui_drainage_panel" + }, + { + "label": "\ud83d\udccb \uac1c\uc694 \ubc0f \ud2b9\uc9d5", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Panel.md", + "source_location": "L13", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_drainage_panel_\uac1c\uc694_\ubc0f_\ud2b9\uc9d5", + "community": 104, + "community_name": "B05_Profile_UI_Drainage_Panel", + "norm_label": "\ud83d\udccb \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u1110\u1173\u11a8\u110c\u1175\u11bc" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 / \uc2ec\ubcfc \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Panel.md", + "source_location": "L17", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_drainage_panel_\uc8fc\uc694_\ud568\uc218_\uc2ec\ubcfc_\ubaa9\ub85d", + "community": 104, + "community_name": "B05_Profile_UI_Drainage_Panel", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e / \u1109\u1175\u11b7\u1107\u1169\u11af \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "B05_Profile_UI_Drainage_Parts.md", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Parts.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_drainage_parts", + "community": 69, + "community_name": "B05_Profile_UI_Drainage_Parts \u2014 \ubc30\uc218\uc720\uc5ed \uacf5\uc6a9 UI \ud30c\uce20", + "norm_label": "b05_profile_ui_drainage_parts.md" + }, + { + "label": "B05_Profile_UI_Drainage_Parts \u2014 \ubc30\uc218\uc720\uc5ed \uacf5\uc6a9 UI \ud30c\uce20", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Parts.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_drainage_parts_b05_profile_ui_drainage_parts_\ubc30\uc218\uc720\uc5ed_\uacf5\uc6a9_ui_\ud30c\uce20", + "community": 69, + "community_name": "B05_Profile_UI_Drainage_Parts \u2014 \ubc30\uc218\uc720\uc5ed \uacf5\uc6a9 UI \ud30c\uce20", + "norm_label": "b05_profile_ui_drainage_parts \u2014 \u1107\u1162\u1109\u116e\u110b\u1172\u110b\u1167\u11a8 \u1100\u1169\u11bc\u110b\u116d\u11bc ui \u1111\u1161\u110e\u1173" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Parts.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_drainage_parts_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 69, + "community_name": "B05_Profile_UI_Drainage_Parts \u2014 \ubc30\uc218\uc720\uc5ed \uacf5\uc6a9 UI \ud30c\uce20", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uae30\ub2a5 \ubc0f \ud568\uc218", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Parts.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_drainage_parts_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "community": 69, + "community_name": "B05_Profile_UI_Drainage_Parts \u2014 \ubc30\uc218\uc720\uc5ed \uacf5\uc6a9 UI \ud30c\uce20", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc \u1106\u1175\u11be \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "3. \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Parts.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_drainage_parts_3_\uc758\uc874\uc131", + "community": 69, + "community_name": "B05_Profile_UI_Drainage_Parts \u2014 \ubc30\uc218\uc720\uc5ed \uacf5\uc6a9 UI \ud30c\uce20", + "norm_label": "3. \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B05_Profile_UI_Drainage_Pipes.md", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Pipes.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_drainage_pipes", + "community": 105, + "community_name": "B05_Profile_UI_Drainage_Pipes", + "norm_label": "b05_profile_ui_drainage_pipes.md" + }, + { + "label": "B05_Profile_UI_Drainage_Pipes", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Pipes.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_drainage_pipes_b05_profile_ui_drainage_pipes", + "community": 105, + "community_name": "B05_Profile_UI_Drainage_Pipes", + "norm_label": "b05_profile_ui_drainage_pipes" + }, + { + "label": "\ud83d\udccb \uac1c\uc694 \ubc0f \ud2b9\uc9d5", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Pipes.md", + "source_location": "L13", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_drainage_pipes_\uac1c\uc694_\ubc0f_\ud2b9\uc9d5", + "community": 105, + "community_name": "B05_Profile_UI_Drainage_Pipes", + "norm_label": "\ud83d\udccb \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u1110\u1173\u11a8\u110c\u1175\u11bc" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 / \uc2ec\ubcfc \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Pipes.md", + "source_location": "L17", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_drainage_pipes_\uc8fc\uc694_\ud568\uc218_\uc2ec\ubcfc_\ubaa9\ub85d", + "community": 105, + "community_name": "B05_Profile_UI_Drainage_Pipes", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e / \u1109\u1175\u11b7\u1107\u1169\u11af \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "B05_Profile_UI_IrregularStations.md", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_IrregularStations.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_irregularstations", + "community": 138, + "community_name": "B05_Profile_UI_IrregularStations.md", + "norm_label": "b05_profile_ui_irregularstations.md" + }, + { + "label": "B05_Profile_UI_IrregularStations.ts", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_IrregularStations.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_irregularstations_b05_profile_ui_irregularstations_ts", + "community": 138, + "community_name": "B05_Profile_UI_IrregularStations.md", + "norm_label": "b05_profile_ui_irregularstations.ts" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \uc778\ud130\ud398\uc774\uc2a4 \ubc0f \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_IrregularStations.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_irregularstations_\uc8fc\uc694_\uc778\ud130\ud398\uc774\uc2a4_\ubc0f_\ud568\uc218_\ubaa9\ub85d", + "community": 138, + "community_name": "B05_Profile_UI_IrregularStations.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u110b\u1175\u11ab\u1110\u1165\u1111\u1166\u110b\u1175\u1109\u1173 \u1106\u1175\u11be \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_IrregularStations.md", + "source_location": "L24", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_irregularstations_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 138, + "community_name": "B05_Profile_UI_IrregularStations.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B05_Profile_UI_Page.md", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Page.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_page", + "community": 139, + "community_name": "B05_Profile_UI_Page.md", + "norm_label": "b05_profile_ui_page.md" + }, + { + "label": "B05_Profile_UI_Page.ts", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Page.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_page_b05_profile_ui_page_ts", + "community": 139, + "community_name": "B05_Profile_UI_Page.md", + "norm_label": "b05_profile_ui_page.ts" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ucef4\ud3ec\ub10c\ud2b8 \ubc0f \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Page.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_page_\uc8fc\uc694_\ucef4\ud3ec\ub10c\ud2b8_\ubc0f_\ud568\uc218_\ubaa9\ub85d", + "community": 139, + "community_name": "B05_Profile_UI_Page.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u110f\u1165\u11b7\u1111\u1169\u1102\u1165\u11ab\u1110\u1173 \u1106\u1175\u11be \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Page.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_page_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 139, + "community_name": "B05_Profile_UI_Page.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B05_Profile_UI_Panel.md", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Panel.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_panel", + "community": 140, + "community_name": "B05_Profile_UI_Panel.md", + "norm_label": "b05_profile_ui_panel.md" + }, + { + "label": "B05_Profile_UI_Panel.ts", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Panel.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_panel_b05_profile_ui_panel_ts", + "community": 140, + "community_name": "B05_Profile_UI_Panel.md", + "norm_label": "b05_profile_ui_panel.ts" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Panel.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_panel_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 140, + "community_name": "B05_Profile_UI_Panel.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Panel.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_panel_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 140, + "community_name": "B05_Profile_UI_Panel.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B05_Profile_UI_Profile_Alignment.md", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Alignment.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_profile_alignment", + "community": 141, + "community_name": "B05_Profile_UI_Profile_Alignment.md", + "norm_label": "b05_profile_ui_profile_alignment.md" + }, + { + "label": "B05_Profile_UI_Profile_Alignment.ts", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Alignment.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_profile_alignment_b05_profile_ui_profile_alignment_ts", + "community": 141, + "community_name": "B05_Profile_UI_Profile_Alignment.md", + "norm_label": "b05_profile_ui_profile_alignment.ts" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Alignment.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_profile_alignment_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 141, + "community_name": "B05_Profile_UI_Profile_Alignment.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Alignment.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_profile_alignment_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 141, + "community_name": "B05_Profile_UI_Profile_Alignment.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B05_Profile_UI_Profile_Panel.md", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Panel.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_profile_panel", + "community": 106, + "community_name": "B05_Profile_UI_Profile_Panel.md", + "norm_label": "b05_profile_ui_profile_panel.md" + }, + { + "label": "B05_Profile_UI_Profile_Panel.ts", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Panel.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_profile_panel_b05_profile_ui_profile_panel_ts", + "community": 106, + "community_name": "B05_Profile_UI_Profile_Panel.md", + "norm_label": "b05_profile_ui_profile_panel.ts" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \uae30\ub2a5 \ubc0f \uac1c\uc120\uc0ac\ud56d (2026-08-06)", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Panel.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_profile_panel_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\uac1c\uc120\uc0ac\ud56d_2026_08_06", + "community": 106, + "community_name": "B05_Profile_UI_Profile_Panel.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc \u1106\u1175\u11be \u1100\u1162\u1109\u1165\u11ab\u1109\u1161\u1112\u1161\u11bc (2026-08-06)" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Panel.md", + "source_location": "L22", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_profile_panel_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 106, + "community_name": "B05_Profile_UI_Profile_Panel.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Panel.md", + "source_location": "L29", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_profile_panel_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 106, + "community_name": "B05_Profile_UI_Profile_Panel.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B05_Profile_UI_Profile_Table.md", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Table.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_profile_table", + "community": 142, + "community_name": "B05_Profile_UI_Profile_Table.md", + "norm_label": "b05_profile_ui_profile_table.md" + }, + { + "label": "B05_Profile_UI_Profile_Table.ts", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Table.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_profile_table_b05_profile_ui_profile_table_ts", + "community": 142, + "community_name": "B05_Profile_UI_Profile_Table.md", + "norm_label": "b05_profile_ui_profile_table.ts" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Table.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_profile_table_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 142, + "community_name": "B05_Profile_UI_Profile_Table.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Table.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_profile_table_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 142, + "community_name": "B05_Profile_UI_Profile_Table.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B05_Profile_UI_Viewer.md", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Viewer.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_viewer", + "community": 143, + "community_name": "B05_Profile_UI_Viewer.md", + "norm_label": "b05_profile_ui_viewer.md" + }, + { + "label": "B05_Profile_UI_Viewer.ts", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Viewer.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_viewer_b05_profile_ui_viewer_ts", + "community": 143, + "community_name": "B05_Profile_UI_Viewer.md", + "norm_label": "b05_profile_ui_viewer.ts" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Viewer.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_viewer_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 143, + "community_name": "B05_Profile_UI_Viewer.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Viewer.md", + "source_location": "L20", + "_origin": "ast", + "id": "pages_b05_profile_frontend_b05_profile_ui_viewer_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 143, + "community_name": "B05_Profile_UI_Viewer.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "_UI_Drainage_Render.md", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/_UI_Drainage_Render.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_frontend_ui_drainage_render", + "community": 70, + "community_name": "_UI_Drainage_Render \u2014 \ubc30\uc218\uc720\uc5ed\ub3c4 Canvas \ub80c\ub354\ub7ec", + "norm_label": "_ui_drainage_render.md" + }, + { + "label": "_UI_Drainage_Render \u2014 \ubc30\uc218\uc720\uc5ed\ub3c4 Canvas \ub80c\ub354\ub7ec", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/_UI_Drainage_Render.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b05_profile_frontend_ui_drainage_render_ui_drainage_render_\ubc30\uc218\uc720\uc5ed\ub3c4_canvas_\ub80c\ub354\ub7ec", + "community": 70, + "community_name": "_UI_Drainage_Render \u2014 \ubc30\uc218\uc720\uc5ed\ub3c4 Canvas \ub80c\ub354\ub7ec", + "norm_label": "_ui_drainage_render \u2014 \u1107\u1162\u1109\u116e\u110b\u1172\u110b\u1167\u11a8\u1103\u1169 canvas \u1105\u1166\u11ab\u1103\u1165\u1105\u1165" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/_UI_Drainage_Render.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b05_profile_frontend_ui_drainage_render_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 70, + "community_name": "_UI_Drainage_Render \u2014 \ubc30\uc218\uc720\uc5ed\ub3c4 Canvas \ub80c\ub354\ub7ec", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uae30\ub2a5 \ubc0f \ud568\uc218", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/_UI_Drainage_Render.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b05_profile_frontend_ui_drainage_render_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "community": 70, + "community_name": "_UI_Drainage_Render \u2014 \ubc30\uc218\uc720\uc5ed\ub3c4 Canvas \ub80c\ub354\ub7ec", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc \u1106\u1175\u11be \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "3. \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/_UI_Drainage_Render.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b05_profile_frontend_ui_drainage_render_3_\uc758\uc874\uc131", + "community": 70, + "community_name": "_UI_Drainage_Render \u2014 \ubc30\uc218\uc720\uc5ed\ub3c4 Canvas \ub80c\ub354\ub7ec", + "norm_label": "3. \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "_UI_Profile_Structures.md", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/_UI_Profile_Structures.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_frontend_ui_profile_structures", + "community": 71, + "community_name": "_UI_Profile_Structures \u2014 \uc885\ub2e8 \uad6c\uc870\ubb3c \ub80c\ub354\ub9c1 \ubc0f \uc778\ud130\ub799\uc158", + "norm_label": "_ui_profile_structures.md" + }, + { + "label": "_UI_Profile_Structures \u2014 \uc885\ub2e8 \uad6c\uc870\ubb3c \ub80c\ub354\ub9c1 \ubc0f \uc778\ud130\ub799\uc158", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/_UI_Profile_Structures.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b05_profile_frontend_ui_profile_structures_ui_profile_structures_\uc885\ub2e8_\uad6c\uc870\ubb3c_\ub80c\ub354\ub9c1_\ubc0f_\uc778\ud130\ub799\uc158", + "community": 71, + "community_name": "_UI_Profile_Structures \u2014 \uc885\ub2e8 \uad6c\uc870\ubb3c \ub80c\ub354\ub9c1 \ubc0f \uc778\ud130\ub799\uc158", + "norm_label": "_ui_profile_structures \u2014 \u110c\u1169\u11bc\u1103\u1161\u11ab \u1100\u116e\u110c\u1169\u1106\u116e\u11af \u1105\u1166\u11ab\u1103\u1165\u1105\u1175\u11bc \u1106\u1175\u11be \u110b\u1175\u11ab\u1110\u1165\u1105\u1162\u11a8\u1109\u1167\u11ab" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/_UI_Profile_Structures.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b05_profile_frontend_ui_profile_structures_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 71, + "community_name": "_UI_Profile_Structures \u2014 \uc885\ub2e8 \uad6c\uc870\ubb3c \ub80c\ub354\ub9c1 \ubc0f \uc778\ud130\ub799\uc158", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uae30\ub2a5 \ubc0f \ud568\uc218", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/_UI_Profile_Structures.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b05_profile_frontend_ui_profile_structures_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "community": 71, + "community_name": "_UI_Profile_Structures \u2014 \uc885\ub2e8 \uad6c\uc870\ubb3c \ub80c\ub354\ub9c1 \ubc0f \uc778\ud130\ub799\uc158", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc \u1106\u1175\u11be \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "3. \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/_UI_Profile_Structures.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b05_profile_frontend_ui_profile_structures_3_\uc758\uc874\uc131", + "community": 71, + "community_name": "_UI_Profile_Structures \u2014 \uc885\ub2e8 \uad6c\uc870\ubb3c \ub80c\ub354\ub9c1 \ubc0f \uc778\ud130\ub799\uc158", + "norm_label": "3. \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "_UI_Selection.md", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/_UI_Selection.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b05_profile_frontend_ui_selection", + "community": 72, + "community_name": "_UI_Selection \u2014 \ubc30\uc218/\uad6c\uc870\ubb3c 3\uc790 \uc120\ud0dd \ub3d9\uae30\ud654", + "norm_label": "_ui_selection.md" + }, + { + "label": "_UI_Selection \u2014 \ubc30\uc218/\uad6c\uc870\ubb3c 3\uc790 \uc120\ud0dd \ub3d9\uae30\ud654", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/_UI_Selection.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b05_profile_frontend_ui_selection_ui_selection_\ubc30\uc218_\uad6c\uc870\ubb3c_3\uc790_\uc120\ud0dd_\ub3d9\uae30\ud654", + "community": 72, + "community_name": "_UI_Selection \u2014 \ubc30\uc218/\uad6c\uc870\ubb3c 3\uc790 \uc120\ud0dd \ub3d9\uae30\ud654", + "norm_label": "_ui_selection \u2014 \u1107\u1162\u1109\u116e/\u1100\u116e\u110c\u1169\u1106\u116e\u11af 3\u110c\u1161 \u1109\u1165\u11ab\u1110\u1162\u11a8 \u1103\u1169\u11bc\u1100\u1175\u1112\u116a" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/_UI_Selection.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b05_profile_frontend_ui_selection_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 72, + "community_name": "_UI_Selection \u2014 \ubc30\uc218/\uad6c\uc870\ubb3c 3\uc790 \uc120\ud0dd \ub3d9\uae30\ud654", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uae30\ub2a5 \ubc0f \ud568\uc218", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/_UI_Selection.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b05_profile_frontend_ui_selection_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "community": 72, + "community_name": "_UI_Selection \u2014 \ubc30\uc218/\uad6c\uc870\ubb3c 3\uc790 \uc120\ud0dd \ub3d9\uae30\ud654", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc \u1106\u1175\u11be \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "3. \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B05_Profile/frontend/_UI_Selection.md", + "source_location": "L22", + "_origin": "ast", + "id": "pages_b05_profile_frontend_ui_selection_3_\uc758\uc874\uc131", + "community": 72, + "community_name": "_UI_Selection \u2014 \ubc30\uc218/\uad6c\uc870\ubb3c 3\uc790 \uc120\ud0dd \ub3d9\uae30\ud654", + "norm_label": "3. \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B06_api.md", + "file_type": "document", + "source_file": "pages/B06_Section/B06_api.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_b06_api", + "community": 152, + "community_name": "B06_api.md", + "norm_label": "b06_api.md" + }, + { + "label": "B06_Section \u2014 API", + "file_type": "document", + "source_file": "pages/B06_Section/B06_api.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b06_section_b06_api_b06_section_api", + "community": 152, + "community_name": "B06_api.md", + "norm_label": "b06_section \u2014 api" + }, + { + "label": "B06_backend.md", + "file_type": "document", + "source_file": "pages/B06_Section/B06_backend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_b06_backend", + "community": 57, + "community_name": "2026-09-07 \uc644\ub8cc\u00b7\ubcf4\ub958 \uc694\uc57d", + "norm_label": "b06_backend.md" + }, + { + "label": "B06_Section \u2014 Backend", + "file_type": "document", + "source_file": "pages/B06_Section/B06_backend.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b06_section_b06_backend_b06_section_backend", + "community": 57, + "community_name": "2026-09-07 \uc644\ub8cc\u00b7\ubcf4\ub958 \uc694\uc57d", + "norm_label": "b06_section \u2014 backend" + }, + { + "label": "\uc694\uccad\u00b7\uc751\ub2f5 \ubaa8\ub378", + "file_type": "document", + "source_file": "pages/B06_Section/B06_backend.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b06_section_b06_backend_\uc694\uccad_\uc751\ub2f5_\ubaa8\ub378", + "community": 57, + "community_name": "2026-09-07 \uc644\ub8cc\u00b7\ubcf4\ub958 \uc694\uc57d", + "norm_label": "\u110b\u116d\u110e\u1165\u11bc\u00b7\u110b\u1173\u11bc\u1103\u1161\u11b8 \u1106\u1169\u1103\u1166\u11af" + }, + { + "label": "\uacc4\uc0b0 \uc5d4\uc9c4", + "file_type": "document", + "source_file": "pages/B06_Section/B06_backend.md", + "source_location": "L24", + "_origin": "ast", + "id": "pages_b06_section_b06_backend_\uacc4\uc0b0_\uc5d4\uc9c4", + "community": 57, + "community_name": "2026-09-07 \uc644\ub8cc\u00b7\ubcf4\ub958 \uc694\uc57d", + "norm_label": "\u1100\u1168\u1109\u1161\u11ab \u110b\u1166\u11ab\u110c\u1175\u11ab" + }, + { + "label": "\ub77c\uc6b0\ud130\u00b7workflow (\uc870\ud68c, \ud655\uc815, \ud0c0 \ud504\ub85c\uc81d\ud2b8 \ubd88\ub7ec\uc624\uae30 \ubc0f \uc7ac\uc0dd\uc131)", + "file_type": "document", + "source_file": "pages/B06_Section/B06_backend.md", + "source_location": "L34", + "_origin": "ast", + "id": "pages_b06_section_b06_backend_\ub77c\uc6b0\ud130_workflow_\uc870\ud68c_\ud655\uc815_\ud0c0_\ud504\ub85c\uc81d\ud2b8_\ubd88\ub7ec\uc624\uae30_\ubc0f_\uc7ac\uc0dd\uc131", + "community": 57, + "community_name": "2026-09-07 \uc644\ub8cc\u00b7\ubcf4\ub958 \uc694\uc57d", + "norm_label": "\u1105\u1161\u110b\u116e\u1110\u1165\u00b7workflow (\u110c\u1169\u1112\u116c, \u1112\u116a\u11a8\u110c\u1165\u11bc, \u1110\u1161 \u1111\u1173\u1105\u1169\u110c\u1166\u11a8\u1110\u1173 \u1107\u116e\u11af\u1105\u1165\u110b\u1169\u1100\u1175 \u1106\u1175\u11be \u110c\u1162\u1109\u1162\u11bc\u1109\u1165\u11bc)" + }, + { + "label": "\ub370\uc774\ud130 \uc601\uad6c \uc800\uc7a5 \ubc0f \ud658\uacbd\uc124\uc815", + "file_type": "document", + "source_file": "pages/B06_Section/B06_backend.md", + "source_location": "L47", + "_origin": "ast", + "id": "pages_b06_section_b06_backend_\ub370\uc774\ud130_\uc601\uad6c_\uc800\uc7a5_\ubc0f_\ud658\uacbd\uc124\uc815", + "community": 57, + "community_name": "2026-09-07 \uc644\ub8cc\u00b7\ubcf4\ub958 \uc694\uc57d", + "norm_label": "\u1103\u1166\u110b\u1175\u1110\u1165 \u110b\u1167\u11bc\u1100\u116e \u110c\u1165\u110c\u1161\u11bc \u1106\u1175\u11be \u1112\u116a\u11ab\u1100\u1167\u11bc\u1109\u1165\u11af\u110c\u1165\u11bc" + }, + { + "label": "B06_cross_design_ui_2026_09.md", + "file_type": "document", + "source_file": "pages/B06_Section/B06_cross_design_ui_2026_09.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_b06_cross_design_ui_2026_09", + "community": 168, + "community_name": "B06 \ud6a1\ub2e8 \uad00 \ud615\uc0c1\u00b7\uc720\ud1a0\uace1\uc120 \ud6c4\uc18d", + "norm_label": "b06_cross_design_ui_2026_09.md" + }, + { + "label": "B06 \ud6a1\ub2e8 \uacc4\uc0b0 \ubbf8\ub7ec\u00b7\uce74\ub4dc \ud45c\uae30", + "file_type": "document", + "source_file": "pages/B06_Section/B06_cross_design_ui_2026_09.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b06_section_b06_cross_design_ui_2026_09_b06_\ud6a1\ub2e8_\uacc4\uc0b0_\ubbf8\ub7ec_\uce74\ub4dc_\ud45c\uae30", + "community": 168, + "community_name": "B06 \ud6a1\ub2e8 \uad00 \ud615\uc0c1\u00b7\uc720\ud1a0\uace1\uc120 \ud6c4\uc18d", + "norm_label": "b06 \u1112\u116c\u11bc\u1103\u1161\u11ab \u1100\u1168\u1109\u1161\u11ab \u1106\u1175\u1105\u1165\u00b7\u110f\u1161\u1103\u1173 \u1111\u116d\u1100\u1175" + }, + { + "label": "\ud504\ub860\ud2b8 \uacc4\uc0b0 \ubbf8\ub7ec", + "file_type": "document", + "source_file": "pages/B06_Section/B06_cross_design_ui_2026_09.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b06_section_b06_cross_design_ui_2026_09_\ud504\ub860\ud2b8_\uacc4\uc0b0_\ubbf8\ub7ec", + "community": 168, + "community_name": "B06 \ud6a1\ub2e8 \uad00 \ud615\uc0c1\u00b7\uc720\ud1a0\uace1\uc120 \ud6c4\uc18d", + "norm_label": "\u1111\u1173\u1105\u1169\u11ab\u1110\u1173 \u1100\u1168\u1109\u1161\u11ab \u1106\u1175\u1105\u1165" + }, + { + "label": "\ud6a1\ub2e8 \uce74\ub4dc \ud45c\uae30", + "file_type": "document", + "source_file": "pages/B06_Section/B06_cross_design_ui_2026_09.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b06_section_b06_cross_design_ui_2026_09_\ud6a1\ub2e8_\uce74\ub4dc_\ud45c\uae30", + "community": 168, + "community_name": "B06 \ud6a1\ub2e8 \uad00 \ud615\uc0c1\u00b7\uc720\ud1a0\uace1\uc120 \ud6c4\uc18d", + "norm_label": "\u1112\u116c\u11bc\u1103\u1161\u11ab \u110f\u1161\u1103\u1173 \u1111\u116d\u1100\u1175" + }, + { + "label": "B06_culvert_basin_multitier.md", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_basin_multitier.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_basin_multitier", + "community": 39, + "community_name": "B06 \uc9d1\uc218\uc815\u00b7\ub2e4\ub2e8 \uae30\uc2ad\ub9c9\uc774", + "norm_label": "b06_culvert_basin_multitier.md" + }, + { + "label": "B06 \uc9d1\uc218\uc815\u00b7\ub2e4\ub2e8 \uae30\uc2ad\ub9c9\uc774", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_basin_multitier.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_basin_multitier_b06_\uc9d1\uc218\uc815_\ub2e4\ub2e8_\uae30\uc2ad\ub9c9\uc774", + "community": 39, + "community_name": "B06 \uc9d1\uc218\uc815\u00b7\ub2e4\ub2e8 \uae30\uc2ad\ub9c9\uc774", + "norm_label": "b06 \u110c\u1175\u11b8\u1109\u116e\u110c\u1165\u11bc\u00b7\u1103\u1161\u1103\u1161\u11ab \u1100\u1175\u1109\u1173\u11b0\u1106\u1161\u11a8\u110b\u1175" + }, + { + "label": "\uc720\uc785 \uad6c\uc870\ubb3c", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_basin_multitier.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_basin_multitier_\uc720\uc785_\uad6c\uc870\ubb3c", + "community": 39, + "community_name": "B06 \uc9d1\uc218\uc815\u00b7\ub2e4\ub2e8 \uae30\uc2ad\ub9c9\uc774", + "norm_label": "\u110b\u1172\u110b\u1175\u11b8 \u1100\u116e\u110c\u1169\u1106\u116e\u11af" + }, + { + "label": "\uc9d1\uc218\uc815 \uacc4\ub958\uce21 \uc131\ud1a0\ubd80", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_basin_multitier.md", + "source_location": "L27", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_basin_multitier_\uc9d1\uc218\uc815_\uacc4\ub958\uce21_\uc131\ud1a0\ubd80", + "community": 39, + "community_name": "B06 \uc9d1\uc218\uc815\u00b7\ub2e4\ub2e8 \uae30\uc2ad\ub9c9\uc774", + "norm_label": "\u110c\u1175\u11b8\u1109\u116e\u110c\u1165\u11bc \u1100\u1168\u1105\u1172\u110e\u1173\u11a8 \u1109\u1165\u11bc\u1110\u1169\u1107\u116e" + }, + { + "label": "\uc720\ucd9c \uc131\ud1a0\ubd80\u00b7\ub2e4\ub2e8", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_basin_multitier.md", + "source_location": "L33", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_basin_multitier_\uc720\ucd9c_\uc131\ud1a0\ubd80_\ub2e4\ub2e8", + "community": 39, + "community_name": "B06 \uc9d1\uc218\uc815\u00b7\ub2e4\ub2e8 \uae30\uc2ad\ub9c9\uc774", + "norm_label": "\u110b\u1172\u110e\u116e\u11af \u1109\u1165\u11bc\u1110\u1169\u1107\u116e\u00b7\u1103\u1161\u1103\u1161\u11ab" + }, + { + "label": "\uc790\uccb4\uac80\uc99d \uae30\ub85d", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_basin_multitier.md", + "source_location": "L45", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_basin_multitier_\uc790\uccb4\uac80\uc99d_\uae30\ub85d", + "community": 39, + "community_name": "B06 \uc9d1\uc218\uc815\u00b7\ub2e4\ub2e8 \uae30\uc2ad\ub9c9\uc774", + "norm_label": "\u110c\u1161\u110e\u1166\u1100\u1165\u11b7\u110c\u1173\u11bc \u1100\u1175\u1105\u1169\u11a8" + }, + { + "label": "\ubbf8\uacb0", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_basin_multitier.md", + "source_location": "L57", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_basin_multitier_\ubbf8\uacb0", + "community": 39, + "community_name": "B06 \uc9d1\uc218\uc815\u00b7\ub2e4\ub2e8 \uae30\uc2ad\ub9c9\uc774", + "norm_label": "\u1106\u1175\u1100\u1167\u11af" + }, + { + "label": "B06_culvert_controls.md", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_controls.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_controls", + "community": 28, + "community_name": "B06 \ubc30\uc218\uad00 \uad6c\uc870\ubb3c \uc870\uc791\u00b7\ud45c\uc2dc", + "norm_label": "b06_culvert_controls.md" + }, + { + "label": "B06 \ubc30\uc218\uad00 \uad6c\uc870\ubb3c \uc870\uc791\u00b7\ud45c\uc2dc", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_controls.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_controls_b06_\ubc30\uc218\uad00_\uad6c\uc870\ubb3c_\uc870\uc791_\ud45c\uc2dc", + "community": 28, + "community_name": "B06 \ubc30\uc218\uad00 \uad6c\uc870\ubb3c \uc870\uc791\u00b7\ud45c\uc2dc", + "norm_label": "b06 \u1107\u1162\u1109\u116e\u1100\u116a\u11ab \u1100\u116e\u110c\u1169\u1106\u116e\u11af \u110c\u1169\u110c\u1161\u11a8\u00b7\u1111\u116d\u1109\u1175" + }, + { + "label": "4\ucd95 \uc870\uc791\uacfc \uc7ac\uc9c8", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_controls.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_controls_4\ucd95_\uc870\uc791\uacfc_\uc7ac\uc9c8", + "community": 28, + "community_name": "B06 \ubc30\uc218\uad00 \uad6c\uc870\ubb3c \uc870\uc791\u00b7\ud45c\uc2dc", + "norm_label": "4\u110e\u116e\u11a8 \u110c\u1169\u110c\u1161\u11a8\u1100\u116a \u110c\u1162\u110c\u1175\u11af" + }, + { + "label": "\uc870\uc815\ucc3d", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_controls.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_controls_\uc870\uc815\ucc3d", + "community": 28, + "community_name": "B06 \ubc30\uc218\uad00 \uad6c\uc870\ubb3c \uc870\uc791\u00b7\ud45c\uc2dc", + "norm_label": "\u110c\u1169\u110c\u1165\u11bc\u110e\u1161\u11bc" + }, + { + "label": "\uc9d1\uc218\uc815 9\ud0a4 \uc870\uc791", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_controls.md", + "source_location": "L32", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_controls_\uc9d1\uc218\uc815_9\ud0a4_\uc870\uc791", + "community": 28, + "community_name": "B06 \ubc30\uc218\uad00 \uad6c\uc870\ubb3c \uc870\uc791\u00b7\ud45c\uc2dc", + "norm_label": "\u110c\u1175\u11b8\u1109\u116e\u110c\u1165\u11bc 9\u110f\u1175 \u110c\u1169\u110c\u1161\u11a8" + }, + { + "label": "\uacc4\uc0b0\u00b7\ubcf4\uae30 \ubd84\ub9ac", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_controls.md", + "source_location": "L43", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_controls_\uacc4\uc0b0_\ubcf4\uae30_\ubd84\ub9ac", + "community": 28, + "community_name": "B06 \ubc30\uc218\uad00 \uad6c\uc870\ubb3c \uc870\uc791\u00b7\ud45c\uc2dc", + "norm_label": "\u1100\u1168\u1109\u1161\u11ab\u00b7\u1107\u1169\u1100\u1175 \u1107\u116e\u11ab\u1105\u1175" + }, + { + "label": "\uc790\uccb4\uac80\uc99d \uae30\ub85d", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_controls.md", + "source_location": "L50", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_controls_\uc790\uccb4\uac80\uc99d_\uae30\ub85d", + "community": 28, + "community_name": "B06 \ubc30\uc218\uad00 \uad6c\uc870\ubb3c \uc870\uc791\u00b7\ud45c\uc2dc", + "norm_label": "\u110c\u1161\u110e\u1166\u1100\u1165\u11b7\u110c\u1173\u11bc \u1100\u1175\u1105\u1169\u11a8" + }, + { + "label": "\uad6c\ud604 \ud30c\uc77c", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_controls.md", + "source_location": "L61", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_controls_\uad6c\ud604_\ud30c\uc77c", + "community": 28, + "community_name": "B06 \ubc30\uc218\uad00 \uad6c\uc870\ubb3c \uc870\uc791\u00b7\ud45c\uc2dc", + "norm_label": "\u1100\u116e\u1112\u1167\u11ab \u1111\u1161\u110b\u1175\u11af" + }, + { + "label": "B06_culvert_geometry_redesign.md", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_geometry_redesign.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_geometry_redesign", + "community": 40, + "community_name": "B06 \ubc30\uc218\uad00 \uad6c\uc870\ubb3c \uae30\ud558\u00b7\uc870\uc791 \uccb4\uacc4", + "norm_label": "b06_culvert_geometry_redesign.md" + }, + { + "label": "B06 \ubc30\uc218\uad00 \uad6c\uc870\ubb3c \uae30\ud558\u00b7\uc870\uc791 \uccb4\uacc4", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_geometry_redesign.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_geometry_redesign_b06_\ubc30\uc218\uad00_\uad6c\uc870\ubb3c_\uae30\ud558_\uc870\uc791_\uccb4\uacc4", + "community": 40, + "community_name": "B06 \ubc30\uc218\uad00 \uad6c\uc870\ubb3c \uae30\ud558\u00b7\uc870\uc791 \uccb4\uacc4", + "norm_label": "b06 \u1107\u1162\u1109\u116e\u1100\u116a\u11ab \u1100\u116e\u110c\u1169\u1106\u116e\u11af \u1100\u1175\u1112\u1161\u00b7\u110c\u1169\u110c\u1161\u11a8 \u110e\u1166\u1100\u1168" + }, + { + "label": "\uae30\uc2ad\ub9c9\uc774\u00b7\uad00 \ud575\uc2ec \uaddc\uce59", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_geometry_redesign.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_geometry_redesign_\uae30\uc2ad\ub9c9\uc774_\uad00_\ud575\uc2ec_\uaddc\uce59", + "community": 40, + "community_name": "B06 \ubc30\uc218\uad00 \uad6c\uc870\ubb3c \uae30\ud558\u00b7\uc870\uc791 \uccb4\uacc4", + "norm_label": "\u1100\u1175\u1109\u1173\u11b0\u1106\u1161\u11a8\u110b\u1175\u00b7\u1100\u116a\u11ab \u1112\u1162\u11a8\u1109\u1175\u11b7 \u1100\u1172\u110e\u1175\u11a8" + }, + { + "label": "\uc811\uc18d\uc120", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_geometry_redesign.md", + "source_location": "L27", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_geometry_redesign_\uc811\uc18d\uc120", + "community": 40, + "community_name": "B06 \ubc30\uc218\uad00 \uad6c\uc870\ubb3c \uae30\ud558\u00b7\uc870\uc791 \uccb4\uacc4", + "norm_label": "\u110c\u1165\u11b8\u1109\u1169\u11a8\u1109\u1165\u11ab" + }, + { + "label": "\uc124\uacc4\uc120 \ud2b8\ub9bc", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_geometry_redesign.md", + "source_location": "L40", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_geometry_redesign_\uc124\uacc4\uc120_\ud2b8\ub9bc", + "community": 40, + "community_name": "B06 \ubc30\uc218\uad00 \uad6c\uc870\ubb3c \uae30\ud558\u00b7\uc870\uc791 \uccb4\uacc4", + "norm_label": "\u1109\u1165\u11af\u1100\u1168\u1109\u1165\u11ab \u1110\u1173\u1105\u1175\u11b7" + }, + { + "label": "\uad6c\ud604 \ud30c\uc77c", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_geometry_redesign.md", + "source_location": "L44", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_geometry_redesign_\uad6c\ud604_\ud30c\uc77c", + "community": 40, + "community_name": "B06 \ubc30\uc218\uad00 \uad6c\uc870\ubb3c \uae30\ud558\u00b7\uc870\uc791 \uccb4\uacc4", + "norm_label": "\u1100\u116e\u1112\u1167\u11ab \u1111\u1161\u110b\u1175\u11af" + }, + { + "label": "\uac80\uc99d \uc0c1\ud0dc", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_geometry_redesign.md", + "source_location": "L55", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_geometry_redesign_\uac80\uc99d_\uc0c1\ud0dc", + "community": 40, + "community_name": "B06 \ubc30\uc218\uad00 \uad6c\uc870\ubb3c \uae30\ud558\u00b7\uc870\uc791 \uccb4\uacc4", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc \u1109\u1161\u11bc\u1110\u1162" + }, + { + "label": "B06_culvert_link_trim.md", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_link_trim.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_link_trim", + "community": 73, + "community_name": "B06 \uc778\uc811 \uce21\uc810 \uad6c\uc870\ubb3c \ud2b8\ub9bc \uc815\ub9ac", + "norm_label": "b06_culvert_link_trim.md" + }, + { + "label": "B06 \uc778\uc811 \uce21\uc810 \uad6c\uc870\ubb3c \ud2b8\ub9bc \uc815\ub9ac", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_link_trim.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_link_trim_b06_\uc778\uc811_\uce21\uc810_\uad6c\uc870\ubb3c_\ud2b8\ub9bc_\uc815\ub9ac", + "community": 73, + "community_name": "B06 \uc778\uc811 \uce21\uc810 \uad6c\uc870\ubb3c \ud2b8\ub9bc \uc815\ub9ac", + "norm_label": "b06 \u110b\u1175\u11ab\u110c\u1165\u11b8 \u110e\u1173\u11a8\u110c\u1165\u11b7 \u1100\u116e\u110c\u1169\u1106\u116e\u11af \u1110\u1173\u1105\u1175\u11b7 \u110c\u1165\u11bc\u1105\u1175" + }, + { + "label": "\ucc98\ub9ac \ud56d\ubaa9", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_link_trim.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_link_trim_\ucc98\ub9ac_\ud56d\ubaa9", + "community": 73, + "community_name": "B06 \uc778\uc811 \uce21\uc810 \uad6c\uc870\ubb3c \ud2b8\ub9bc \uc815\ub9ac", + "norm_label": "\u110e\u1165\u1105\u1175 \u1112\u1161\u11bc\u1106\u1169\u11a8" + }, + { + "label": "\uc6d0\uc778\uacfc \uacbd\uacc4", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_link_trim.md", + "source_location": "L24", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_link_trim_\uc6d0\uc778\uacfc_\uacbd\uacc4", + "community": 73, + "community_name": "B06 \uc778\uc811 \uce21\uc810 \uad6c\uc870\ubb3c \ud2b8\ub9bc \uc815\ub9ac", + "norm_label": "\u110b\u116f\u11ab\u110b\u1175\u11ab\u1100\u116a \u1100\u1167\u11bc\u1100\u1168" + }, + { + "label": "\uac80\uc99d", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_link_trim.md", + "source_location": "L30", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_link_trim_\uac80\uc99d", + "community": 73, + "community_name": "B06 \uc778\uc811 \uce21\uc810 \uad6c\uc870\ubb3c \ud2b8\ub9bc \uc815\ub9ac", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc" + }, + { + "label": "B06_culvert_set.md", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_set.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_set", + "community": 41, + "community_name": "B06 \ubc30\uc218\uad00 \ud6a1\ub2e8\ub3c4 \uc138\ud2b8", + "norm_label": "b06_culvert_set.md" + }, + { + "label": "B06 \ubc30\uc218\uad00 \ud6a1\ub2e8\ub3c4 \uc138\ud2b8", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_set.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_set_b06_\ubc30\uc218\uad00_\ud6a1\ub2e8\ub3c4_\uc138\ud2b8", + "community": 41, + "community_name": "B06 \ubc30\uc218\uad00 \ud6a1\ub2e8\ub3c4 \uc138\ud2b8", + "norm_label": "b06 \u1107\u1162\u1109\u116e\u1100\u116a\u11ab \u1112\u116c\u11bc\u1103\u1161\u11ab\u1103\u1169 \u1109\u1166\u1110\u1173" + }, + { + "label": "\uc785\ub825\u00b7\ud310\uc815", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_set.md", + "source_location": "L16", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_set_\uc785\ub825_\ud310\uc815", + "community": 41, + "community_name": "B06 \ubc30\uc218\uad00 \ud6a1\ub2e8\ub3c4 \uc138\ud2b8", + "norm_label": "\u110b\u1175\u11b8\u1105\u1167\u11a8\u00b7\u1111\u1161\u11ab\u110c\u1165\u11bc" + }, + { + "label": "\ud615\uc0c1\u00b7\ud45c\uc2dc \uc21c\uc11c (2026-08-20 \uc2a4\ub0c5\uc0f7)", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_set.md", + "source_location": "L27", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_set_\ud615\uc0c1_\ud45c\uc2dc_\uc21c\uc11c_2026_08_20_\uc2a4\ub0c5\uc0f7", + "community": 41, + "community_name": "B06 \ubc30\uc218\uad00 \ud6a1\ub2e8\ub3c4 \uc138\ud2b8", + "norm_label": "\u1112\u1167\u11bc\u1109\u1161\u11bc\u00b7\u1111\u116d\u1109\u1175 \u1109\u116e\u11ab\u1109\u1165 (2026-08-20 \u1109\u1173\u1102\u1162\u11b8\u1109\u1163\u11ba)" + }, + { + "label": "\uad6c\ud604 \ud56d\ubaa9", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_set.md", + "source_location": "L37", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_set_\uad6c\ud604_\ud56d\ubaa9", + "community": 41, + "community_name": "B06 \ubc30\uc218\uad00 \ud6a1\ub2e8\ub3c4 \uc138\ud2b8", + "norm_label": "\u1100\u116e\u1112\u1167\u11ab \u1112\u1161\u11bc\u1106\u1169\u11a8" + }, + { + "label": "\uacc4\ud68d\uc120 \uaddc\uce59", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_set.md", + "source_location": "L51", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_set_\uacc4\ud68d\uc120_\uaddc\uce59", + "community": 41, + "community_name": "B06 \ubc30\uc218\uad00 \ud6a1\ub2e8\ub3c4 \uc138\ud2b8", + "norm_label": "\u1100\u1168\u1112\u116c\u11a8\u1109\u1165\u11ab \u1100\u1172\u110e\u1175\u11a8" + }, + { + "label": "\uac80\uc99d \uadfc\uac70\uc640 \ud6c4\uc18d", + "file_type": "document", + "source_file": "pages/B06_Section/B06_culvert_set.md", + "source_location": "L55", + "_origin": "ast", + "id": "pages_b06_section_b06_culvert_set_\uac80\uc99d_\uadfc\uac70\uc640_\ud6c4\uc18d", + "community": 41, + "community_name": "B06 \ubc30\uc218\uad00 \ud6a1\ub2e8\ub3c4 \uc138\ud2b8", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc \u1100\u1173\u11ab\u1100\u1165\u110b\u116a \u1112\u116e\u1109\u1169\u11a8" + }, + { + "label": "B06_db.md", + "file_type": "document", + "source_file": "pages/B06_Section/B06_db.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_b06_db", + "community": 107, + "community_name": "B06_Section \u2014 DB \uc0ac\uc6a9 \uad00\uacc4", + "norm_label": "b06_db.md" + }, + { + "label": "B06_Section \u2014 DB \uc0ac\uc6a9 \uad00\uacc4", + "file_type": "document", + "source_file": "pages/B06_Section/B06_db.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b06_section_b06_db_b06_section_db_\uc0ac\uc6a9_\uad00\uacc4", + "community": 107, + "community_name": "B06_Section \u2014 DB \uc0ac\uc6a9 \uad00\uacc4", + "norm_label": "b06_section \u2014 db \u1109\u1161\u110b\u116d\u11bc \u1100\u116a\u11ab\u1100\u1168" + }, + { + "label": "Repository \ud568\uc218", + "file_type": "document", + "source_file": "pages/B06_Section/B06_db.md", + "source_location": "L19", + "_origin": "ast", + "id": "pages_b06_section_b06_db_repository_\ud568\uc218", + "community": 107, + "community_name": "B06_Section \u2014 DB \uc0ac\uc6a9 \uad00\uacc4", + "norm_label": "repository \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "\ud30c\uc77c \uacbd\ub85c", + "file_type": "document", + "source_file": "pages/B06_Section/B06_db.md", + "source_location": "L29", + "_origin": "ast", + "id": "pages_b06_section_b06_db_\ud30c\uc77c_\uacbd\ub85c", + "community": 107, + "community_name": "B06_Section \u2014 DB \uc0ac\uc6a9 \uad00\uacc4", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u1167\u11bc\u1105\u1169" + }, + { + "label": "B06_dependencies.md", + "file_type": "document", + "source_file": "pages/B06_Section/B06_dependencies.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_b06_dependencies", + "community": 144, + "community_name": "B06_Section \u2014 Dependencies", + "norm_label": "b06_dependencies.md" + }, + { + "label": "B06_Section \u2014 Dependencies", + "file_type": "document", + "source_file": "pages/B06_Section/B06_dependencies.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b06_section_b06_dependencies_b06_section_dependencies", + "community": 144, + "community_name": "B06_Section \u2014 Dependencies", + "norm_label": "b06_section \u2014 dependencies" + }, + { + "label": "\uacf5\ud1b5 \ubaa8\ub4c8", + "file_type": "document", + "source_file": "pages/B06_Section/B06_dependencies.md", + "source_location": "L20", + "_origin": "ast", + "id": "pages_b06_section_b06_dependencies_\uacf5\ud1b5_\ubaa8\ub4c8", + "community": 144, + "community_name": "B06_Section \u2014 Dependencies", + "norm_label": "\u1100\u1169\u11bc\u1110\u1169\u11bc \u1106\u1169\u1103\u1172\u11af" + }, + { + "label": "B06_frontend.md", + "file_type": "document", + "source_file": "pages/B06_Section/B06_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_b06_frontend", + "community": 23, + "community_name": "B06_Section \u2014 Frontend", + "norm_label": "b06_frontend.md" + }, + { + "label": "B06_Section \u2014 Frontend", + "file_type": "document", + "source_file": "pages/B06_Section/B06_frontend.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b06_section_b06_frontend_b06_section_frontend", + "community": 23, + "community_name": "B06_Section \u2014 Frontend", + "norm_label": "b06_section \u2014 frontend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc131", + "file_type": "document", + "source_file": "pages/B06_Section/B06_frontend.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b06_section_b06_frontend_\ud30c\uc77c_\uad6c\uc131", + "community": 23, + "community_name": "B06_Section \u2014 Frontend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u1109\u1165\u11bc" + }, + { + "label": "\ud654\uba74\u00b7workflow (\uc870\ud68c \ubc0f \ud655\uc815 \uc804\uc6a9)", + "file_type": "document", + "source_file": "pages/B06_Section/B06_frontend.md", + "source_location": "L39", + "_origin": "ast", + "id": "pages_b06_section_b06_frontend_\ud654\uba74_workflow_\uc870\ud68c_\ubc0f_\ud655\uc815_\uc804\uc6a9", + "community": 23, + "community_name": "B06_Section \u2014 Frontend", + "norm_label": "\u1112\u116a\u1106\u1167\u11ab\u00b7workflow (\u110c\u1169\u1112\u116c \u1106\u1175\u11be \u1112\u116a\u11a8\u110c\u1165\u11bc \u110c\u1165\u11ab\u110b\u116d\u11bc)" + }, + { + "label": "SVG \ub80c\ub354\ub7ec \ubc0f \uc720\ud2f8\ub9ac\ud2f0", + "file_type": "document", + "source_file": "pages/B06_Section/B06_frontend.md", + "source_location": "L47", + "_origin": "ast", + "id": "pages_b06_section_b06_frontend_svg_\ub80c\ub354\ub7ec_\ubc0f_\uc720\ud2f8\ub9ac\ud2f0", + "community": 23, + "community_name": "B06_Section \u2014 Frontend", + "norm_label": "svg \u1105\u1166\u11ab\u1103\u1165\u1105\u1165 \u1106\u1175\u11be \u110b\u1172\u1110\u1175\u11af\u1105\u1175\u1110\u1175" + }, + { + "label": "API \ud074\ub77c\uc774\uc5b8\ud2b8", + "file_type": "document", + "source_file": "pages/B06_Section/B06_frontend.md", + "source_location": "L58", + "_origin": "ast", + "id": "pages_b06_section_b06_frontend_api_\ud074\ub77c\uc774\uc5b8\ud2b8", + "community": 23, + "community_name": "B06_Section \u2014 Frontend", + "norm_label": "api \u110f\u1173\u11af\u1105\u1161\u110b\u1175\u110b\u1165\u11ab\u1110\u1173" + }, + { + "label": "\uc785\ub825 \uc635\uc158 (\ud45c\uc2dc \uc635\uc158 \ubc0f \ud6a1\ub2e8 \ubc18\ud3ed \uc81c\uc5b4)", + "file_type": "document", + "source_file": "pages/B06_Section/B06_frontend.md", + "source_location": "L67", + "_origin": "ast", + "id": "pages_b06_section_b06_frontend_\uc785\ub825_\uc635\uc158_\ud45c\uc2dc_\uc635\uc158_\ubc0f_\ud6a1\ub2e8_\ubc18\ud3ed_\uc81c\uc5b4", + "community": 23, + "community_name": "B06_Section \u2014 Frontend", + "norm_label": "\u110b\u1175\u11b8\u1105\u1167\u11a8 \u110b\u1169\u11b8\u1109\u1167\u11ab (\u1111\u116d\u1109\u1175 \u110b\u1169\u11b8\u1109\u1167\u11ab \u1106\u1175\u11be \u1112\u116c\u11bc\u1103\u1161\u11ab \u1107\u1161\u11ab\u1111\u1169\u11a8 \u110c\u1166\u110b\u1165)" + }, + { + "label": "UI \ud328\ub110 \ud06c\uae30 \ubc0f \ub9ac\uc0ac\uc774\uc800 \uaddc\uce59 (2026-08-02 \uc2e0\uc124)", + "file_type": "document", + "source_file": "pages/B06_Section/B06_frontend.md", + "source_location": "L78", + "_origin": "ast", + "id": "pages_b06_section_b06_frontend_ui_\ud328\ub110_\ud06c\uae30_\ubc0f_\ub9ac\uc0ac\uc774\uc800_\uaddc\uce59_2026_08_02_\uc2e0\uc124", + "community": 23, + "community_name": "B06_Section \u2014 Frontend", + "norm_label": "ui \u1111\u1162\u1102\u1165\u11af \u110f\u1173\u1100\u1175 \u1106\u1175\u11be \u1105\u1175\u1109\u1161\u110b\u1175\u110c\u1165 \u1100\u1172\u110e\u1175\u11a8 (2026-08-02 \u1109\u1175\u11ab\u1109\u1165\u11af)" + }, + { + "label": "\uae30\uc220\ubd80\ucc44 (\ud574\uacb0\ub428)", + "file_type": "document", + "source_file": "pages/B06_Section/B06_frontend.md", + "source_location": "L84", + "_origin": "ast", + "id": "pages_b06_section_b06_frontend_\uae30\uc220\ubd80\ucc44_\ud574\uacb0\ub428", + "community": 23, + "community_name": "B06_Section \u2014 Frontend", + "norm_label": "\u1100\u1175\u1109\u116e\u11af\u1107\u116e\u110e\u1162 (\u1112\u1162\u1100\u1167\u11af\u1103\u116c\u11b7)" + }, + { + "label": "2026-08-22 \ud30c\uc77c \ud55c\uacc4 \uc815\ub9ac", + "file_type": "document", + "source_file": "pages/B06_Section/B06_frontend.md", + "source_location": "L85", + "_origin": "ast", + "id": "pages_b06_section_b06_frontend_2026_08_22_\ud30c\uc77c_\ud55c\uacc4_\uc815\ub9ac", + "community": 23, + "community_name": "B06_Section \u2014 Frontend", + "norm_label": "2026-08-22 \u1111\u1161\u110b\u1175\u11af \u1112\u1161\u11ab\u1100\u1168 \u110c\u1165\u11bc\u1105\u1175" + }, + { + "label": "B06_masshaul_culvert_2026_09.md", + "file_type": "document", + "source_file": "pages/B06_Section/B06_masshaul_culvert_2026_09.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_b06_masshaul_culvert_2026_09", + "community": 159, + "community_name": "B03 \ud30c\uc77c \uc785\ub825 \ud654\uba74 \uc815\ub9ac", + "norm_label": "b06_masshaul_culvert_2026_09.md" + }, + { + "label": "B06 \ud6a1\ub2e8 \uad00 \ud615\uc0c1\u00b7\uc720\ud1a0\uace1\uc120 \ud6c4\uc18d", + "file_type": "document", + "source_file": "pages/B06_Section/B06_masshaul_culvert_2026_09.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b06_section_b06_masshaul_culvert_2026_09_b06_\ud6a1\ub2e8_\uad00_\ud615\uc0c1_\uc720\ud1a0\uace1\uc120_\ud6c4\uc18d", + "community": 159, + "community_name": "B03 \ud30c\uc77c \uc785\ub825 \ud654\uba74 \uc815\ub9ac", + "norm_label": "b06 \u1112\u116c\u11bc\u1103\u1161\u11ab \u1100\u116a\u11ab \u1112\u1167\u11bc\u1109\u1161\u11bc\u00b7\u110b\u1172\u1110\u1169\u1100\u1169\u11a8\u1109\u1165\u11ab \u1112\u116e\u1109\u1169\u11a8" + }, + { + "label": "I\ud615 \uc9d1\uc218\uc815 \uad00 \ud615\uc0c1", + "file_type": "document", + "source_file": "pages/B06_Section/B06_masshaul_culvert_2026_09.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b06_section_b06_masshaul_culvert_2026_09_i\ud615_\uc9d1\uc218\uc815_\uad00_\ud615\uc0c1", + "community": 159, + "community_name": "B03 \ud30c\uc77c \uc785\ub825 \ud654\uba74 \uc815\ub9ac", + "norm_label": "i\u1112\u1167\u11bc \u110c\u1175\u11b8\u1109\u116e\u110c\u1165\u11bc \u1100\u116a\u11ab \u1112\u1167\u11bc\u1109\u1161\u11bc" + }, + { + "label": "\uacc4\uc0b0 \uc0c1\ud0dc\uc640 \uacbd\uace0", + "file_type": "document", + "source_file": "pages/B06_Section/B06_masshaul_culvert_2026_09.md", + "source_location": "L19", + "_origin": "ast", + "id": "pages_b06_section_b06_masshaul_culvert_2026_09_\uacc4\uc0b0_\uc0c1\ud0dc\uc640_\uacbd\uace0", + "community": 159, + "community_name": "B03 \ud30c\uc77c \uc785\ub825 \ud654\uba74 \uc815\ub9ac", + "norm_label": "\u1100\u1168\u1109\u1161\u11ab \u1109\u1161\u11bc\u1110\u1162\u110b\u116a \u1100\u1167\u11bc\u1100\u1169" + }, + { + "label": "\ud30c\uc77c \ucc45\uc784 \ubd84\ub9ac", + "file_type": "document", + "source_file": "pages/B06_Section/B06_masshaul_culvert_2026_09.md", + "source_location": "L29", + "_origin": "ast", + "id": "pages_b06_section_b06_masshaul_culvert_2026_09_\ud30c\uc77c_\ucc45\uc784_\ubd84\ub9ac", + "community": 159, + "community_name": "B03 \ud30c\uc77c \uc785\ub825 \ud654\uba74 \uc815\ub9ac", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u110e\u1162\u11a8\u110b\u1175\u11b7 \u1107\u116e\u11ab\u1105\u1175" + }, + { + "label": "B06_pavement_revetment.md", + "file_type": "document", + "source_file": "pages/B06_Section/B06_pavement_revetment.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_b06_pavement_revetment", + "community": 74, + "community_name": "B06 \ubb3c\ub118\uc774\ud3ec\uc7a5\u00b7\ucf58\ud06c\ub9ac\ud2b8 \ud3ec\uc7a5\u00b7\ub3c5\ub9bd \uae30\uc2ad\ub9c9\uc774", + "norm_label": "b06_pavement_revetment.md" + }, + { + "label": "B06 \ubb3c\ub118\uc774\ud3ec\uc7a5\u00b7\ucf58\ud06c\ub9ac\ud2b8 \ud3ec\uc7a5\u00b7\ub3c5\ub9bd \uae30\uc2ad\ub9c9\uc774", + "file_type": "document", + "source_file": "pages/B06_Section/B06_pavement_revetment.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b06_section_b06_pavement_revetment_b06_\ubb3c\ub118\uc774\ud3ec\uc7a5_\ucf58\ud06c\ub9ac\ud2b8_\ud3ec\uc7a5_\ub3c5\ub9bd_\uae30\uc2ad\ub9c9\uc774", + "community": 74, + "community_name": "B06 \ubb3c\ub118\uc774\ud3ec\uc7a5\u00b7\ucf58\ud06c\ub9ac\ud2b8 \ud3ec\uc7a5\u00b7\ub3c5\ub9bd \uae30\uc2ad\ub9c9\uc774", + "norm_label": "b06 \u1106\u116e\u11af\u1102\u1165\u11b7\u110b\u1175\u1111\u1169\u110c\u1161\u11bc\u00b7\u110f\u1169\u11ab\u110f\u1173\u1105\u1175\u1110\u1173 \u1111\u1169\u110c\u1161\u11bc\u00b7\u1103\u1169\u11a8\u1105\u1175\u11b8 \u1100\u1175\u1109\u1173\u11b0\u1106\u1161\u11a8\u110b\u1175" + }, + { + "label": "\ud3ec\uc7a5\uacfc \ubb3c\ub118\uc774", + "file_type": "document", + "source_file": "pages/B06_Section/B06_pavement_revetment.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b06_section_b06_pavement_revetment_\ud3ec\uc7a5\uacfc_\ubb3c\ub118\uc774", + "community": 74, + "community_name": "B06 \ubb3c\ub118\uc774\ud3ec\uc7a5\u00b7\ucf58\ud06c\ub9ac\ud2b8 \ud3ec\uc7a5\u00b7\ub3c5\ub9bd \uae30\uc2ad\ub9c9\uc774", + "norm_label": "\u1111\u1169\u110c\u1161\u11bc\u1100\u116a \u1106\u116e\u11af\u1102\u1165\u11b7\u110b\u1175" + }, + { + "label": "\ub3c5\ub9bd \uae30\uc2ad\ub9c9\uc774", + "file_type": "document", + "source_file": "pages/B06_Section/B06_pavement_revetment.md", + "source_location": "L24", + "_origin": "ast", + "id": "pages_b06_section_b06_pavement_revetment_\ub3c5\ub9bd_\uae30\uc2ad\ub9c9\uc774", + "community": 74, + "community_name": "B06 \ubb3c\ub118\uc774\ud3ec\uc7a5\u00b7\ucf58\ud06c\ub9ac\ud2b8 \ud3ec\uc7a5\u00b7\ub3c5\ub9bd \uae30\uc2ad\ub9c9\uc774", + "norm_label": "\u1103\u1169\u11a8\u1105\u1175\u11b8 \u1100\u1175\u1109\u1173\u11b0\u1106\u1161\u11a8\u110b\u1175" + }, + { + "label": "\uac80\uc99d", + "file_type": "document", + "source_file": "pages/B06_Section/B06_pavement_revetment.md", + "source_location": "L34", + "_origin": "ast", + "id": "pages_b06_section_b06_pavement_revetment_\uac80\uc99d", + "community": 74, + "community_name": "B06 \ubb3c\ub118\uc774\ud3ec\uc7a5\u00b7\ucf58\ud06c\ub9ac\ud2b8 \ud3ec\uc7a5\u00b7\ub3c5\ub9bd \uae30\uc2ad\ub9c9\uc774", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc" + }, + { + "label": "B06_revetment_link_controls.md", + "file_type": "document", + "source_file": "pages/B06_Section/B06_revetment_link_controls.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_b06_revetment_link_controls", + "community": 29, + "community_name": "B06 \uae30\uc2ad\ub9c9\uc774 \uc5f0\ub3d9\u00b7\uacbd\uc0ac\u00b7\ub2e8\ubcc4 \uc81c\uc5b4", + "norm_label": "b06_revetment_link_controls.md" + }, + { + "label": "B06 \uae30\uc2ad\ub9c9\uc774 \uc5f0\ub3d9\u00b7\uacbd\uc0ac\u00b7\ub2e8\ubcc4 \uc81c\uc5b4", + "file_type": "document", + "source_file": "pages/B06_Section/B06_revetment_link_controls.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b06_section_b06_revetment_link_controls_b06_\uae30\uc2ad\ub9c9\uc774_\uc5f0\ub3d9_\uacbd\uc0ac_\ub2e8\ubcc4_\uc81c\uc5b4", + "community": 29, + "community_name": "B06 \uae30\uc2ad\ub9c9\uc774 \uc5f0\ub3d9\u00b7\uacbd\uc0ac\u00b7\ub2e8\ubcc4 \uc81c\uc5b4", + "norm_label": "b06 \u1100\u1175\u1109\u1173\u11b0\u1106\u1161\u11a8\u110b\u1175 \u110b\u1167\u11ab\u1103\u1169\u11bc\u00b7\u1100\u1167\u11bc\u1109\u1161\u00b7\u1103\u1161\u11ab\u1107\u1167\u11af \u110c\u1166\u110b\u1165" + }, + { + "label": "\uc815\ubcf8\uacfc \uacf5\uc6a9 \ubaa8\ub378", + "file_type": "document", + "source_file": "pages/B06_Section/B06_revetment_link_controls.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b06_section_b06_revetment_link_controls_\uc815\ubcf8\uacfc_\uacf5\uc6a9_\ubaa8\ub378", + "community": 29, + "community_name": "B06 \uae30\uc2ad\ub9c9\uc774 \uc5f0\ub3d9\u00b7\uacbd\uc0ac\u00b7\ub2e8\ubcc4 \uc81c\uc5b4", + "norm_label": "\u110c\u1165\u11bc\u1107\u1169\u11ab\u1100\u116a \u1100\u1169\u11bc\u110b\u116d\u11bc \u1106\u1169\u1103\u1166\u11af" + }, + { + "label": "\ud615\ud0dc\uc640 \uc870\uc815\ucc3d", + "file_type": "document", + "source_file": "pages/B06_Section/B06_revetment_link_controls.md", + "source_location": "L24", + "_origin": "ast", + "id": "pages_b06_section_b06_revetment_link_controls_\ud615\ud0dc\uc640_\uc870\uc815\ucc3d", + "community": 29, + "community_name": "B06 \uae30\uc2ad\ub9c9\uc774 \uc5f0\ub3d9\u00b7\uacbd\uc0ac\u00b7\ub2e8\ubcc4 \uc81c\uc5b4", + "norm_label": "\u1112\u1167\u11bc\u1110\u1162\u110b\u116a \u110c\u1169\u110c\u1165\u11bc\u110e\u1161\u11bc" + }, + { + "label": "\ub2e8\ubcc4 \uad6c\uac04\uac12", + "file_type": "document", + "source_file": "pages/B06_Section/B06_revetment_link_controls.md", + "source_location": "L35", + "_origin": "ast", + "id": "pages_b06_section_b06_revetment_link_controls_\ub2e8\ubcc4_\uad6c\uac04\uac12", + "community": 29, + "community_name": "B06 \uae30\uc2ad\ub9c9\uc774 \uc5f0\ub3d9\u00b7\uacbd\uc0ac\u00b7\ub2e8\ubcc4 \uc81c\uc5b4", + "norm_label": "\u1103\u1161\u11ab\u1107\u1167\u11af \u1100\u116e\u1100\u1161\u11ab\u1100\u1161\u11b9" + }, + { + "label": "\uc5f0\ub3d9\uacfc \uacbd\uc0ac", + "file_type": "document", + "source_file": "pages/B06_Section/B06_revetment_link_controls.md", + "source_location": "L47", + "_origin": "ast", + "id": "pages_b06_section_b06_revetment_link_controls_\uc5f0\ub3d9\uacfc_\uacbd\uc0ac", + "community": 29, + "community_name": "B06 \uae30\uc2ad\ub9c9\uc774 \uc5f0\ub3d9\u00b7\uacbd\uc0ac\u00b7\ub2e8\ubcc4 \uc81c\uc5b4", + "norm_label": "\u110b\u1167\u11ab\u1103\u1169\u11bc\u1100\u116a \u1100\u1167\u11bc\u1109\u1161" + }, + { + "label": "\uc120\ud0dd\uacfc \ud558\uc774\ub77c\uc774\ud2b8", + "file_type": "document", + "source_file": "pages/B06_Section/B06_revetment_link_controls.md", + "source_location": "L58", + "_origin": "ast", + "id": "pages_b06_section_b06_revetment_link_controls_\uc120\ud0dd\uacfc_\ud558\uc774\ub77c\uc774\ud2b8", + "community": 29, + "community_name": "B06 \uae30\uc2ad\ub9c9\uc774 \uc5f0\ub3d9\u00b7\uacbd\uc0ac\u00b7\ub2e8\ubcc4 \uc81c\uc5b4", + "norm_label": "\u1109\u1165\u11ab\u1110\u1162\u11a8\u1100\u116a \u1112\u1161\u110b\u1175\u1105\u1161\u110b\u1175\u1110\u1173" + }, + { + "label": "\uac80\uc99d", + "file_type": "document", + "source_file": "pages/B06_Section/B06_revetment_link_controls.md", + "source_location": "L66", + "_origin": "ast", + "id": "pages_b06_section_b06_revetment_link_controls_\uac80\uc99d", + "community": 29, + "community_name": "B06 \uae30\uc2ad\ub9c9\uc774 \uc5f0\ub3d9\u00b7\uacbd\uc0ac\u00b7\ub2e8\ubcc4 \uc81c\uc5b4", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc" + }, + { + "label": "B06_Section_Engine_Areas.md", + "file_type": "document", + "source_file": "pages/B06_Section/backend/B06_Section_Engine_Areas.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_backend_b06_section_engine_areas", + "community": 75, + "community_name": "B06_Section_Engine_Areas \u2014 \ud6a1\ub2e8 \uba74\uc801 \uc801\ubd84 \uc5f0\uc0b0 \uc5d4\uc9c4", + "norm_label": "b06_section_engine_areas.md" + }, + { + "label": "B06_Section_Engine_Areas \u2014 \ud6a1\ub2e8 \uba74\uc801 \uc801\ubd84 \uc5f0\uc0b0 \uc5d4\uc9c4", + "file_type": "document", + "source_file": "pages/B06_Section/backend/B06_Section_Engine_Areas.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b06_section_backend_b06_section_engine_areas_b06_section_engine_areas_\ud6a1\ub2e8_\uba74\uc801_\uc801\ubd84_\uc5f0\uc0b0_\uc5d4\uc9c4", + "community": 75, + "community_name": "B06_Section_Engine_Areas \u2014 \ud6a1\ub2e8 \uba74\uc801 \uc801\ubd84 \uc5f0\uc0b0 \uc5d4\uc9c4", + "norm_label": "b06_section_engine_areas \u2014 \u1112\u116c\u11bc\u1103\u1161\u11ab \u1106\u1167\u11ab\u110c\u1165\u11a8 \u110c\u1165\u11a8\u1107\u116e\u11ab \u110b\u1167\u11ab\u1109\u1161\u11ab \u110b\u1166\u11ab\u110c\u1175\u11ab" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B06_Section/backend/B06_Section_Engine_Areas.md", + "source_location": "L13", + "_origin": "ast", + "id": "pages_b06_section_backend_b06_section_engine_areas_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 75, + "community_name": "B06_Section_Engine_Areas \u2014 \ud6a1\ub2e8 \uba74\uc801 \uc801\ubd84 \uc5f0\uc0b0 \uc5d4\uc9c4", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uae30\ub2a5 \ubc0f \ud568\uc218", + "file_type": "document", + "source_file": "pages/B06_Section/backend/B06_Section_Engine_Areas.md", + "source_location": "L17", + "_origin": "ast", + "id": "pages_b06_section_backend_b06_section_engine_areas_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "community": 75, + "community_name": "B06_Section_Engine_Areas \u2014 \ud6a1\ub2e8 \uba74\uc801 \uc801\ubd84 \uc5f0\uc0b0 \uc5d4\uc9c4", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc \u1106\u1175\u11be \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "3. \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B06_Section/backend/B06_Section_Engine_Areas.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b06_section_backend_b06_section_engine_areas_3_\uc758\uc874\uc131", + "community": 75, + "community_name": "B06_Section_Engine_Areas \u2014 \ud6a1\ub2e8 \uba74\uc801 \uc801\ubd84 \uc5f0\uc0b0 \uc5d4\uc9c4", + "norm_label": "3. \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B06_Section_Router.md", + "file_type": "document", + "source_file": "pages/B06_Section/backend/B06_Section_Router.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_backend_b06_section_router", + "community": 145, + "community_name": "B06_Section_Router.md", + "norm_label": "b06_section_router.md" + }, + { + "label": "B06_Section_Router.py", + "file_type": "document", + "source_file": "pages/B06_Section/backend/B06_Section_Router.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b06_section_backend_b06_section_router_b06_section_router_py", + "community": 145, + "community_name": "B06_Section_Router.md", + "norm_label": "b06_section_router.py" + }, + { + "label": "\ud83d\udee0\ufe0f \ub77c\uc6b0\ud130 API \ubc0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B06_Section/backend/B06_Section_Router.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b06_section_backend_b06_section_router_\ub77c\uc6b0\ud130_api_\ubc0f_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 145, + "community_name": "B06_Section_Router.md", + "norm_label": "\ud83d\udee0\ufe0f \u1105\u1161\u110b\u116e\u1110\u1165 api \u1106\u1175\u11be \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "\ud83d\udd17 \uc5f0\uad00 \uac1c\ub150 \ubc0f \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B06_Section/backend/B06_Section_Router.md", + "source_location": "L25", + "_origin": "ast", + "id": "pages_b06_section_backend_b06_section_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "community": 145, + "community_name": "B06_Section_Router.md", + "norm_label": "\ud83d\udd17 \u110b\u1167\u11ab\u1100\u116a\u11ab \u1100\u1162\u1102\u1167\u11b7 \u1106\u1175\u11be \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B06_Section_Router_Confirm.md", + "file_type": "document", + "source_file": "pages/B06_Section/backend/B06_Section_Router_Confirm.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_backend_b06_section_router_confirm", + "community": 76, + "community_name": "B06_Section_Router_Confirm \u2014 \uc784\uc2dc \uc800\uc7a5 \ubc0f \ud655\uc815 \ub77c\uc6b0\ud130", + "norm_label": "b06_section_router_confirm.md" + }, + { + "label": "B06_Section_Router_Confirm \u2014 \uc784\uc2dc \uc800\uc7a5 \ubc0f \ud655\uc815 \ub77c\uc6b0\ud130", + "file_type": "document", + "source_file": "pages/B06_Section/backend/B06_Section_Router_Confirm.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b06_section_backend_b06_section_router_confirm_b06_section_router_confirm_\uc784\uc2dc_\uc800\uc7a5_\ubc0f_\ud655\uc815_\ub77c\uc6b0\ud130", + "community": 76, + "community_name": "B06_Section_Router_Confirm \u2014 \uc784\uc2dc \uc800\uc7a5 \ubc0f \ud655\uc815 \ub77c\uc6b0\ud130", + "norm_label": "b06_section_router_confirm \u2014 \u110b\u1175\u11b7\u1109\u1175 \u110c\u1165\u110c\u1161\u11bc \u1106\u1175\u11be \u1112\u116a\u11a8\u110c\u1165\u11bc \u1105\u1161\u110b\u116e\u1110\u1165" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B06_Section/backend/B06_Section_Router_Confirm.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b06_section_backend_b06_section_router_confirm_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 76, + "community_name": "B06_Section_Router_Confirm \u2014 \uc784\uc2dc \uc800\uc7a5 \ubc0f \ud655\uc815 \ub77c\uc6b0\ud130", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uae30\ub2a5 \ubc0f \uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "file_type": "document", + "source_file": "pages/B06_Section/backend/B06_Section_Router_Confirm.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b06_section_backend_b06_section_router_confirm_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "community": 76, + "community_name": "B06_Section_Router_Confirm \u2014 \uc784\uc2dc \uc800\uc7a5 \ubc0f \ud655\uc815 \ub77c\uc6b0\ud130", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc \u1106\u1175\u11be \u110b\u1166\u11ab\u1103\u1173\u1111\u1169\u110b\u1175\u11ab\u1110\u1173" + }, + { + "label": "3. \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B06_Section/backend/B06_Section_Router_Confirm.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_b06_section_backend_b06_section_router_confirm_3_\uc758\uc874\uc131", + "community": 76, + "community_name": "B06_Section_Router_Confirm \u2014 \uc784\uc2dc \uc800\uc7a5 \ubc0f \ud655\uc815 \ub77c\uc6b0\ud130", + "norm_label": "3. \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B06_Section_Api_Fetch.md", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_Api_Fetch.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_api_fetch", + "community": 108, + "community_name": "B06_Section_Api_Fetch \u2014 B06 \ud504\ub860\ud2b8\uc5d4\ub4dc API \ud074\ub77c\uc774\uc5b8\ud2b8", + "norm_label": "b06_section_api_fetch.md" + }, + { + "label": "B06_Section_Api_Fetch \u2014 B06 \ud504\ub860\ud2b8\uc5d4\ub4dc API \ud074\ub77c\uc774\uc5b8\ud2b8", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_Api_Fetch.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_api_fetch_b06_section_api_fetch_b06_\ud504\ub860\ud2b8\uc5d4\ub4dc_api_\ud074\ub77c\uc774\uc5b8\ud2b8", + "community": 108, + "community_name": "B06_Section_Api_Fetch \u2014 B06 \ud504\ub860\ud2b8\uc5d4\ub4dc API \ud074\ub77c\uc774\uc5b8\ud2b8", + "norm_label": "b06_section_api_fetch \u2014 b06 \u1111\u1173\u1105\u1169\u11ab\u1110\u1173\u110b\u1166\u11ab\u1103\u1173 api \u110f\u1173\u11af\u1105\u1161\u110b\u1175\u110b\u1165\u11ab\u1110\u1173" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_Api_Fetch.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_api_fetch_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 108, + "community_name": "B06_Section_Api_Fetch \u2014 B06 \ud504\ub860\ud2b8\uc5d4\ub4dc API \ud074\ub77c\uc774\uc5b8\ud2b8", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uc5f0\ub3d9 API \ud568\uc218", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_Api_Fetch.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_api_fetch_2_\uc8fc\uc694_\uc5f0\ub3d9_api_\ud568\uc218", + "community": 108, + "community_name": "B06_Section_Api_Fetch \u2014 B06 \ud504\ub860\ud2b8\uc5d4\ub4dc API \ud074\ub77c\uc774\uc5b8\ud2b8", + "norm_label": "2. \u110c\u116e\u110b\u116d \u110b\u1167\u11ab\u1103\u1169\u11bc api \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "B06_Section_UI_Cross_Areas.md", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Cross_Areas.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_cross_areas", + "community": 77, + "community_name": "B06_Section_UI_Cross_Areas \u2014 \ud6a1\ub2e8 \ub2e8\uba74\uc801 \ud45c\uae30 \ubc0f \ubc34\ub4dc \ud558\uc774\ub77c\uc774\ud2b8", + "norm_label": "b06_section_ui_cross_areas.md" + }, + { + "label": "B06_Section_UI_Cross_Areas \u2014 \ud6a1\ub2e8 \ub2e8\uba74\uc801 \ud45c\uae30 \ubc0f \ubc34\ub4dc \ud558\uc774\ub77c\uc774\ud2b8", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Cross_Areas.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_cross_areas_b06_section_ui_cross_areas_\ud6a1\ub2e8_\ub2e8\uba74\uc801_\ud45c\uae30_\ubc0f_\ubc34\ub4dc_\ud558\uc774\ub77c\uc774\ud2b8", + "community": 77, + "community_name": "B06_Section_UI_Cross_Areas \u2014 \ud6a1\ub2e8 \ub2e8\uba74\uc801 \ud45c\uae30 \ubc0f \ubc34\ub4dc \ud558\uc774\ub77c\uc774\ud2b8", + "norm_label": "b06_section_ui_cross_areas \u2014 \u1112\u116c\u11bc\u1103\u1161\u11ab \u1103\u1161\u11ab\u1106\u1167\u11ab\u110c\u1165\u11a8 \u1111\u116d\u1100\u1175 \u1106\u1175\u11be \u1107\u1162\u11ab\u1103\u1173 \u1112\u1161\u110b\u1175\u1105\u1161\u110b\u1175\u1110\u1173" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Cross_Areas.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_cross_areas_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 77, + "community_name": "B06_Section_UI_Cross_Areas \u2014 \ud6a1\ub2e8 \ub2e8\uba74\uc801 \ud45c\uae30 \ubc0f \ubc34\ub4dc \ud558\uc774\ub77c\uc774\ud2b8", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uae30\ub2a5 \ubc0f \ud568\uc218", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Cross_Areas.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_cross_areas_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "community": 77, + "community_name": "B06_Section_UI_Cross_Areas \u2014 \ud6a1\ub2e8 \ub2e8\uba74\uc801 \ud45c\uae30 \ubc0f \ubc34\ub4dc \ud558\uc774\ub77c\uc774\ud2b8", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc \u1106\u1175\u11be \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "3. \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Cross_Areas.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_cross_areas_3_\uc758\uc874\uc131", + "community": 77, + "community_name": "B06_Section_UI_Cross_Areas \u2014 \ud6a1\ub2e8 \ub2e8\uba74\uc801 \ud45c\uae30 \ubc0f \ubc34\ub4dc \ud558\uc774\ub77c\uc774\ud2b8", + "norm_label": "3. \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B06_Section_UI_Cross_Design.md", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Cross_Design.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_cross_design", + "community": 78, + "community_name": "B06_Section_UI_Cross_Design \u2014 \ud6a1\ub2e8 \uce21\uc810\ubcc4 \uc138\ubd80 \uc124\uacc4 \ucee8\ud2b8\ub864", + "norm_label": "b06_section_ui_cross_design.md" + }, + { + "label": "B06_Section_UI_Cross_Design \u2014 \ud6a1\ub2e8 \uce21\uc810\ubcc4 \uc138\ubd80 \uc124\uacc4 \ucee8\ud2b8\ub864", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Cross_Design.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_cross_design_b06_section_ui_cross_design_\ud6a1\ub2e8_\uce21\uc810\ubcc4_\uc138\ubd80_\uc124\uacc4_\ucee8\ud2b8\ub864", + "community": 78, + "community_name": "B06_Section_UI_Cross_Design \u2014 \ud6a1\ub2e8 \uce21\uc810\ubcc4 \uc138\ubd80 \uc124\uacc4 \ucee8\ud2b8\ub864", + "norm_label": "b06_section_ui_cross_design \u2014 \u1112\u116c\u11bc\u1103\u1161\u11ab \u110e\u1173\u11a8\u110c\u1165\u11b7\u1107\u1167\u11af \u1109\u1166\u1107\u116e \u1109\u1165\u11af\u1100\u1168 \u110f\u1165\u11ab\u1110\u1173\u1105\u1169\u11af" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Cross_Design.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_cross_design_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 78, + "community_name": "B06_Section_UI_Cross_Design \u2014 \ud6a1\ub2e8 \uce21\uc810\ubcc4 \uc138\ubd80 \uc124\uacc4 \ucee8\ud2b8\ub864", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uae30\ub2a5 \ubc0f \ud568\uc218", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Cross_Design.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_cross_design_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "community": 78, + "community_name": "B06_Section_UI_Cross_Design \u2014 \ud6a1\ub2e8 \uce21\uc810\ubcc4 \uc138\ubd80 \uc124\uacc4 \ucee8\ud2b8\ub864", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc \u1106\u1175\u11be \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "3. \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Cross_Design.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_cross_design_3_\uc758\uc874\uc131", + "community": 78, + "community_name": "B06_Section_UI_Cross_Design \u2014 \ud6a1\ub2e8 \uce21\uc810\ubcc4 \uc138\ubd80 \uc124\uacc4 \ucee8\ud2b8\ub864", + "norm_label": "3. \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B06_Section_UI_MassHaul.md", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul", + "community": 79, + "community_name": "B06_Section_UI_MassHaul \u2014 \uc720\ud1a0\uace1\uc120 \uc801\ubd84 \uacc4\uc0b0 \uc5d4\uc9c4", + "norm_label": "b06_section_ui_masshaul.md" + }, + { + "label": "B06_Section_UI_MassHaul \u2014 \uc720\ud1a0\uace1\uc120 \uc801\ubd84 \uacc4\uc0b0 \uc5d4\uc9c4", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_b06_section_ui_masshaul_\uc720\ud1a0\uace1\uc120_\uc801\ubd84_\uacc4\uc0b0_\uc5d4\uc9c4", + "community": 79, + "community_name": "B06_Section_UI_MassHaul \u2014 \uc720\ud1a0\uace1\uc120 \uc801\ubd84 \uacc4\uc0b0 \uc5d4\uc9c4", + "norm_label": "b06_section_ui_masshaul \u2014 \u110b\u1172\u1110\u1169\u1100\u1169\u11a8\u1109\u1165\u11ab \u110c\u1165\u11a8\u1107\u116e\u11ab \u1100\u1168\u1109\u1161\u11ab \u110b\u1166\u11ab\u110c\u1175\u11ab" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 79, + "community_name": "B06_Section_UI_MassHaul \u2014 \uc720\ud1a0\uace1\uc120 \uc801\ubd84 \uacc4\uc0b0 \uc5d4\uc9c4", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uae30\ub2a5 \ubc0f \ud568\uc218", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "community": 79, + "community_name": "B06_Section_UI_MassHaul \u2014 \uc720\ud1a0\uace1\uc120 \uc801\ubd84 \uacc4\uc0b0 \uc5d4\uc9c4", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc \u1106\u1175\u11be \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "3. \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul.md", + "source_location": "L24", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_3_\uc758\uc874\uc131", + "community": 79, + "community_name": "B06_Section_UI_MassHaul \u2014 \uc720\ud1a0\uace1\uc120 \uc801\ubd84 \uacc4\uc0b0 \uc5d4\uc9c4", + "norm_label": "3. \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B06_Section_UI_MassHaul_Balance.md", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_balance", + "community": 80, + "community_name": "B06_Section_UI_MassHaul_Balance \u2014 \ud3c9\ud615\uc120 \ubc0f \uc7a5\ube44 \ub760 \ubd84\ud560 \uc5d4\uc9c4", + "norm_label": "b06_section_ui_masshaul_balance.md" + }, + { + "label": "B06_Section_UI_MassHaul_Balance \u2014 \ud3c9\ud615\uc120 \ubc0f \uc7a5\ube44 \ub760 \ubd84\ud560 \uc5d4\uc9c4", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_b06_section_ui_masshaul_balance_\ud3c9\ud615\uc120_\ubc0f_\uc7a5\ube44_\ub760_\ubd84\ud560_\uc5d4\uc9c4", + "community": 80, + "community_name": "B06_Section_UI_MassHaul_Balance \u2014 \ud3c9\ud615\uc120 \ubc0f \uc7a5\ube44 \ub760 \ubd84\ud560 \uc5d4\uc9c4", + "norm_label": "b06_section_ui_masshaul_balance \u2014 \u1111\u1167\u11bc\u1112\u1167\u11bc\u1109\u1165\u11ab \u1106\u1175\u11be \u110c\u1161\u11bc\u1107\u1175 \u1104\u1175 \u1107\u116e\u11ab\u1112\u1161\u11af \u110b\u1166\u11ab\u110c\u1175\u11ab" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 80, + "community_name": "B06_Section_UI_MassHaul_Balance \u2014 \ud3c9\ud615\uc120 \ubc0f \uc7a5\ube44 \ub760 \ubd84\ud560 \uc5d4\uc9c4", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uae30\ub2a5 \ubc0f \uc54c\uace0\ub9ac\uc998", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\uc54c\uace0\ub9ac\uc998", + "community": 80, + "community_name": "B06_Section_UI_MassHaul_Balance \u2014 \ud3c9\ud615\uc120 \ubc0f \uc7a5\ube44 \ub760 \ubd84\ud560 \uc5d4\uc9c4", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc \u1106\u1175\u11be \u110b\u1161\u11af\u1100\u1169\u1105\u1175\u110c\u1173\u11b7" + }, + { + "label": "3. \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance.md", + "source_location": "L24", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_3_\uc758\uc874\uc131", + "community": 80, + "community_name": "B06_Section_UI_MassHaul_Balance \u2014 \ud3c9\ud615\uc120 \ubc0f \uc7a5\ube44 \ub760 \ubd84\ud560 \uc5d4\uc9c4", + "norm_label": "3. \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B06_Section_UI_MassHaul_Balance_View.md", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance_View.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_view", + "community": 81, + "community_name": "B06_Section_UI_MassHaul_Balance_View \u2014 \uc6b4\ubc18 \ub760 \uc2dc\uac01\ud654 \ub80c\ub354\ub7ec", + "norm_label": "b06_section_ui_masshaul_balance_view.md" + }, + { + "label": "B06_Section_UI_MassHaul_Balance_View \u2014 \uc6b4\ubc18 \ub760 \uc2dc\uac01\ud654 \ub80c\ub354\ub7ec", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance_View.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_view_b06_section_ui_masshaul_balance_view_\uc6b4\ubc18_\ub760_\uc2dc\uac01\ud654_\ub80c\ub354\ub7ec", + "community": 81, + "community_name": "B06_Section_UI_MassHaul_Balance_View \u2014 \uc6b4\ubc18 \ub760 \uc2dc\uac01\ud654 \ub80c\ub354\ub7ec", + "norm_label": "b06_section_ui_masshaul_balance_view \u2014 \u110b\u116e\u11ab\u1107\u1161\u11ab \u1104\u1175 \u1109\u1175\u1100\u1161\u11a8\u1112\u116a \u1105\u1166\u11ab\u1103\u1165\u1105\u1165" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance_View.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_view_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 81, + "community_name": "B06_Section_UI_MassHaul_Balance_View \u2014 \uc6b4\ubc18 \ub760 \uc2dc\uac01\ud654 \ub80c\ub354\ub7ec", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uae30\ub2a5 \ubc0f \ub80c\ub354\ub9c1", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance_View.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_view_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ub80c\ub354\ub9c1", + "community": 81, + "community_name": "B06_Section_UI_MassHaul_Balance_View \u2014 \uc6b4\ubc18 \ub760 \uc2dc\uac01\ud654 \ub80c\ub354\ub7ec", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc \u1106\u1175\u11be \u1105\u1166\u11ab\u1103\u1165\u1105\u1175\u11bc" + }, + { + "label": "3. \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance_View.md", + "source_location": "L24", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_view_3_\uc758\uc874\uc131", + "community": 81, + "community_name": "B06_Section_UI_MassHaul_Balance_View \u2014 \uc6b4\ubc18 \ub760 \uc2dc\uac01\ud654 \ub80c\ub354\ub7ec", + "norm_label": "3. \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B06_Section_UI_MassHaul_Balloon.md", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balloon.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_balloon", + "community": 82, + "community_name": "B06_Section_UI_MassHaul_Balloon \u2014 \ubb3c\ub7c9 \ub9d0\ud48d\uc120 \ubc30\uce58 \ubc0f \uc870\uc791", + "norm_label": "b06_section_ui_masshaul_balloon.md" + }, + { + "label": "B06_Section_UI_MassHaul_Balloon \u2014 \ubb3c\ub7c9 \ub9d0\ud48d\uc120 \ubc30\uce58 \ubc0f \uc870\uc791", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balloon.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_balloon_b06_section_ui_masshaul_balloon_\ubb3c\ub7c9_\ub9d0\ud48d\uc120_\ubc30\uce58_\ubc0f_\uc870\uc791", + "community": 82, + "community_name": "B06_Section_UI_MassHaul_Balloon \u2014 \ubb3c\ub7c9 \ub9d0\ud48d\uc120 \ubc30\uce58 \ubc0f \uc870\uc791", + "norm_label": "b06_section_ui_masshaul_balloon \u2014 \u1106\u116e\u11af\u1105\u1163\u11bc \u1106\u1161\u11af\u1111\u116e\u11bc\u1109\u1165\u11ab \u1107\u1162\u110e\u1175 \u1106\u1175\u11be \u110c\u1169\u110c\u1161\u11a8" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balloon.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_balloon_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 82, + "community_name": "B06_Section_UI_MassHaul_Balloon \u2014 \ubb3c\ub7c9 \ub9d0\ud48d\uc120 \ubc30\uce58 \ubc0f \uc870\uc791", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uae30\ub2a5 \ubc0f \uc54c\uace0\ub9ac\uc998", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balloon.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_balloon_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\uc54c\uace0\ub9ac\uc998", + "community": 82, + "community_name": "B06_Section_UI_MassHaul_Balloon \u2014 \ubb3c\ub7c9 \ub9d0\ud48d\uc120 \ubc30\uce58 \ubc0f \uc870\uc791", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc \u1106\u1175\u11be \u110b\u1161\u11af\u1100\u1169\u1105\u1175\u110c\u1173\u11b7" + }, + { + "label": "3. \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balloon.md", + "source_location": "L25", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_balloon_3_\uc758\uc874\uc131", + "community": 82, + "community_name": "B06_Section_UI_MassHaul_Balloon \u2014 \ubb3c\ub7c9 \ub9d0\ud48d\uc120 \ubc30\uce58 \ubc0f \uc870\uc791", + "norm_label": "3. \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B06_Section_UI_MassHaul_Curve.md", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Curve.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_curve", + "community": 83, + "community_name": "B06_Section_UI_MassHaul_Curve \u2014 \uc720\ud1a0\uace1\uc120 \uada4\uc801 \ubcf4\uac04 \ubc0f \ub80c\ub354\ub9c1", + "norm_label": "b06_section_ui_masshaul_curve.md" + }, + { + "label": "B06_Section_UI_MassHaul_Curve \u2014 \uc720\ud1a0\uace1\uc120 \uada4\uc801 \ubcf4\uac04 \ubc0f \ub80c\ub354\ub9c1", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Curve.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_curve_b06_section_ui_masshaul_curve_\uc720\ud1a0\uace1\uc120_\uada4\uc801_\ubcf4\uac04_\ubc0f_\ub80c\ub354\ub9c1", + "community": 83, + "community_name": "B06_Section_UI_MassHaul_Curve \u2014 \uc720\ud1a0\uace1\uc120 \uada4\uc801 \ubcf4\uac04 \ubc0f \ub80c\ub354\ub9c1", + "norm_label": "b06_section_ui_masshaul_curve \u2014 \u110b\u1172\u1110\u1169\u1100\u1169\u11a8\u1109\u1165\u11ab \u1100\u1170\u110c\u1165\u11a8 \u1107\u1169\u1100\u1161\u11ab \u1106\u1175\u11be \u1105\u1166\u11ab\u1103\u1165\u1105\u1175\u11bc" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Curve.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_curve_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 83, + "community_name": "B06_Section_UI_MassHaul_Curve \u2014 \uc720\ud1a0\uace1\uc120 \uada4\uc801 \ubcf4\uac04 \ubc0f \ub80c\ub354\ub9c1", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uae30\ub2a5 \ubc0f \uae30\ud558 \uc218\ud559", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Curve.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_curve_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\uae30\ud558_\uc218\ud559", + "community": 83, + "community_name": "B06_Section_UI_MassHaul_Curve \u2014 \uc720\ud1a0\uace1\uc120 \uada4\uc801 \ubcf4\uac04 \ubc0f \ub80c\ub354\ub9c1", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc \u1106\u1175\u11be \u1100\u1175\u1112\u1161 \u1109\u116e\u1112\u1161\u11a8" + }, + { + "label": "3. \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Curve.md", + "source_location": "L22", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_curve_3_\uc758\uc874\uc131", + "community": 83, + "community_name": "B06_Section_UI_MassHaul_Curve \u2014 \uc720\ud1a0\uace1\uc120 \uada4\uc801 \ubcf4\uac04 \ubc0f \ub80c\ub354\ub9c1", + "norm_label": "3. \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B06_Section_UI_MassHaul_Settle.md", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Settle.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_settle", + "community": 84, + "community_name": "B06_Section_UI_MassHaul_Settle \u2014 \ud1a0\ub7c9 \uc815\uc0b0 \ubc0f \uc7a5\uac70\ub9ac \uc0c1\uc1c4 \uc5d4\uc9c4", + "norm_label": "b06_section_ui_masshaul_settle.md" + }, + { + "label": "B06_Section_UI_MassHaul_Settle \u2014 \ud1a0\ub7c9 \uc815\uc0b0 \ubc0f \uc7a5\uac70\ub9ac \uc0c1\uc1c4 \uc5d4\uc9c4", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Settle.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_settle_b06_section_ui_masshaul_settle_\ud1a0\ub7c9_\uc815\uc0b0_\ubc0f_\uc7a5\uac70\ub9ac_\uc0c1\uc1c4_\uc5d4\uc9c4", + "community": 84, + "community_name": "B06_Section_UI_MassHaul_Settle \u2014 \ud1a0\ub7c9 \uc815\uc0b0 \ubc0f \uc7a5\uac70\ub9ac \uc0c1\uc1c4 \uc5d4\uc9c4", + "norm_label": "b06_section_ui_masshaul_settle \u2014 \u1110\u1169\u1105\u1163\u11bc \u110c\u1165\u11bc\u1109\u1161\u11ab \u1106\u1175\u11be \u110c\u1161\u11bc\u1100\u1165\u1105\u1175 \u1109\u1161\u11bc\u1109\u116b \u110b\u1166\u11ab\u110c\u1175\u11ab" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Settle.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_settle_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 84, + "community_name": "B06_Section_UI_MassHaul_Settle \u2014 \ud1a0\ub7c9 \uc815\uc0b0 \ubc0f \uc7a5\uac70\ub9ac \uc0c1\uc1c4 \uc5d4\uc9c4", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uae30\ub2a5 \ubc0f \ub85c\uc9c1", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Settle.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_settle_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ub85c\uc9c1", + "community": 84, + "community_name": "B06_Section_UI_MassHaul_Settle \u2014 \ud1a0\ub7c9 \uc815\uc0b0 \ubc0f \uc7a5\uac70\ub9ac \uc0c1\uc1c4 \uc5d4\uc9c4", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc \u1106\u1175\u11be \u1105\u1169\u110c\u1175\u11a8" + }, + { + "label": "3. \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Settle.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_settle_3_\uc758\uc874\uc131", + "community": 84, + "community_name": "B06_Section_UI_MassHaul_Settle \u2014 \ud1a0\ub7c9 \uc815\uc0b0 \ubc0f \uc7a5\uac70\ub9ac \uc0c1\uc1c4 \uc5d4\uc9c4", + "norm_label": "3. \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B06_Section_UI_MassHaul_View.md", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_View.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_view", + "community": 85, + "community_name": "B06_Section_UI_MassHaul_View \u2014 \uc720\ud1a0\uace1\uc120 \uc2dc\uac01\ud654 \ub80c\ub354\ub7ec", + "norm_label": "b06_section_ui_masshaul_view.md" + }, + { + "label": "B06_Section_UI_MassHaul_View \u2014 \uc720\ud1a0\uace1\uc120 \uc2dc\uac01\ud654 \ub80c\ub354\ub7ec", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_View.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_view_b06_section_ui_masshaul_view_\uc720\ud1a0\uace1\uc120_\uc2dc\uac01\ud654_\ub80c\ub354\ub7ec", + "community": 85, + "community_name": "B06_Section_UI_MassHaul_View \u2014 \uc720\ud1a0\uace1\uc120 \uc2dc\uac01\ud654 \ub80c\ub354\ub7ec", + "norm_label": "b06_section_ui_masshaul_view \u2014 \u110b\u1172\u1110\u1169\u1100\u1169\u11a8\u1109\u1165\u11ab \u1109\u1175\u1100\u1161\u11a8\u1112\u116a \u1105\u1166\u11ab\u1103\u1165\u1105\u1165" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_View.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_view_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 85, + "community_name": "B06_Section_UI_MassHaul_View \u2014 \uc720\ud1a0\uace1\uc120 \uc2dc\uac01\ud654 \ub80c\ub354\ub7ec", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uae30\ub2a5 \ubc0f \ud568\uc218", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_View.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_view_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "community": 85, + "community_name": "B06_Section_UI_MassHaul_View \u2014 \uc720\ud1a0\uace1\uc120 \uc2dc\uac01\ud654 \ub80c\ub354\ub7ec", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc \u1106\u1175\u11be \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "3. \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_View.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_masshaul_view_3_\uc758\uc874\uc131", + "community": 85, + "community_name": "B06_Section_UI_MassHaul_View \u2014 \uc720\ud1a0\uace1\uc120 \uc2dc\uac01\ud654 \ub80c\ub354\ub7ec", + "norm_label": "3. \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B06_Section_UI_Page.md", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Page.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_page", + "community": 86, + "community_name": "B06_Section_UI_Page \u2014 B06 \uba54\uc778 \ud398\uc774\uc9c0 \uc624\ucf00\uc2a4\ud2b8\ub808\uc774\ud130", + "norm_label": "b06_section_ui_page.md" + }, + { + "label": "B06_Section_UI_Page \u2014 B06 \uba54\uc778 \ud398\uc774\uc9c0 \uc624\ucf00\uc2a4\ud2b8\ub808\uc774\ud130", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Page.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_page_b06_section_ui_page_b06_\uba54\uc778_\ud398\uc774\uc9c0_\uc624\ucf00\uc2a4\ud2b8\ub808\uc774\ud130", + "community": 86, + "community_name": "B06_Section_UI_Page \u2014 B06 \uba54\uc778 \ud398\uc774\uc9c0 \uc624\ucf00\uc2a4\ud2b8\ub808\uc774\ud130", + "norm_label": "b06_section_ui_page \u2014 b06 \u1106\u1166\u110b\u1175\u11ab \u1111\u1166\u110b\u1175\u110c\u1175 \u110b\u1169\u110f\u1166\u1109\u1173\u1110\u1173\u1105\u1166\u110b\u1175\u1110\u1165" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Page.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_page_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 86, + "community_name": "B06_Section_UI_Page \u2014 B06 \uba54\uc778 \ud398\uc774\uc9c0 \uc624\ucf00\uc2a4\ud2b8\ub808\uc774\ud130", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uae30\ub2a5 \ubc0f \ud568\uc218", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Page.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_page_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "community": 86, + "community_name": "B06_Section_UI_Page \u2014 B06 \uba54\uc778 \ud398\uc774\uc9c0 \uc624\ucf00\uc2a4\ud2b8\ub808\uc774\ud130", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc \u1106\u1175\u11be \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "3. \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Page.md", + "source_location": "L27", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_page_3_\uc758\uc874\uc131", + "community": 86, + "community_name": "B06_Section_UI_Page \u2014 B06 \uba54\uc778 \ud398\uc774\uc9c0 \uc624\ucf00\uc2a4\ud2b8\ub808\uc774\ud130", + "norm_label": "3. \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B06_Section_UI_Section_View.md", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Section_View.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_section_view", + "community": 87, + "community_name": "B06_Section_UI_Section_View \u2014 \uc885/\ud6a1\ub2e8 \ubc0f \uc720\ud1a0\uace1\uc120 \ubdf0 \uc870\ub9bd", + "norm_label": "b06_section_ui_section_view.md" + }, + { + "label": "B06_Section_UI_Section_View \u2014 \uc885/\ud6a1\ub2e8 \ubc0f \uc720\ud1a0\uace1\uc120 \ubdf0 \uc870\ub9bd", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Section_View.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_section_view_b06_section_ui_section_view_\uc885_\ud6a1\ub2e8_\ubc0f_\uc720\ud1a0\uace1\uc120_\ubdf0_\uc870\ub9bd", + "community": 87, + "community_name": "B06_Section_UI_Section_View \u2014 \uc885/\ud6a1\ub2e8 \ubc0f \uc720\ud1a0\uace1\uc120 \ubdf0 \uc870\ub9bd", + "norm_label": "b06_section_ui_section_view \u2014 \u110c\u1169\u11bc/\u1112\u116c\u11bc\u1103\u1161\u11ab \u1106\u1175\u11be \u110b\u1172\u1110\u1169\u1100\u1169\u11a8\u1109\u1165\u11ab \u1107\u1172 \u110c\u1169\u1105\u1175\u11b8" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Section_View.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_section_view_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 87, + "community_name": "B06_Section_UI_Section_View \u2014 \uc885/\ud6a1\ub2e8 \ubc0f \uc720\ud1a0\uace1\uc120 \ubdf0 \uc870\ub9bd", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uae30\ub2a5 \ubc0f \ud568\uc218", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Section_View.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_section_view_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "community": 87, + "community_name": "B06_Section_UI_Section_View \u2014 \uc885/\ud6a1\ub2e8 \ubc0f \uc720\ud1a0\uace1\uc120 \ubdf0 \uc870\ub9bd", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc \u1106\u1175\u11be \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "3. \uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Section_View.md", + "source_location": "L28", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_section_view_3_\uc758\uc874\uc131", + "community": 87, + "community_name": "B06_Section_UI_Section_View \u2014 \uc885/\ud6a1\ub2e8 \ubc0f \uc720\ud1a0\uace1\uc120 \ubdf0 \uc870\ub9bd", + "norm_label": "3. \u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B06_Section_UI_Standard_Diagram.md", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Standard_Diagram.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_standard_diagram", + "community": 109, + "community_name": "B06_Section_UI_Standard_Diagram \u2014 \ud45c\uc900\ub2e8\uba74 \ubaa8\uc2dd\ub3c4 \ucef4\ud3ec\ub10c\ud2b8", + "norm_label": "b06_section_ui_standard_diagram.md" + }, + { + "label": "B06_Section_UI_Standard_Diagram \u2014 \ud45c\uc900\ub2e8\uba74 \ubaa8\uc2dd\ub3c4 \ucef4\ud3ec\ub10c\ud2b8", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Standard_Diagram.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_standard_diagram_b06_section_ui_standard_diagram_\ud45c\uc900\ub2e8\uba74_\ubaa8\uc2dd\ub3c4_\ucef4\ud3ec\ub10c\ud2b8", + "community": 109, + "community_name": "B06_Section_UI_Standard_Diagram \u2014 \ud45c\uc900\ub2e8\uba74 \ubaa8\uc2dd\ub3c4 \ucef4\ud3ec\ub10c\ud2b8", + "norm_label": "b06_section_ui_standard_diagram \u2014 \u1111\u116d\u110c\u116e\u11ab\u1103\u1161\u11ab\u1106\u1167\u11ab \u1106\u1169\u1109\u1175\u11a8\u1103\u1169 \u110f\u1165\u11b7\u1111\u1169\u1102\u1165\u11ab\u1110\u1173" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Standard_Diagram.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_standard_diagram_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 109, + "community_name": "B06_Section_UI_Standard_Diagram \u2014 \ud45c\uc900\ub2e8\uba74 \ubaa8\uc2dd\ub3c4 \ucef4\ud3ec\ub10c\ud2b8", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uae30\ub2a5", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Standard_Diagram.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_standard_diagram_2_\uc8fc\uc694_\uae30\ub2a5", + "community": 109, + "community_name": "B06_Section_UI_Standard_Diagram \u2014 \ud45c\uc900\ub2e8\uba74 \ubaa8\uc2dd\ub3c4 \ucef4\ud3ec\ub10c\ud2b8", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc" + }, + { + "label": "B06_Section_UI_Standard_Panel.md", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Standard_Panel.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_standard_panel", + "community": 110, + "community_name": "B06_Section_UI_Standard_Panel \u2014 \ud45c\uc900\ub2e8\uba74 \uc785\ub825 \ubc0f \uc81c\uc5b4 \ud328\ub110", + "norm_label": "b06_section_ui_standard_panel.md" + }, + { + "label": "B06_Section_UI_Standard_Panel \u2014 \ud45c\uc900\ub2e8\uba74 \uc785\ub825 \ubc0f \uc81c\uc5b4 \ud328\ub110", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Standard_Panel.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_standard_panel_b06_section_ui_standard_panel_\ud45c\uc900\ub2e8\uba74_\uc785\ub825_\ubc0f_\uc81c\uc5b4_\ud328\ub110", + "community": 110, + "community_name": "B06_Section_UI_Standard_Panel \u2014 \ud45c\uc900\ub2e8\uba74 \uc785\ub825 \ubc0f \uc81c\uc5b4 \ud328\ub110", + "norm_label": "b06_section_ui_standard_panel \u2014 \u1111\u116d\u110c\u116e\u11ab\u1103\u1161\u11ab\u1106\u1167\u11ab \u110b\u1175\u11b8\u1105\u1167\u11a8 \u1106\u1175\u11be \u110c\u1166\u110b\u1165 \u1111\u1162\u1102\u1165\u11af" + }, + { + "label": "1. \uac1c\uc694 \ubc0f \uc5ed\ud560", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Standard_Panel.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_standard_panel_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "community": 110, + "community_name": "B06_Section_UI_Standard_Panel \u2014 \ud45c\uc900\ub2e8\uba74 \uc785\ub825 \ubc0f \uc81c\uc5b4 \ud328\ub110", + "norm_label": "1. \u1100\u1162\u110b\u116d \u1106\u1175\u11be \u110b\u1167\u11a8\u1112\u1161\u11af" + }, + { + "label": "2. \uc8fc\uc694 \uae30\ub2a5", + "file_type": "document", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Standard_Panel.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b06_section_frontend_b06_section_ui_standard_panel_2_\uc8fc\uc694_\uae30\ub2a5", + "community": 110, + "community_name": "B06_Section_UI_Standard_Panel \u2014 \ud45c\uc900\ub2e8\uba74 \uc785\ub825 \ubc0f \uc81c\uc5b4 \ud328\ub110", + "norm_label": "2. \u110c\u116e\u110b\u116d \u1100\u1175\u1102\u1173\u11bc" + }, + { + "label": "B07_frontend.md", + "file_type": "document", + "source_file": "pages/B07_DesignDetail/B07_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b07_designdetail_b07_frontend", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "b07_frontend.md" + }, + { + "label": "B07 DesignDetail \u2014 \ud604\uc7ac \ucc45\uc784", + "file_type": "document", + "source_file": "pages/B07_DesignDetail/B07_frontend.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b07_designdetail_b07_frontend_b07_designdetail_\ud604\uc7ac_\ucc45\uc784", + "community": 33, + "community_name": "\ud604\uc7ac \uad6c\ud604 \ud604\ud669 \u2014 \uc18c\uc2a4 \uc77d\uae30 \uac10\uc0ac", + "norm_label": "b07 designdetail \u2014 \u1112\u1167\u11ab\u110c\u1162 \u110e\u1162\u11a8\u110b\u1175\u11b7" + }, + { + "label": "B07_standard_drawings_2026_09.md", + "file_type": "document", + "source_file": "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b07_designdetail_b07_standard_drawings_2026_09", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "b07_standard_drawings_2026_09.md" + }, + { + "label": "B07 \uad6c\uc870\ubb3c \ud45c\uc900\ub3c4 \u2014 \uc870\uc0ac\u00b7\ud569\uc758\uc640 \ud604\uc7ac \ud1b5\ub85c", + "file_type": "document", + "source_file": "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b07_designdetail_b07_standard_drawings_2026_09_b07_\uad6c\uc870\ubb3c_\ud45c\uc900\ub3c4_\uc870\uc0ac_\ud569\uc758\uc640_\ud604\uc7ac_\ud1b5\ub85c", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "b07 \u1100\u116e\u110c\u1169\u1106\u116e\u11af \u1111\u116d\u110c\u116e\u11ab\u1103\u1169 \u2014 \u110c\u1169\u1109\u1161\u00b7\u1112\u1161\u11b8\u110b\u1174\u110b\u116a \u1112\u1167\u11ab\u110c\u1162 \u1110\u1169\u11bc\u1105\u1169" + }, + { + "label": "\ub370\uc774\ud130 \ud750\ub984", + "file_type": "document", + "source_file": "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b07_designdetail_b07_standard_drawings_2026_09_\ub370\uc774\ud130_\ud750\ub984", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u1103\u1166\u110b\u1175\u1110\u1165 \u1112\u1173\u1105\u1173\u11b7" + }, + { + "label": "\uad6c\ud604 \uc9c4\uc785\uc810", + "file_type": "document", + "source_file": "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md", + "source_location": "L24", + "_origin": "ast", + "id": "pages_b07_designdetail_b07_standard_drawings_2026_09_\uad6c\ud604_\uc9c4\uc785\uc810", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u1100\u116e\u1112\u1167\u11ab \u110c\u1175\u11ab\u110b\u1175\u11b8\u110c\u1165\u11b7" + }, + { + "label": "\uc870\uc0ac\ub85c \ud655\uc778\ub41c \uc124\uacc4 \uc6d0\uce59", + "file_type": "document", + "source_file": "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md", + "source_location": "L35", + "_origin": "ast", + "id": "pages_b07_designdetail_b07_standard_drawings_2026_09_\uc870\uc0ac\ub85c_\ud655\uc778\ub41c_\uc124\uacc4_\uc6d0\uce59", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u110c\u1169\u1109\u1161\u1105\u1169 \u1112\u116a\u11a8\u110b\u1175\u11ab\u1103\u116c\u11ab \u1109\u1165\u11af\u1100\u1168 \u110b\u116f\u11ab\u110e\u1175\u11a8" + }, + { + "label": "\uadfc\uac70\uc640 \ub0a8\uc740 \ubd88\ud655\uc2e4\uc131", + "file_type": "document", + "source_file": "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md", + "source_location": "L43", + "_origin": "ast", + "id": "pages_b07_designdetail_b07_standard_drawings_2026_09_\uadfc\uac70\uc640_\ub0a8\uc740_\ubd88\ud655\uc2e4\uc131", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u1100\u1173\u11ab\u1100\u1165\u110b\u116a \u1102\u1161\u11b7\u110b\u1173\u11ab \u1107\u116e\u11af\u1112\u116a\u11a8\u1109\u1175\u11af\u1109\u1165\u11bc" + }, + { + "label": "9\uc6d4 9\uc77c \uad6c\ud604\u00b7\uc2e4\uce21 \ubcf4\uac15", + "file_type": "document", + "source_file": "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md", + "source_location": "L49", + "_origin": "ast", + "id": "pages_b07_designdetail_b07_standard_drawings_2026_09_9\uc6d4_9\uc77c_\uad6c\ud604_\uc2e4\uce21_\ubcf4\uac15", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "9\u110b\u116f\u11af 9\u110b\u1175\u11af \u1100\u116e\u1112\u1167\u11ab\u00b7\u1109\u1175\u11af\u110e\u1173\u11a8 \u1107\u1169\u1100\u1161\u11bc" + }, + { + "label": "B07_backend.md", + "file_type": "document", + "source_file": "pages/B07_Quantity/B07_backend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b07_quantity_b07_backend", + "community": 88, + "community_name": "B07 Quantity \u2014 Backend", + "norm_label": "b07_backend.md" + }, + { + "label": "B07 Quantity \u2014 Backend", + "file_type": "document", + "source_file": "pages/B07_Quantity/B07_backend.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b07_quantity_b07_backend_b07_quantity_backend", + "community": 88, + "community_name": "B07 Quantity \u2014 Backend", + "norm_label": "b07 quantity \u2014 backend" + }, + { + "label": "\uad6c\ud604\ub41c \ud56d\ubaa9", + "file_type": "document", + "source_file": "pages/B07_Quantity/B07_backend.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b07_quantity_b07_backend_\uad6c\ud604\ub41c_\ud56d\ubaa9", + "community": 88, + "community_name": "B07 Quantity \u2014 Backend", + "norm_label": "\u1100\u116e\u1112\u1167\u11ab\u1103\u116c\u11ab \u1112\u1161\u11bc\u1106\u1169\u11a8" + }, + { + "label": "\uad6c\ud604\ub418\uc9c0 \uc54a\uc740 \ud56d\ubaa9", + "file_type": "document", + "source_file": "pages/B07_Quantity/B07_backend.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_b07_quantity_b07_backend_\uad6c\ud604\ub418\uc9c0_\uc54a\uc740_\ud56d\ubaa9", + "community": 88, + "community_name": "B07 Quantity \u2014 Backend", + "norm_label": "\u1100\u116e\u1112\u1167\u11ab\u1103\u116c\u110c\u1175 \u110b\u1161\u11ad\u110b\u1173\u11ab \u1112\u1161\u11bc\u1106\u1169\u11a8" + }, + { + "label": "\ucc45\uc784 \uacbd\uacc4 \ubbf8\uacb0", + "file_type": "document", + "source_file": "pages/B07_Quantity/B07_backend.md", + "source_location": "L30", + "_origin": "ast", + "id": "pages_b07_quantity_b07_backend_\ucc45\uc784_\uacbd\uacc4_\ubbf8\uacb0", + "community": 88, + "community_name": "B07 Quantity \u2014 Backend", + "norm_label": "\u110e\u1162\u11a8\u110b\u1175\u11b7 \u1100\u1167\u11bc\u1100\u1168 \u1106\u1175\u1100\u1167\u11af" + }, + { + "label": "B07_db.md", + "file_type": "document", + "source_file": "pages/B07_Quantity/B07_db.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b07_quantity_b07_db", + "community": 153, + "community_name": "B07_db.md", + "norm_label": "b07_db.md" + }, + { + "label": "B07 Quantity \u2014 DB", + "file_type": "document", + "source_file": "pages/B07_Quantity/B07_db.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b07_quantity_b07_db_b07_quantity_db", + "community": 153, + "community_name": "B07_db.md", + "norm_label": "b07 quantity \u2014 db" + }, + { + "label": "B07_frontend.md", + "file_type": "document", + "source_file": "pages/B07_Quantity/B07_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b07_quantity_b07_frontend", + "community": 57, + "community_name": "2026-09-07 \uc644\ub8cc\u00b7\ubcf4\ub958 \uc694\uc57d", + "norm_label": "b07_frontend.md" + }, + { + "label": "B07 Quantity \u2014 Frontend", + "file_type": "document", + "source_file": "pages/B07_Quantity/B07_frontend.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b07_quantity_b07_frontend_b07_quantity_frontend", + "community": 57, + "community_name": "2026-09-07 \uc644\ub8cc\u00b7\ubcf4\ub958 \uc694\uc57d", + "norm_label": "b07 quantity \u2014 frontend" + }, + { + "label": "\ud604\uc7ac \uc0ac\uc6a9\uc790 \ub3d9\uc791", + "file_type": "document", + "source_file": "pages/B07_Quantity/B07_frontend.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b07_quantity_b07_frontend_\ud604\uc7ac_\uc0ac\uc6a9\uc790_\ub3d9\uc791", + "community": 57, + "community_name": "2026-09-07 \uc644\ub8cc\u00b7\ubcf4\ub958 \uc694\uc57d", + "norm_label": "\u1112\u1167\u11ab\u110c\u1162 \u1109\u1161\u110b\u116d\u11bc\u110c\u1161 \u1103\u1169\u11bc\u110c\u1161\u11a8" + }, + { + "label": "B07_Quantity_Router.md", + "file_type": "document", + "source_file": "pages/B07_Quantity/backend/B07_Quantity_Router.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b07_quantity_backend_b07_quantity_router", + "community": 191, + "community_name": "B07_Quantity_Router.md", + "norm_label": "b07_quantity_router.md" + }, + { + "label": "B07_Quantity_Router.py", + "file_type": "document", + "source_file": "pages/B07_Quantity/backend/B07_Quantity_Router.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b07_quantity_backend_b07_quantity_router_b07_quantity_router_py", + "community": 191, + "community_name": "B07_Quantity_Router.md", + "norm_label": "b07_quantity_router.py" + }, + { + "label": "B08_CAD_blocks.md", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_blocks.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_blocks", + "community": 89, + "community_name": "B08 CAD \ube14\ub85d \ub77c\uc774\ube0c\ub7ec\ub9ac\u00b7\uc0ac\uc9c4", + "norm_label": "b08_cad_blocks.md" + }, + { + "label": "B08 CAD \ube14\ub85d \ub77c\uc774\ube0c\ub7ec\ub9ac\u00b7\uc0ac\uc9c4", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_blocks.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_blocks_b08_cad_\ube14\ub85d_\ub77c\uc774\ube0c\ub7ec\ub9ac_\uc0ac\uc9c4", + "community": 89, + "community_name": "B08 CAD \ube14\ub85d \ub77c\uc774\ube0c\ub7ec\ub9ac\u00b7\uc0ac\uc9c4", + "norm_label": "b08 cad \u1107\u1173\u11af\u1105\u1169\u11a8 \u1105\u1161\u110b\u1175\u1107\u1173\u1105\u1165\u1105\u1175\u00b7\u1109\u1161\u110c\u1175\u11ab" + }, + { + "label": "\uad6c\ud604", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_blocks.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_blocks_\uad6c\ud604", + "community": 89, + "community_name": "B08 CAD \ube14\ub85d \ub77c\uc774\ube0c\ub7ec\ub9ac\u00b7\uc0ac\uc9c4", + "norm_label": "\u1100\u116e\u1112\u1167\u11ab" + }, + { + "label": "\ubc94\uc704 \uacb0\uc815", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_blocks.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_blocks_\ubc94\uc704_\uacb0\uc815", + "community": 89, + "community_name": "B08 CAD \ube14\ub85d \ub77c\uc774\ube0c\ub7ec\ub9ac\u00b7\uc0ac\uc9c4", + "norm_label": "\u1107\u1165\u11b7\u110b\u1171 \u1100\u1167\u11af\u110c\u1165\u11bc" + }, + { + "label": "\uac80\uc99d", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_blocks.md", + "source_location": "L29", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_blocks_\uac80\uc99d", + "community": 89, + "community_name": "B08 CAD \ube14\ub85d \ub77c\uc774\ube0c\ub7ec\ub9ac\u00b7\uc0ac\uc9c4", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc" + }, + { + "label": "B08_CAD_commands.md", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_commands.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_commands", + "community": 90, + "community_name": "B08 OpenWebCAD \uba85\ub839 \uccb4\uacc4", + "norm_label": "b08_cad_commands.md" + }, + { + "label": "B08 OpenWebCAD \uba85\ub839 \uccb4\uacc4", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_commands.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_commands_b08_openwebcad_\uba85\ub839_\uccb4\uacc4", + "community": 90, + "community_name": "B08 OpenWebCAD \uba85\ub839 \uccb4\uacc4", + "norm_label": "b08 openwebcad \u1106\u1167\u11bc\u1105\u1167\u11bc \u110e\u1166\u1100\u1168" + }, + { + "label": "\uad6c\ud604 \ubc94\uc704", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_commands.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_commands_\uad6c\ud604_\ubc94\uc704", + "community": 90, + "community_name": "B08 OpenWebCAD \uba85\ub839 \uccb4\uacc4", + "norm_label": "\u1100\u116e\u1112\u1167\u11ab \u1107\u1165\u11b7\u110b\u1171" + }, + { + "label": "\ud575\uc2ec \uad6c\uc131", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_commands.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_commands_\ud575\uc2ec_\uad6c\uc131", + "community": 90, + "community_name": "B08 OpenWebCAD \uba85\ub839 \uccb4\uacc4", + "norm_label": "\u1112\u1162\u11a8\u1109\u1175\u11b7 \u1100\u116e\u1109\u1165\u11bc" + }, + { + "label": "\uac80\uc99d\u00b7\uc81c\ud55c", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_commands.md", + "source_location": "L30", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_commands_\uac80\uc99d_\uc81c\ud55c", + "community": 90, + "community_name": "B08 OpenWebCAD \uba85\ub839 \uccb4\uacc4", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc\u00b7\u110c\u1166\u1112\u1161\u11ab" + }, + { + "label": "B08_CAD_interaction.md", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_interaction.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_interaction", + "community": 160, + "community_name": "B04 3D \ubc29\uc704\u00b7\uc88c\ud45c\uacc4 \ucd5c\uc2e0 \uacb0\uc815", + "norm_label": "b08_cad_interaction.md" + }, + { + "label": "B08 CAD \uae30\ubcf8 \uc870\uc791", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_interaction.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_interaction_b08_cad_\uae30\ubcf8_\uc870\uc791", + "community": 160, + "community_name": "B04 3D \ubc29\uc704\u00b7\uc88c\ud45c\uacc4 \ucd5c\uc2e0 \uacb0\uc815", + "norm_label": "b08 cad \u1100\u1175\u1107\u1169\u11ab \u110c\u1169\u110c\u1161\u11a8" + }, + { + "label": "\uc785\ub825\u00b7\uc0c1\ud0dc", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_interaction.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_interaction_\uc785\ub825_\uc0c1\ud0dc", + "community": 160, + "community_name": "B04 3D \ubc29\uc704\u00b7\uc88c\ud45c\uacc4 \ucd5c\uc2e0 \uacb0\uc815", + "norm_label": "\u110b\u1175\u11b8\u1105\u1167\u11a8\u00b7\u1109\u1161\u11bc\u1110\u1162" + }, + { + "label": "\uc120\ud0dd\u00b7\ud3b8\uc9d1", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_interaction.md", + "source_location": "L20", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_interaction_\uc120\ud0dd_\ud3b8\uc9d1", + "community": 160, + "community_name": "B04 3D \ubc29\uc704\u00b7\uc88c\ud45c\uacc4 \ucd5c\uc2e0 \uacb0\uc815", + "norm_label": "\u1109\u1165\u11ab\u1110\u1162\u11a8\u00b7\u1111\u1167\u11ab\u110c\u1175\u11b8" + }, + { + "label": "\uac80\uc99d\u00b7\uc81c\uc678", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_interaction.md", + "source_location": "L31", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_interaction_\uac80\uc99d_\uc81c\uc678", + "community": 160, + "community_name": "B04 3D \ubc29\uc704\u00b7\uc88c\ud45c\uacc4 \ucd5c\uc2e0 \uacb0\uc815", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc\u00b7\u110c\u1166\u110b\u116c" + }, + { + "label": "B08_CAD_table_entity.md", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_table_entity.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_table_entity", + "community": 91, + "community_name": "B08_CAD_table_entity.md", + "norm_label": "b08_cad_table_entity.md" + }, + { + "label": "B08 CAD TableEntity", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_table_entity.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_table_entity_b08_cad_tableentity", + "community": 91, + "community_name": "B08_CAD_table_entity.md", + "norm_label": "b08 cad tableentity" + }, + { + "label": "\ubaa8\ub378", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_table_entity.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_table_entity_\ubaa8\ub378", + "community": 91, + "community_name": "B08_CAD_table_entity.md", + "norm_label": "\u1106\u1169\u1103\u1166\u11af" + }, + { + "label": "\uae30\ub2a5", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_table_entity.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_table_entity_\uae30\ub2a5", + "community": 91, + "community_name": "B08_CAD_table_entity.md", + "norm_label": "\u1100\u1175\u1102\u1173\u11bc" + }, + { + "label": "\uc774\uad00 \ubc94\uc704", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_table_entity.md", + "source_location": "L30", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_table_entity_\uc774\uad00_\ubc94\uc704", + "community": 91, + "community_name": "B08_CAD_table_entity.md", + "norm_label": "\u110b\u1175\u1100\u116a\u11ab \u1107\u1165\u11b7\u110b\u1171" + }, + { + "label": "\uac80\uc99d\u00b7\ud6c4\uc18d", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_table_entity.md", + "source_location": "L36", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_table_entity_\uac80\uc99d_\ud6c4\uc18d", + "community": 91, + "community_name": "B08_CAD_table_entity.md", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc\u00b7\u1112\u116e\u1109\u1169\u11a8" + }, + { + "label": "B08_CAD_title_block.md", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_title_block.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_title_block", + "community": 161, + "community_name": "B04 \uc138\ubd80\uc720\uc5ed\u00b7\ubc29\uc704\u00b7\uc88c\ud45c\uacc4", + "norm_label": "b08_cad_title_block.md" + }, + { + "label": "B08 CAD \ub3c4\uac01\u00b7\ud45c\uc81c\ub780", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_title_block.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_title_block_b08_cad_\ub3c4\uac01_\ud45c\uc81c\ub780", + "community": 161, + "community_name": "B04 \uc138\ubd80\uc720\uc5ed\u00b7\ubc29\uc704\u00b7\uc88c\ud45c\uacc4", + "norm_label": "b08 cad \u1103\u1169\u1100\u1161\u11a8\u00b7\u1111\u116d\u110c\u1166\u1105\u1161\u11ab" + }, + { + "label": "\uac12 \uacf5\uae09", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_title_block.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_title_block_\uac12_\uacf5\uae09", + "community": 161, + "community_name": "B04 \uc138\ubd80\uc720\uc5ed\u00b7\ubc29\uc704\u00b7\uc88c\ud45c\uacc4", + "norm_label": "\u1100\u1161\u11b9 \u1100\u1169\u11bc\u1100\u1173\u11b8" + }, + { + "label": "\ud68c\uc0ac \uc790\uc0b0\uacfc \ub2f4\ub2f9\uc790", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_title_block.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_title_block_\ud68c\uc0ac_\uc790\uc0b0\uacfc_\ub2f4\ub2f9\uc790", + "community": 161, + "community_name": "B04 \uc138\ubd80\uc720\uc5ed\u00b7\ubc29\uc704\u00b7\uc88c\ud45c\uacc4", + "norm_label": "\u1112\u116c\u1109\u1161 \u110c\u1161\u1109\u1161\u11ab\u1100\u116a \u1103\u1161\u11b7\u1103\u1161\u11bc\u110c\u1161" + }, + { + "label": "\ub3c4\uac01 \ud3b8\uc9d1\u00b7\ubcf4\uc874", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_title_block.md", + "source_location": "L33", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_title_block_\ub3c4\uac01_\ud3b8\uc9d1_\ubcf4\uc874", + "community": 161, + "community_name": "B04 \uc138\ubd80\uc720\uc5ed\u00b7\ubc29\uc704\u00b7\uc88c\ud45c\uacc4", + "norm_label": "\u1103\u1169\u1100\u1161\u11a8 \u1111\u1167\u11ab\u110c\u1175\u11b8\u00b7\u1107\u1169\u110c\u1169\u11ab" + }, + { + "label": "B08_CAD_usability_2026-09-01.md", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_usability_2026-09-01.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_usability_2026_09_01", + "community": 162, + "community_name": "B05 \uad6c\uc870\ubb3c \uad6c\uac04 \uc808\ucde8\u00b7\uce21\ubcbd\u00b7\uc131\ud1a0 \ud328\uce58", + "norm_label": "b08_cad_usability_2026-09-01.md" + }, + { + "label": "B08 CAD \uc0ac\uc6a9\uc790 \ud3b8\uc758\uc131 \uc815\ub9ac", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_usability_2026-09-01.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_usability_2026_09_01_b08_cad_\uc0ac\uc6a9\uc790_\ud3b8\uc758\uc131_\uc815\ub9ac", + "community": 162, + "community_name": "B05 \uad6c\uc870\ubb3c \uad6c\uac04 \uc808\ucde8\u00b7\uce21\ubcbd\u00b7\uc131\ud1a0 \ud328\uce58", + "norm_label": "b08 cad \u1109\u1161\u110b\u116d\u11bc\u110c\u1161 \u1111\u1167\u11ab\u110b\u1174\u1109\u1165\u11bc \u110c\u1165\u11bc\u1105\u1175" + }, + { + "label": "\uad6c\ud604 \uae30\ub85d", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_usability_2026-09-01.md", + "source_location": "L16", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_usability_2026_09_01_\uad6c\ud604_\uae30\ub85d", + "community": 162, + "community_name": "B05 \uad6c\uc870\ubb3c \uad6c\uac04 \uc808\ucde8\u00b7\uce21\ubcbd\u00b7\uc131\ud1a0 \ud328\uce58", + "norm_label": "\u1100\u116e\u1112\u1167\u11ab \u1100\u1175\u1105\u1169\u11a8" + }, + { + "label": "\uc0ac\uc6a9\uc790 \ud750\ub984", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_usability_2026-09-01.md", + "source_location": "L30", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_usability_2026_09_01_\uc0ac\uc6a9\uc790_\ud750\ub984", + "community": 162, + "community_name": "B05 \uad6c\uc870\ubb3c \uad6c\uac04 \uc808\ucde8\u00b7\uce21\ubcbd\u00b7\uc131\ud1a0 \ud328\uce58", + "norm_label": "\u1109\u1161\u110b\u116d\u11bc\u110c\u1161 \u1112\u1173\u1105\u1173\u11b7" + }, + { + "label": "\uac80\uc99d \uc0c1\ud0dc", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_CAD_usability_2026-09-01.md", + "source_location": "L39", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_usability_2026_09_01_\uac80\uc99d_\uc0c1\ud0dc", + "community": 162, + "community_name": "B05 \uad6c\uc870\ubb3c \uad6c\uac04 \uc808\ucde8\u00b7\uce21\ubcbd\u00b7\uc131\ud1a0 \ud328\uce58", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc \u1109\u1161\u11bc\u1110\u1162" + }, + { + "label": "B08_api.md", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_api.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_api", + "community": 147, + "community_name": "B08_DesignDetail \u2014 API", + "norm_label": "b08_api.md" + }, + { + "label": "B08_DesignDetail \u2014 API", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_api.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_api_b08_designdetail_api", + "community": 147, + "community_name": "B08_DesignDetail \u2014 API", + "norm_label": "b08_designdetail \u2014 api" + }, + { + "label": "API \uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_api.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_api_api_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "community": 147, + "community_name": "B08_DesignDetail \u2014 API", + "norm_label": "api \u110b\u1166\u11ab\u1103\u1173\u1111\u1169\u110b\u1175\u11ab\u1110\u1173" + }, + { + "label": "B08_backend.md", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_backend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_backend", + "community": 30, + "community_name": "B08_DesignDetail \u2014 Backend", + "norm_label": "b08_backend.md" + }, + { + "label": "B08_DesignDetail \u2014 Backend", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_backend.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_backend_b08_designdetail_backend", + "community": 30, + "community_name": "B08_DesignDetail \u2014 Backend", + "norm_label": "b08_designdetail \u2014 backend" + }, + { + "label": "\ub3c4\uba74 \uad00\ub9ac, \uc885\ub2e8 30\uce21\uc810 \ubd84\ud560, CAD \uc218\ub7c9\uc0b0\ucd9c\ud45c \ubc0f \ub3c4\uba74 \ud15c\ud50c\ub9bf \ud30c\uc774\ud504\ub77c\uc778", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_backend.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_backend_\ub3c4\uba74_\uad00\ub9ac_\uc885\ub2e8_30\uce21\uc810_\ubd84\ud560_cad_\uc218\ub7c9\uc0b0\ucd9c\ud45c_\ubc0f_\ub3c4\uba74_\ud15c\ud50c\ub9bf_\ud30c\uc774\ud504\ub77c\uc778", + "community": 30, + "community_name": "B08_DesignDetail \u2014 Backend", + "norm_label": "\u1103\u1169\u1106\u1167\u11ab \u1100\u116a\u11ab\u1105\u1175, \u110c\u1169\u11bc\u1103\u1161\u11ab 30\u110e\u1173\u11a8\u110c\u1165\u11b7 \u1107\u116e\u11ab\u1112\u1161\u11af, cad \u1109\u116e\u1105\u1163\u11bc\u1109\u1161\u11ab\u110e\u116e\u11af\u1111\u116d \u1106\u1175\u11be \u1103\u1169\u1106\u1167\u11ab \u1110\u1166\u11b7\u1111\u1173\u11af\u1105\u1175\u11ba \u1111\u1161\u110b\u1175\u1111\u1173\u1105\u1161\u110b\u1175\u11ab" + }, + { + "label": "\ub3c4\uac01 \ud15c\ud50c\ub9bf \ubcc0\ud658 \ubc0f \uc885\ub2e8\ub3c4 A1 \ub3c4\uac01 \ubcd1\ud569 (2026-07-26)", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_backend.md", + "source_location": "L27", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_backend_\ub3c4\uac01_\ud15c\ud50c\ub9bf_\ubcc0\ud658_\ubc0f_\uc885\ub2e8\ub3c4_a1_\ub3c4\uac01_\ubcd1\ud569_2026_07_26", + "community": 30, + "community_name": "B08_DesignDetail \u2014 Backend", + "norm_label": "\u1103\u1169\u1100\u1161\u11a8 \u1110\u1166\u11b7\u1111\u1173\u11af\u1105\u1175\u11ba \u1107\u1167\u11ab\u1112\u116a\u11ab \u1106\u1175\u11be \u110c\u1169\u11bc\u1103\u1161\u11ab\u1103\u1169 a1 \u1103\u1169\u1100\u1161\u11a8 \u1107\u1167\u11bc\u1112\u1161\u11b8 (2026-07-26)" + }, + { + "label": "\uc885\ub2e8\ub3c4 30\uce21\uc810 N\ubd84\ud560 \ubc0f \ub0a9\ud488 \uc591\uc2dd \uce21\uc810 \ud14c\uc774\ube14 (2026-07-25 N-1-1)", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_backend.md", + "source_location": "L31", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_backend_\uc885\ub2e8\ub3c4_30\uce21\uc810_n\ubd84\ud560_\ubc0f_\ub0a9\ud488_\uc591\uc2dd_\uce21\uc810_\ud14c\uc774\ube14_2026_07_25_n_1_1", + "community": 30, + "community_name": "B08_DesignDetail \u2014 Backend", + "norm_label": "\u110c\u1169\u11bc\u1103\u1161\u11ab\u1103\u1169 30\u110e\u1173\u11a8\u110c\u1165\u11b7 n\u1107\u116e\u11ab\u1112\u1161\u11af \u1106\u1175\u11be \u1102\u1161\u11b8\u1111\u116e\u11b7 \u110b\u1163\u11bc\u1109\u1175\u11a8 \u110e\u1173\u11a8\u110c\u1165\u11b7 \u1110\u1166\u110b\u1175\u1107\u1173\u11af (2026-07-25 n-1-1)" + }, + { + "label": "\ud6a1\ub2e8\ub3c4 4\uac1c \uc120\ubcc4 \ub808\uc774\uc5b4 \ubc0f CAD \uc218\ub7c9\uc0b0\ucd9c\ud45c (2026-07-25 N-1-2/N-1-3)", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_backend.md", + "source_location": "L35", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_backend_\ud6a1\ub2e8\ub3c4_4\uac1c_\uc120\ubcc4_\ub808\uc774\uc5b4_\ubc0f_cad_\uc218\ub7c9\uc0b0\ucd9c\ud45c_2026_07_25_n_1_2_n_1_3", + "community": 30, + "community_name": "B08_DesignDetail \u2014 Backend", + "norm_label": "\u1112\u116c\u11bc\u1103\u1161\u11ab\u1103\u1169 4\u1100\u1162 \u1109\u1165\u11ab\u1107\u1167\u11af \u1105\u1166\u110b\u1175\u110b\u1165 \u1106\u1175\u11be cad \u1109\u116e\u1105\u1163\u11bc\u1109\u1161\u11ab\u110e\u116e\u11af\u1111\u116d (2026-07-25 n-1-2/n-1-3)" + }, + { + "label": "\uc6cc\ud06c\ud50c\ub85c\uc6b0 \uac8c\uc774\ud305 \uc5f0\ub3d9", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_backend.md", + "source_location": "L39", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_backend_\uc6cc\ud06c\ud50c\ub85c\uc6b0_\uac8c\uc774\ud305_\uc5f0\ub3d9", + "community": 30, + "community_name": "B08_DesignDetail \u2014 Backend", + "norm_label": "\u110b\u116f\u110f\u1173\u1111\u1173\u11af\u1105\u1169\u110b\u116e \u1100\u1166\u110b\u1175\u1110\u1175\u11bc \u110b\u1167\u11ab\u1103\u1169\u11bc" + }, + { + "label": "\ud604\uc7ac \ucc45\uc784 \uacbd\uacc4", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_backend.md", + "source_location": "L43", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_backend_\ud604\uc7ac_\ucc45\uc784_\uacbd\uacc4", + "community": 30, + "community_name": "B08_DesignDetail \u2014 Backend", + "norm_label": "\u1112\u1167\u11ab\u110c\u1162 \u110e\u1162\u11a8\u110b\u1175\u11b7 \u1100\u1167\u11bc\u1100\u1168" + }, + { + "label": "B08_cad_delivery_2026_09.md", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_cad_delivery_2026_09.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_delivery_2026_09", + "community": 171, + "community_name": "B08 CAD\u00b7\ub0a9\ud488 \ub3c4\uba74 \ud6c4\uc18d", + "norm_label": "b08_cad_delivery_2026_09.md" + }, + { + "label": "B08 CAD\u00b7\ub0a9\ud488 \ub3c4\uba74 \ud6c4\uc18d", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_cad_delivery_2026_09.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_delivery_2026_09_b08_cad_\ub0a9\ud488_\ub3c4\uba74_\ud6c4\uc18d", + "community": 171, + "community_name": "B08 CAD\u00b7\ub0a9\ud488 \ub3c4\uba74 \ud6c4\uc18d", + "norm_label": "b08 cad\u00b7\u1102\u1161\u11b8\u1111\u116e\u11b7 \u1103\u1169\u1106\u1167\u11ab \u1112\u116e\u1109\u1169\u11a8" + }, + { + "label": "CAD \ud3b8\uc9d1\u00b7\ud655\uc815", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_cad_delivery_2026_09.md", + "source_location": "L12", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_delivery_2026_09_cad_\ud3b8\uc9d1_\ud655\uc815", + "community": 171, + "community_name": "B08 CAD\u00b7\ub0a9\ud488 \ub3c4\uba74 \ud6c4\uc18d", + "norm_label": "cad \u1111\u1167\u11ab\u110c\u1175\u11b8\u00b7\u1112\u116a\u11a8\u110c\u1165\u11bc" + }, + { + "label": "\ud1a0\uc801\ub3c4\u00b7\uc720\uc5ed\ub3c4", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_cad_delivery_2026_09.md", + "source_location": "L23", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cad_delivery_2026_09_\ud1a0\uc801\ub3c4_\uc720\uc5ed\ub3c4", + "community": 171, + "community_name": "B08 CAD\u00b7\ub0a9\ud488 \ub3c4\uba74 \ud6c4\uc18d", + "norm_label": "\u1110\u1169\u110c\u1165\u11a8\u1103\u1169\u00b7\u110b\u1172\u110b\u1167\u11a8\u1103\u1169" + }, + { + "label": "B08_cross_structure_sheets.md", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_cross_structure_sheets.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cross_structure_sheets", + "community": 56, + "community_name": "B08 \ud6a1\ub2e8\ub3c4 \uad6c\uc870\ubb3c\u00b7\uc7a5 \ubc30\uce58", + "norm_label": "b08_cross_structure_sheets.md" + }, + { + "label": "B08 \ud6a1\ub2e8\ub3c4 \uad6c\uc870\ubb3c\u00b7\uc7a5 \ubc30\uce58", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_cross_structure_sheets.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cross_structure_sheets_b08_\ud6a1\ub2e8\ub3c4_\uad6c\uc870\ubb3c_\uc7a5_\ubc30\uce58", + "community": 56, + "community_name": "B08 \ud6a1\ub2e8\ub3c4 \uad6c\uc870\ubb3c\u00b7\uc7a5 \ubc30\uce58", + "norm_label": "b08 \u1112\u116c\u11bc\u1103\u1161\u11ab\u1103\u1169 \u1100\u116e\u110c\u1169\u1106\u116e\u11af\u00b7\u110c\u1161\u11bc \u1107\u1162\u110e\u1175" + }, + { + "label": "\ubb38\uc81c\uc640 \uacb0\uc815", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_cross_structure_sheets.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cross_structure_sheets_\ubb38\uc81c\uc640_\uacb0\uc815", + "community": 56, + "community_name": "B08 \ud6a1\ub2e8\ub3c4 \uad6c\uc870\ubb3c\u00b7\uc7a5 \ubc30\uce58", + "norm_label": "\u1106\u116e\u11ab\u110c\u1166\u110b\u116a \u1100\u1167\u11af\u110c\u1165\u11bc" + }, + { + "label": "\ub370\uc774\ud130\u00b7\uad6c\ud604 \ud750\ub984", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_cross_structure_sheets.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cross_structure_sheets_\ub370\uc774\ud130_\uad6c\ud604_\ud750\ub984", + "community": 56, + "community_name": "B08 \ud6a1\ub2e8\ub3c4 \uad6c\uc870\ubb3c\u00b7\uc7a5 \ubc30\uce58", + "norm_label": "\u1103\u1166\u110b\u1175\u1110\u1165\u00b7\u1100\u116e\u1112\u1167\u11ab \u1112\u1173\u1105\u1173\u11b7" + }, + { + "label": "\uacb0\uacfc", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_cross_structure_sheets.md", + "source_location": "L26", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cross_structure_sheets_\uacb0\uacfc", + "community": 56, + "community_name": "B08 \ud6a1\ub2e8\ub3c4 \uad6c\uc870\ubb3c\u00b7\uc7a5 \ubc30\uce58", + "norm_label": "\u1100\u1167\u11af\u1100\u116a" + }, + { + "label": "\ud55c\uacc4", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_cross_structure_sheets.md", + "source_location": "L33", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_cross_structure_sheets_\ud55c\uacc4", + "community": 56, + "community_name": "B08 \ud6a1\ub2e8\ub3c4 \uad6c\uc870\ubb3c\u00b7\uc7a5 \ubc30\uce58", + "norm_label": "\u1112\u1161\u11ab\u1100\u1168" + }, + { + "label": "B08_dependencies.md", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_dependencies.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_dependencies", + "community": 111, + "community_name": "B08_DesignDetail \u2014 Dependencies", + "norm_label": "b08_dependencies.md" + }, + { + "label": "B08_DesignDetail \u2014 Dependencies", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_dependencies.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_dependencies_b08_designdetail_dependencies", + "community": 111, + "community_name": "B08_DesignDetail \u2014 Dependencies", + "norm_label": "b08_designdetail \u2014 dependencies" + }, + { + "label": "Frontend (package.json / tsconfig.json)", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_dependencies.md", + "source_location": "L15", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_dependencies_frontend_package_json_tsconfig_json", + "community": 111, + "community_name": "B08_DesignDetail \u2014 Dependencies", + "norm_label": "frontend (package.json / tsconfig.json)" + }, + { + "label": "Backend (requirements.txt)", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_dependencies.md", + "source_location": "L25", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_dependencies_backend_requirements_txt", + "community": 111, + "community_name": "B08_DesignDetail \u2014 Dependencies", + "norm_label": "backend (requirements.txt)" + }, + { + "label": "B08_drawing_masshaul_watershed.md", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_drawing_masshaul_watershed", + "community": 31, + "community_name": "B08 \ud1a0\uc801\ub3c4\u00b7\uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "norm_label": "b08_drawing_masshaul_watershed.md" + }, + { + "label": "B08 \ud1a0\uc801\ub3c4\u00b7\uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_drawing_masshaul_watershed_b08_\ud1a0\uc801\ub3c4_\uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "community": 31, + "community_name": "B08 \ud1a0\uc801\ub3c4\u00b7\uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "norm_label": "b08 \u1110\u1169\u110c\u1165\u11a8\u1103\u1169\u00b7\u1109\u116e\u1105\u1175\u110c\u1175\u11b8\u1109\u116e\u1106\u1167\u11ab\u110c\u1165\u11a8\u110b\u1172\u110b\u1167\u11a8\u1103\u1169" + }, + { + "label": "\ub3c4\uba74 \uae30\uc900", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_drawing_masshaul_watershed_\ub3c4\uba74_\uae30\uc900", + "community": 31, + "community_name": "B08 \ud1a0\uc801\ub3c4\u00b7\uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "norm_label": "\u1103\u1169\u1106\u1167\u11ab \u1100\u1175\u110c\u116e\u11ab" + }, + { + "label": "\ub370\uc774\ud130 \ud750\ub984", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "source_location": "L20", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_drawing_masshaul_watershed_\ub370\uc774\ud130_\ud750\ub984", + "community": 31, + "community_name": "B08 \ud1a0\uc801\ub3c4\u00b7\uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "norm_label": "\u1103\u1166\u110b\u1175\u1110\u1165 \u1112\u1173\u1105\u1173\u11b7" + }, + { + "label": "\uc720\uc5ed \uc815\ubcf4\ud45c", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "source_location": "L30", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_drawing_masshaul_watershed_\uc720\uc5ed_\uc815\ubcf4\ud45c", + "community": 31, + "community_name": "B08 \ud1a0\uc801\ub3c4\u00b7\uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "norm_label": "\u110b\u1172\u110b\u1167\u11a8 \u110c\u1165\u11bc\u1107\u1169\u1111\u116d" + }, + { + "label": "\uad6c\ud604\u00b7\uac80\uc99d \uc644\ub8cc", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "source_location": "L38", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_drawing_masshaul_watershed_\uad6c\ud604_\uac80\uc99d_\uc644\ub8cc", + "community": 31, + "community_name": "B08 \ud1a0\uc801\ub3c4\u00b7\uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "norm_label": "\u1100\u116e\u1112\u1167\u11ab\u00b7\u1100\u1165\u11b7\u110c\u1173\u11bc \u110b\u116a\u11ab\u1105\u116d" + }, + { + "label": "\uac80\uc99d \ud55c\uacc4", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "source_location": "L51", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_drawing_masshaul_watershed_\uac80\uc99d_\ud55c\uacc4", + "community": 31, + "community_name": "B08 \ud1a0\uc801\ub3c4\u00b7\uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc \u1112\u1161\u11ab\u1100\u1168" + }, + { + "label": "\ub0a8\uc740 \uacb0\uc815", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "source_location": "L56", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_drawing_masshaul_watershed_\ub0a8\uc740_\uacb0\uc815", + "community": 31, + "community_name": "B08 \ud1a0\uc801\ub3c4\u00b7\uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "norm_label": "\u1102\u1161\u11b7\u110b\u1173\u11ab \u1100\u1167\u11af\u110c\u1165\u11bc" + }, + { + "label": "B08_frontend.md", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_frontend", + "community": 4, + "community_name": "\ubc30\uc218\uc720\uc5ed \ud574\uc11d \ubc0f \uc138\ubd80\uc124\uacc4 (Drainage Watershed)", + "norm_label": "b08_frontend.md" + }, + { + "label": "B08_DesignDetail \u2014 Frontend", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_frontend.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_frontend_b08_designdetail_frontend", + "community": 4, + "community_name": "\ubc30\uc218\uc720\uc5ed \ud574\uc11d \ubc0f \uc138\ubd80\uc124\uacc4 (Drainage Watershed)", + "norm_label": "b08_designdetail \u2014 frontend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc870", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_frontend.md", + "source_location": "L16", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_frontend_\ud30c\uc77c_\uad6c\uc870", + "community": 4, + "community_name": "\ubc30\uc218\uc720\uc5ed \ud574\uc11d \ubc0f \uc138\ubd80\uc124\uacc4 (Drainage Watershed)", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "\ub3c5\ub9bd\ud615 CAD \uc784\ubca0\ub4dc \ubc0f \ub370\uc774\ud130 \uc5f0\ub3d9 \uc544\ud0a4\ud14d\ucc98", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_frontend.md", + "source_location": "L29", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_frontend_\ub3c5\ub9bd\ud615_cad_\uc784\ubca0\ub4dc_\ubc0f_\ub370\uc774\ud130_\uc5f0\ub3d9_\uc544\ud0a4\ud14d\ucc98", + "community": 4, + "community_name": "\ubc30\uc218\uc720\uc5ed \ud574\uc11d \ubc0f \uc138\ubd80\uc124\uacc4 (Drainage Watershed)", + "norm_label": "\u1103\u1169\u11a8\u1105\u1175\u11b8\u1112\u1167\u11bc cad \u110b\u1175\u11b7\u1107\u1166\u1103\u1173 \u1106\u1175\u11be \u1103\u1166\u110b\u1175\u1110\u1165 \u110b\u1167\u11ab\u1103\u1169\u11bc \u110b\u1161\u110f\u1175\u1110\u1166\u11a8\u110e\u1165" + }, + { + "label": "openwebcad \ub2e8\uc704 \uc815\ud569, \uc120 \ud2b9\uc131/\ud3f0\ud2b8 UI \ubc0f Fit-in-all (2026-07-20)", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_frontend.md", + "source_location": "L37", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_frontend_openwebcad_\ub2e8\uc704_\uc815\ud569_\uc120_\ud2b9\uc131_\ud3f0\ud2b8_ui_\ubc0f_fit_in_all_2026_07_20", + "community": 4, + "community_name": "\ubc30\uc218\uc720\uc5ed \ud574\uc11d \ubc0f \uc138\ubd80\uc124\uacc4 (Drainage Watershed)", + "norm_label": "openwebcad \u1103\u1161\u11ab\u110b\u1171 \u110c\u1165\u11bc\u1112\u1161\u11b8, \u1109\u1165\u11ab \u1110\u1173\u11a8\u1109\u1165\u11bc/\u1111\u1169\u11ab\u1110\u1173 ui \u1106\u1175\u11be fit-in-all (2026-07-20)" + }, + { + "label": "CAD \uacc4\ud68d\uc120 \ub808\uc774\uc5b4 \uc5f0\ub3d9 \ubc0f \ud3b8\uc9d1 \uc9c0\uc6d0 (2026-07-22)", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_frontend.md", + "source_location": "L43", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_frontend_cad_\uacc4\ud68d\uc120_\ub808\uc774\uc5b4_\uc5f0\ub3d9_\ubc0f_\ud3b8\uc9d1_\uc9c0\uc6d0_2026_07_22", + "community": 4, + "community_name": "\ubc30\uc218\uc720\uc5ed \ud574\uc11d \ubc0f \uc138\ubd80\uc124\uacc4 (Drainage Watershed)", + "norm_label": "cad \u1100\u1168\u1112\u116c\u11a8\u1109\u1165\u11ab \u1105\u1166\u110b\u1175\u110b\u1165 \u110b\u1167\u11ab\u1103\u1169\u11bc \u1106\u1175\u11be \u1111\u1167\u11ab\u110c\u1175\u11b8 \u110c\u1175\u110b\u116f\u11ab (2026-07-22)" + }, + { + "label": "\uc8fc\uc694 \ucef4\ud3ec\ub10c\ud2b8 / \ud568\uc218", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_frontend.md", + "source_location": "L47", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_frontend_\uc8fc\uc694_\ucef4\ud3ec\ub10c\ud2b8_\ud568\uc218", + "community": 4, + "community_name": "\ubc30\uc218\uc720\uc5ed \ud574\uc11d \ubc0f \uc138\ubd80\uc124\uacc4 (Drainage Watershed)", + "norm_label": "\u110c\u116e\u110b\u116d \u110f\u1165\u11b7\u1111\u1169\u1102\u1165\u11ab\u1110\u1173 / \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "\uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/B08_frontend.md", + "source_location": "L55", + "_origin": "ast", + "id": "pages_b08_designdetail_b08_frontend_\uc758\uc874\uc131", + "community": 4, + "community_name": "\ubc30\uc218\uc720\uc5ed \ud574\uc11d \ubc0f \uc138\ubd80\uc124\uacc4 (Drainage Watershed)", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B08_DesignDetail_Router.md", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/backend/B08_DesignDetail_Router.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b08_designdetail_backend_b08_designdetail_router", + "community": 154, + "community_name": "B08_DesignDetail_Router.md", + "norm_label": "b08_designdetail_router.md" + }, + { + "label": "B08_DesignDetail_Router.py", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/backend/B08_DesignDetail_Router.md", + "source_location": "L11", + "_origin": "ast", + "id": "pages_b08_designdetail_backend_b08_designdetail_router_b08_designdetail_router_py", + "community": 154, + "community_name": "B08_DesignDetail_Router.md", + "norm_label": "b08_designdetail_router.py" + }, + { + "label": "\uc2e4\uc81c API", + "file_type": "document", + "source_file": "pages/B08_DesignDetail/backend/B08_DesignDetail_Router.md", + "source_location": "L20", + "_origin": "ast", + "id": "pages_b08_designdetail_backend_b08_designdetail_router_\uc2e4\uc81c_api", + "community": 154, + "community_name": "B08_DesignDetail_Router.md", + "norm_label": "\u1109\u1175\u11af\u110c\u1166 api" + }, + { + "label": "B08_2026_09_09_completion.md", + "file_type": "document", + "source_file": "pages/B08_Quantity/B08_2026_09_09_completion.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b08_quantity_b08_2026_09_09_completion", + "community": 93, + "community_name": "\uacf5\uc720 \uc790\uc6d0 \uc601\ud5a5 \uc9c0\ub3c4", + "norm_label": "b08_2026_09_09_completion.md" + }, + { + "label": "B08 \uc218\ub7c9\uc0b0\ucd9c \u2014 2026-09-09 \uc644\ub8cc \uadfc\uac70", + "file_type": "document", + "source_file": "pages/B08_Quantity/B08_2026_09_09_completion.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b08_quantity_b08_2026_09_09_completion_b08_\uc218\ub7c9\uc0b0\ucd9c_2026_09_09_\uc644\ub8cc_\uadfc\uac70", + "community": 93, + "community_name": "\uacf5\uc720 \uc790\uc6d0 \uc601\ud5a5 \uc9c0\ub3c4", + "norm_label": "b08 \u1109\u116e\u1105\u1163\u11bc\u1109\u1161\u11ab\u110e\u116e\u11af \u2014 2026-09-09 \u110b\u116a\u11ab\u1105\u116d \u1100\u1173\u11ab\u1100\u1165" + }, + { + "label": "\ubc11\uc218\uc640 \uc778\uacc4", + "file_type": "document", + "source_file": "pages/B08_Quantity/B08_2026_09_09_completion.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b08_quantity_b08_2026_09_09_completion_\ubc11\uc218\uc640_\uc778\uacc4", + "community": 93, + "community_name": "\uacf5\uc720 \uc790\uc6d0 \uc601\ud5a5 \uc9c0\ub3c4", + "norm_label": "\u1106\u1175\u11c0\u1109\u116e\u110b\u116a \u110b\u1175\u11ab\u1100\u1168" + }, + { + "label": "\uad6c\uc870\ubb3c\u00b7\uc218\ub7c9 \ud45c\uc2dc", + "file_type": "document", + "source_file": "pages/B08_Quantity/B08_2026_09_09_completion.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_b08_quantity_b08_2026_09_09_completion_\uad6c\uc870\ubb3c_\uc218\ub7c9_\ud45c\uc2dc", + "community": 93, + "community_name": "\uacf5\uc720 \uc790\uc6d0 \uc601\ud5a5 \uc9c0\ub3c4", + "norm_label": "\u1100\u116e\u110c\u1169\u1106\u116e\u11af\u00b7\u1109\u116e\u1105\u1163\u11bc \u1111\u116d\u1109\u1175" + }, + { + "label": "\uac80\uc99d \uae30\ub85d", + "file_type": "document", + "source_file": "pages/B08_Quantity/B08_2026_09_09_completion.md", + "source_location": "L28", + "_origin": "ast", + "id": "pages_b08_quantity_b08_2026_09_09_completion_\uac80\uc99d_\uae30\ub85d", + "community": 93, + "community_name": "\uacf5\uc720 \uc790\uc6d0 \uc601\ud5a5 \uc9c0\ub3c4", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc \u1100\u1175\u1105\u1169\u11a8" + }, + { + "label": "\ub0a8\uc740 \uacbd\uacc4", + "file_type": "document", + "source_file": "pages/B08_Quantity/B08_2026_09_09_completion.md", + "source_location": "L37", + "_origin": "ast", + "id": "pages_b08_quantity_b08_2026_09_09_completion_\ub0a8\uc740_\uacbd\uacc4", + "community": 93, + "community_name": "\uacf5\uc720 \uc790\uc6d0 \uc601\ud5a5 \uc9c0\ub3c4", + "norm_label": "\u1102\u1161\u11b7\u110b\u1173\u11ab \u1100\u1167\u11bc\u1100\u1168" + }, + { + "label": "B08_overview_2026_09.md", + "file_type": "document", + "source_file": "pages/B08_Quantity/B08_overview_2026_09.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b08_quantity_b08_overview_2026_09", + "community": 26, + "community_name": "\uc720\ud1a0\uace1\uc120 (Mass Haul Diagram) \uacc4\uc0b0 \uba85\uc138", + "norm_label": "b08_overview_2026_09.md" + }, + { + "label": "B08 Quantity \u2014 2026-09 \uc218\ub7c9\uc0b0\ucd9c", + "file_type": "document", + "source_file": "pages/B08_Quantity/B08_overview_2026_09.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b08_quantity_b08_overview_2026_09_b08_quantity_2026_09_\uc218\ub7c9\uc0b0\ucd9c", + "community": 26, + "community_name": "\uc720\ud1a0\uace1\uc120 (Mass Haul Diagram) \uacc4\uc0b0 \uba85\uc138", + "norm_label": "b08 quantity \u2014 2026-09 \u1109\u116e\u1105\u1163\u11bc\u1109\u1161\u11ab\u110e\u116e\u11af" + }, + { + "label": "\uad6c\ud604 \uad6c\uc131", + "file_type": "document", + "source_file": "pages/B08_Quantity/B08_overview_2026_09.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b08_quantity_b08_overview_2026_09_\uad6c\ud604_\uad6c\uc131", + "community": 26, + "community_name": "\uc720\ud1a0\uace1\uc120 (Mass Haul Diagram) \uacc4\uc0b0 \uba85\uc138", + "norm_label": "\u1100\u116e\u1112\u1167\u11ab \u1100\u116e\u1109\u1165\u11bc" + }, + { + "label": "\uac80\uc99d\ub41c \ud750\ub984", + "file_type": "document", + "source_file": "pages/B08_Quantity/B08_overview_2026_09.md", + "source_location": "L26", + "_origin": "ast", + "id": "pages_b08_quantity_b08_overview_2026_09_\uac80\uc99d\ub41c_\ud750\ub984", + "community": 26, + "community_name": "\uc720\ud1a0\uace1\uc120 (Mass Haul Diagram) \uacc4\uc0b0 \uba85\uc138", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc\u1103\u116c\u11ab \u1112\u1173\u1105\u1173\u11b7" + }, + { + "label": "\uc644\ub8cc\u00b7\uc81c\ud55c", + "file_type": "document", + "source_file": "pages/B08_Quantity/B08_overview_2026_09.md", + "source_location": "L34", + "_origin": "ast", + "id": "pages_b08_quantity_b08_overview_2026_09_\uc644\ub8cc_\uc81c\ud55c", + "community": 26, + "community_name": "\uc720\ud1a0\uace1\uc120 (Mass Haul Diagram) \uacc4\uc0b0 \uba85\uc138", + "norm_label": "\u110b\u116a\u11ab\u1105\u116d\u00b7\u110c\u1166\u1112\u1161\u11ab" + }, + { + "label": "B09_2026_09_09_completion.md", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_2026_09_09_completion.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b09_estimation_b09_2026_09_09_completion", + "community": 92, + "community_name": "\uacf5\uac1c\u00b7\uc778\uc99d\u00b7\uad00\ub9ac \uc601\uc5ed \uc9c0\ub3c4", + "norm_label": "b09_2026_09_09_completion.md" + }, + { + "label": "B09 \uc6d0\uac00\uacc4\uc0b0 \u2014 2026-09-09 \uc644\ub8cc \uadfc\uac70", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_2026_09_09_completion.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b09_estimation_b09_2026_09_09_completion_b09_\uc6d0\uac00\uacc4\uc0b0_2026_09_09_\uc644\ub8cc_\uadfc\uac70", + "community": 92, + "community_name": "\uacf5\uac1c\u00b7\uc778\uc99d\u00b7\uad00\ub9ac \uc601\uc5ed \uc9c0\ub3c4", + "norm_label": "b09 \u110b\u116f\u11ab\u1100\u1161\u1100\u1168\u1109\u1161\u11ab \u2014 2026-09-09 \u110b\u116a\u11ab\u1105\u116d \u1100\u1173\u11ab\u1100\u1165" + }, + { + "label": "\ub2e8\uac00\u00b7\ubc11\uc218 \uc644\uc131", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_2026_09_09_completion.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b09_estimation_b09_2026_09_09_completion_\ub2e8\uac00_\ubc11\uc218_\uc644\uc131", + "community": 92, + "community_name": "\uacf5\uac1c\u00b7\uc778\uc99d\u00b7\uad00\ub9ac \uc601\uc5ed \uc9c0\ub3c4", + "norm_label": "\u1103\u1161\u11ab\u1100\u1161\u00b7\u1106\u1175\u11c0\u1109\u116e \u110b\u116a\u11ab\u1109\u1165\u11bc" + }, + { + "label": "\uac00\uaca9\u00b7\uc870\uac74 \uc785\ub825", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_2026_09_09_completion.md", + "source_location": "L22", + "_origin": "ast", + "id": "pages_b09_estimation_b09_2026_09_09_completion_\uac00\uaca9_\uc870\uac74_\uc785\ub825", + "community": 92, + "community_name": "\uacf5\uac1c\u00b7\uc778\uc99d\u00b7\uad00\ub9ac \uc601\uc5ed \uc9c0\ub3c4", + "norm_label": "\u1100\u1161\u1100\u1167\u11a8\u00b7\u110c\u1169\u1100\u1165\u11ab \u110b\u1175\u11b8\u1105\u1167\u11a8" + }, + { + "label": "\uae30\uacc4\u00b7\uc81c\ube44\uc728\u00b7\uc0b0\ucd9c\ubb3c", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_2026_09_09_completion.md", + "source_location": "L30", + "_origin": "ast", + "id": "pages_b09_estimation_b09_2026_09_09_completion_\uae30\uacc4_\uc81c\ube44\uc728_\uc0b0\ucd9c\ubb3c", + "community": 92, + "community_name": "\uacf5\uac1c\u00b7\uc778\uc99d\u00b7\uad00\ub9ac \uc601\uc5ed \uc9c0\ub3c4", + "norm_label": "\u1100\u1175\u1100\u1168\u00b7\u110c\u1166\u1107\u1175\u110b\u1172\u11af\u00b7\u1109\u1161\u11ab\u110e\u116e\u11af\u1106\u116e\u11af" + }, + { + "label": "\uac80\uc99d \uae30\ub85d", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_2026_09_09_completion.md", + "source_location": "L38", + "_origin": "ast", + "id": "pages_b09_estimation_b09_2026_09_09_completion_\uac80\uc99d_\uae30\ub85d", + "community": 92, + "community_name": "\uacf5\uac1c\u00b7\uc778\uc99d\u00b7\uad00\ub9ac \uc601\uc5ed \uc9c0\ub3c4", + "norm_label": "\u1100\u1165\u11b7\u110c\u1173\u11bc \u1100\u1175\u1105\u1169\u11a8" + }, + { + "label": "\ub0a8\uc740 \uacbd\uacc4", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_2026_09_09_completion.md", + "source_location": "L50", + "_origin": "ast", + "id": "pages_b09_estimation_b09_2026_09_09_completion_\ub0a8\uc740_\uacbd\uacc4", + "community": 92, + "community_name": "\uacf5\uac1c\u00b7\uc778\uc99d\u00b7\uad00\ub9ac \uc601\uc5ed \uc9c0\ub3c4", + "norm_label": "\u1102\u1161\u11b7\u110b\u1173\u11ab \u1100\u1167\u11bc\u1100\u1168" + }, + { + "label": "B09_frontend.md", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b09_estimation_b09_frontend", + "community": 32, + "community_name": "B09_Estimation \u2014 Frontend", + "norm_label": "b09_frontend.md" + }, + { + "label": "B09_Estimation \u2014 Frontend", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_frontend.md", + "source_location": "L8", + "_origin": "ast", + "id": "pages_b09_estimation_b09_frontend_b09_estimation_frontend", + "community": 32, + "community_name": "B09_Estimation \u2014 Frontend", + "norm_label": "b09_estimation \u2014 frontend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc870", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_frontend.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b09_estimation_b09_frontend_\ud30c\uc77c_\uad6c\uc870", + "community": 32, + "community_name": "B09_Estimation \u2014 Frontend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "\ucef4\ud3ec\ub10c\ud2b8 / \ud568\uc218", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_frontend.md", + "source_location": "L20", + "_origin": "ast", + "id": "pages_b09_estimation_b09_frontend_\ucef4\ud3ec\ub10c\ud2b8_\ud568\uc218", + "community": 32, + "community_name": "B09_Estimation \u2014 Frontend", + "norm_label": "\u110f\u1165\u11b7\u1111\u1169\u1102\u1165\u11ab\u1110\u1173 / \u1112\u1161\u11b7\u1109\u116e" + }, + { + "label": "\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_frontend.md", + "source_location": "L26", + "_origin": "ast", + "id": "pages_b09_estimation_b09_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "community": 32, + "community_name": "B09_Estimation \u2014 Frontend", + "norm_label": "\u1105\u1169\u110f\u1165\u11af\u1105\u1161\u110b\u1175\u110c\u1166\u110b\u1175\u1109\u1167\u11ab" + }, + { + "label": "\uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_frontend.md", + "source_location": "L32", + "_origin": "ast", + "id": "pages_b09_estimation_b09_frontend_\uc758\uc874\uc131", + "community": 32, + "community_name": "B09_Estimation \u2014 Frontend", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "\ubc31\uc5d4\ub4dc/DB \u2014 \ubbf8\ucc29\uc218", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_frontend.md", + "source_location": "L37", + "_origin": "ast", + "id": "pages_b09_estimation_b09_frontend_\ubc31\uc5d4\ub4dc_db_\ubbf8\ucc29\uc218", + "community": 32, + "community_name": "B09_Estimation \u2014 Frontend", + "norm_label": "\u1107\u1162\u11a8\u110b\u1166\u11ab\u1103\u1173/db \u2014 \u1106\u1175\u110e\u1161\u11a8\u1109\u116e" + }, + { + "label": "\ucc38\uace0", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_frontend.md", + "source_location": "L44", + "_origin": "ast", + "id": "pages_b09_estimation_b09_frontend_\ucc38\uace0", + "community": 32, + "community_name": "B09_Estimation \u2014 Frontend", + "norm_label": "\u110e\u1161\u11b7\u1100\u1169" + }, + { + "label": "B09_overview_2026_09.md", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_overview_2026_09.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b09_estimation_b09_overview_2026_09", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "b09_overview_2026_09.md" + }, + { + "label": "B09 Estimation \u2014 2026-09 \uc6d0\uac00\uacc4\uc0b0", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_overview_2026_09.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b09_estimation_b09_overview_2026_09_b09_estimation_2026_09_\uc6d0\uac00\uacc4\uc0b0", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "b09 estimation \u2014 2026-09 \u110b\u116f\u11ab\u1100\u1161\u1100\u1168\u1109\u1161\u11ab" + }, + { + "label": "\uad6c\ud604 \uad6c\uc131", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_overview_2026_09.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b09_estimation_b09_overview_2026_09_\uad6c\ud604_\uad6c\uc131", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u1100\u116e\u1112\u1167\u11ab \u1100\u116e\u1109\u1165\u11bc" + }, + { + "label": "\ub9c8\uac10 \uae30\ub85d", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_overview_2026_09.md", + "source_location": "L26", + "_origin": "ast", + "id": "pages_b09_estimation_b09_overview_2026_09_\ub9c8\uac10_\uae30\ub85d", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u1106\u1161\u1100\u1161\u11b7 \u1100\u1175\u1105\u1169\u11a8" + }, + { + "label": "\uc644\ub8cc \uacbd\uacc4", + "file_type": "document", + "source_file": "pages/B09_Estimation/B09_overview_2026_09.md", + "source_location": "L35", + "_origin": "ast", + "id": "pages_b09_estimation_b09_overview_2026_09_\uc644\ub8cc_\uacbd\uacc4", + "community": 46, + "community_name": "\uc784\ub3c4\uae30\uc220\uad50\ubcf8 \uc6d0\ubb38 md \ucd94\ucd9c \ud488\uc9c8 \uacb0\ud568", + "norm_label": "\u110b\u116a\u11ab\u1105\u116d \u1100\u1167\u11bc\u1100\u1168" + }, + { + "label": "B09_Estimation_UI_Page.md", + "file_type": "document", + "source_file": "pages/B09_Estimation/frontend/B09_Estimation_UI_Page.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b09_estimation_frontend_b09_estimation_ui_page", + "community": 155, + "community_name": "B09_Estimation_UI_Page.md", + "norm_label": "b09_estimation_ui_page.md" + }, + { + "label": "B09_Estimation_UI_Page.ts", + "file_type": "document", + "source_file": "pages/B09_Estimation/frontend/B09_Estimation_UI_Page.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b09_estimation_frontend_b09_estimation_ui_page_b09_estimation_ui_page_ts", + "community": 155, + "community_name": "B09_Estimation_UI_Page.md", + "norm_label": "b09_estimation_ui_page.ts" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B09_Estimation/frontend/B09_Estimation_UI_Page.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b09_estimation_frontend_b09_estimation_ui_page_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 155, + "community_name": "B09_Estimation_UI_Page.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "B10_frontend.md", + "file_type": "document", + "source_file": "pages/B10_Payment/B10_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b10_payment_b10_frontend", + "community": 42, + "community_name": "B10_Payment \u2014 Frontend", + "norm_label": "b10_frontend.md" + }, + { + "label": "B10_Payment \u2014 Frontend", + "file_type": "document", + "source_file": "pages/B10_Payment/B10_frontend.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b10_payment_b10_frontend_b10_payment_frontend", + "community": 42, + "community_name": "B10_Payment \u2014 Frontend", + "norm_label": "b10_payment \u2014 frontend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc870", + "file_type": "document", + "source_file": "pages/B10_Payment/B10_frontend.md", + "source_location": "L13", + "_origin": "ast", + "id": "pages_b10_payment_b10_frontend_\ud30c\uc77c_\uad6c\uc870", + "community": 42, + "community_name": "B10_Payment \u2014 Frontend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "\uc8fc\uc694 \ucef4\ud3ec\ub10c\ud2b8 \ubc0f \ud568\uc218 (Mockup)", + "file_type": "document", + "source_file": "pages/B10_Payment/B10_frontend.md", + "source_location": "L20", + "_origin": "ast", + "id": "pages_b10_payment_b10_frontend_\uc8fc\uc694_\ucef4\ud3ec\ub10c\ud2b8_\ubc0f_\ud568\uc218_mockup", + "community": 42, + "community_name": "B10_Payment \u2014 Frontend", + "norm_label": "\u110c\u116e\u110b\u116d \u110f\u1165\u11b7\u1111\u1169\u1102\u1165\u11ab\u1110\u1173 \u1106\u1175\u11be \u1112\u1161\u11b7\u1109\u116e (mockup)" + }, + { + "label": "\ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1 \uc804\uc81c (\ubaa9\uc5c5)", + "file_type": "document", + "source_file": "pages/B10_Payment/B10_frontend.md", + "source_location": "L27", + "_origin": "ast", + "id": "pages_b10_payment_b10_frontend_\ube44\uc988\ub2c8\uc2a4_\ub85c\uc9c1_\uc804\uc81c_\ubaa9\uc5c5", + "community": 42, + "community_name": "B10_Payment \u2014 Frontend", + "norm_label": "\u1107\u1175\u110c\u1173\u1102\u1175\u1109\u1173 \u1105\u1169\u110c\u1175\u11a8 \u110c\u1165\u11ab\u110c\u1166 (\u1106\u1169\u11a8\u110b\u1165\u11b8)" + }, + { + "label": "\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "file_type": "document", + "source_file": "pages/B10_Payment/B10_frontend.md", + "source_location": "L32", + "_origin": "ast", + "id": "pages_b10_payment_b10_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "community": 42, + "community_name": "B10_Payment \u2014 Frontend", + "norm_label": "\u1105\u1169\u110f\u1165\u11af\u1105\u1161\u110b\u1175\u110c\u1166\u110b\u1175\u1109\u1167\u11ab" + }, + { + "label": "\uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B10_Payment/B10_frontend.md", + "source_location": "L41", + "_origin": "ast", + "id": "pages_b10_payment_b10_frontend_\uc758\uc874\uc131", + "community": 42, + "community_name": "B10_Payment \u2014 Frontend", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B10_Payment_UI_Page.md", + "file_type": "document", + "source_file": "pages/B10_Payment/frontend/B10_Payment_UI_Page.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b10_payment_frontend_b10_payment_ui_page", + "community": 156, + "community_name": "B10_Payment_UI_Page.md", + "norm_label": "b10_payment_ui_page.md" + }, + { + "label": "B10_Payment_UI_Page.ts", + "file_type": "document", + "source_file": "pages/B10_Payment/frontend/B10_Payment_UI_Page.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b10_payment_frontend_b10_payment_ui_page_b10_payment_ui_page_ts", + "community": 156, + "community_name": "B10_Payment_UI_Page.md", + "norm_label": "b10_payment_ui_page.ts" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B10_Payment/frontend/B10_Payment_UI_Page.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b10_payment_frontend_b10_payment_ui_page_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 156, + "community_name": "B10_Payment_UI_Page.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "B11_frontend.md", + "file_type": "document", + "source_file": "pages/B11_Status/B11_frontend.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b11_status_b11_frontend", + "community": 43, + "community_name": "B11_Status \u2014 Frontend", + "norm_label": "b11_frontend.md" + }, + { + "label": "B11_Status \u2014 Frontend", + "file_type": "document", + "source_file": "pages/B11_Status/B11_frontend.md", + "source_location": "L9", + "_origin": "ast", + "id": "pages_b11_status_b11_frontend_b11_status_frontend", + "community": 43, + "community_name": "B11_Status \u2014 Frontend", + "norm_label": "b11_status \u2014 frontend" + }, + { + "label": "\ud30c\uc77c \uad6c\uc870", + "file_type": "document", + "source_file": "pages/B11_Status/B11_frontend.md", + "source_location": "L13", + "_origin": "ast", + "id": "pages_b11_status_b11_frontend_\ud30c\uc77c_\uad6c\uc870", + "community": 43, + "community_name": "B11_Status \u2014 Frontend", + "norm_label": "\u1111\u1161\u110b\u1175\u11af \u1100\u116e\u110c\u1169" + }, + { + "label": "\uc8fc\uc694 \ucef4\ud3ec\ub10c\ud2b8 \ubc0f \uae30\ub2a5 (Mockup)", + "file_type": "document", + "source_file": "pages/B11_Status/B11_frontend.md", + "source_location": "L21", + "_origin": "ast", + "id": "pages_b11_status_b11_frontend_\uc8fc\uc694_\ucef4\ud3ec\ub10c\ud2b8_\ubc0f_\uae30\ub2a5_mockup", + "community": 43, + "community_name": "B11_Status \u2014 Frontend", + "norm_label": "\u110c\u116e\u110b\u116d \u110f\u1165\u11b7\u1111\u1169\u1102\u1165\u11ab\u1110\u1173 \u1106\u1175\u11be \u1100\u1175\u1102\u1173\u11bc (mockup)" + }, + { + "label": "\uacb0\uc7ac \uc0c1\ud0dc \ud750\ub984 (Payment Flow Status)", + "file_type": "document", + "source_file": "pages/B11_Status/B11_frontend.md", + "source_location": "L29", + "_origin": "ast", + "id": "pages_b11_status_b11_frontend_\uacb0\uc7ac_\uc0c1\ud0dc_\ud750\ub984_payment_flow_status", + "community": 43, + "community_name": "B11_Status \u2014 Frontend", + "norm_label": "\u1100\u1167\u11af\u110c\u1162 \u1109\u1161\u11bc\u1110\u1162 \u1112\u1173\u1105\u1173\u11b7 (payment flow status)" + }, + { + "label": "\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "file_type": "document", + "source_file": "pages/B11_Status/B11_frontend.md", + "source_location": "L35", + "_origin": "ast", + "id": "pages_b11_status_b11_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "community": 43, + "community_name": "B11_Status \u2014 Frontend", + "norm_label": "\u1105\u1169\u110f\u1165\u11af\u1105\u1161\u110b\u1175\u110c\u1166\u110b\u1175\u1109\u1167\u11ab" + }, + { + "label": "\uc758\uc874\uc131", + "file_type": "document", + "source_file": "pages/B11_Status/B11_frontend.md", + "source_location": "L44", + "_origin": "ast", + "id": "pages_b11_status_b11_frontend_\uc758\uc874\uc131", + "community": 43, + "community_name": "B11_Status \u2014 Frontend", + "norm_label": "\u110b\u1174\u110c\u1169\u11ab\u1109\u1165\u11bc" + }, + { + "label": "B11_Status_UI_Page.md", + "file_type": "document", + "source_file": "pages/B11_Status/frontend/B11_Status_UI_Page.md", + "source_location": "L1", + "_origin": "ast", + "id": "pages_b11_status_frontend_b11_status_ui_page", + "community": 157, + "community_name": "B11_Status_UI_Page.md", + "norm_label": "b11_status_ui_page.md" + }, + { + "label": "B11_Status_UI_Page.ts", + "file_type": "document", + "source_file": "pages/B11_Status/frontend/B11_Status_UI_Page.md", + "source_location": "L10", + "_origin": "ast", + "id": "pages_b11_status_frontend_b11_status_ui_page_b11_status_ui_page_ts", + "community": 157, + "community_name": "B11_Status_UI_Page.md", + "norm_label": "b11_status_ui_page.ts" + }, + { + "label": "\ud83d\udee0\ufe0f \uc8fc\uc694 \ud568\uc218 \ubaa9\ub85d", + "file_type": "document", + "source_file": "pages/B11_Status/frontend/B11_Status_UI_Page.md", + "source_location": "L14", + "_origin": "ast", + "id": "pages_b11_status_frontend_b11_status_ui_page_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "community": 157, + "community_name": "B11_Status_UI_Page.md", + "norm_label": "\ud83d\udee0\ufe0f \u110c\u116e\u110b\u116d \u1112\u1161\u11b7\u1109\u116e \u1106\u1169\u11a8\u1105\u1169\u11a8" + }, + { + "label": "Query: \ubc30\uc218\uad00 \ub9e4\uc124 \uac01\ub3c4 \uc81c\uc57d\uc870\uac74 (\uc784\ub3c4)", + "file_type": "document", + "source_file": "graphify-out/memory/query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918__\uc784\ub3c4\uc5d0\uc11c.md", + "community": 195, + "norm_label": "query: \u1107\u1162\u1109\u116e\u1100\u116a\u11ab \u1106\u1162\u1109\u1165\u11af \u1100\u1161\u11a8\u1103\u1169 \u110c\u1166\u110b\u1163\u11a8\u110c\u1169\u1100\u1165\u11ab (\u110b\u1175\u11b7\u1103\u1169)", + "community_name": "Query: \ubc30\uc218\uad00 \ub9e4\uc124 \uac01\ub3c4 \uc81c\uc57d\uc870\uac74 (\uc784\ub3c4)", + "id": "query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918__\uc784\ub3c4_md_query" + }, + { + "label": "Query: \uc784\ub3c4 \uc9d1\uc218\uc815 \ud615\ud0dc\uc815\ubcf4", + "file_type": "document", + "source_file": "graphify-out/memory/query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918.md", + "community": 185, + "norm_label": "query: \u110b\u1175\u11b7\u1103\u1169 \u110c\u1175\u11b8\u1109\u116e\u110c\u1165\u11bc \u1112\u1167\u11bc\u1110\u1162\u110c\u1165\u11bc\u1107\u1169", + "community_name": "Query: \uc784\ub3c4 \uc9d1\uc218\uc815 \ud615\ud0dc\uc815\ubcf4", + "id": "graphify_out_memory_query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_md_query" + }, + { + "label": "B08_DesignDetail_Engine_Cad_MassHaul.py", + "file_type": "code", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "community": 170, + "norm_label": "b08_designdetail_engine_cad_masshaul.py", + "community_name": "B08_DesignDetail_Engine_Cad_MassHaul.py", + "id": "b08_designdetail_b08_designdetail_engine_cad_masshaul_py" + }, + { + "label": "B08_DesignDetail_Engine_Cad_Basin.py", + "file_type": "code", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "community": 169, + "norm_label": "b08_designdetail_engine_cad_basin.py", + "community_name": "B08_DesignDetail_Engine_Cad_Basin.py", + "id": "b08_designdetail_b08_designdetail_engine_cad_basin_py" + }, + { + "label": "common_util_mass_haul_settle.ts", + "file_type": "code", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "community": 177, + "norm_label": "common_util_mass_haul_settle.ts", + "community_name": "common_util_mass_haul_settle.ts", + "id": "common_util_common_util_mass_haul_settle_ts" + }, + { + "label": "Mass Haul Diagram (\ud1a0\uc801\ub3c4)", + "file_type": "concept", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "community": 179, + "norm_label": "mass haul diagram (\u1110\u1169\u110c\u1165\u11a8\u1103\u1169)", + "community_name": "Mass Haul Diagram (\ud1a0\uc801\ub3c4)", + "id": "concept_mass_haul_diagram" + }, + { + "label": "Drainage Watershed (\uc720\uc5ed\ub3c4)", + "file_type": "concept", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "community": 178, + "norm_label": "drainage watershed (\u110b\u1172\u110b\u1167\u11a8\u1103\u1169)", + "community_name": "Drainage Watershed (\uc720\uc5ed\ub3c4)", + "id": "concept_drainage_watershed" + }, + { + "label": "OpenWebCAD Core", + "file_type": "code", + "source_file": "B08_DesignDetail/openwebcad", + "community": 176, + "norm_label": "openwebcad core", + "community_name": "OpenWebCAD Core", + "id": "b08_designdetail_openwebcad_app" + }, + { + "label": "B03 File Input Backend", + "file_type": "code", + "source_file": "pages/B03_FileInput/B03_backend.md", + "community": 187, + "norm_label": "b03 file input backend", + "community_name": "B03 File Input Backend", + "id": "pages_b03_fileinput_backend" + }, + { + "label": "B03 File Input Frontend", + "file_type": "code", + "source_file": "pages/B03_FileInput/B03_frontend.md", + "community": 188, + "norm_label": "b03 file input frontend", + "community_name": "B03 File Input Frontend", + "id": "pages_b03_fileinput_frontend" + }, + { + "label": "B04 PreProcess Backend", + "file_type": "code", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "community": 189, + "norm_label": "b04 preprocess backend", + "community_name": "B04 PreProcess Backend", + "id": "pages_b04_preprocess_backend" + }, + { + "label": "B04 PreProcess Frontend", + "file_type": "code", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "community": 190, + "norm_label": "b04 preprocess frontend", + "community_name": "B04 PreProcess Frontend", + "id": "pages_b04_preprocess_frontend" + }, + { + "label": "B08 CAD Blocks Library", + "file_type": "code", + "source_file": "pages/B08_DesignDetail/B08_CAD_blocks.md", + "community": 192, + "norm_label": "b08 cad blocks library", + "community_name": "B08 CAD Blocks Library", + "id": "pages_b08_designdetail_cad_blocks" + }, + { + "label": "B08 CAD Table Entity", + "file_type": "code", + "source_file": "pages/B08_DesignDetail/B08_CAD_table_entity.md", + "community": 193, + "norm_label": "b08 cad table entity", + "community_name": "B08 CAD Table Entity", + "id": "pages_b08_designdetail_cad_table_entity" + }, + { + "label": "B08 Cross Section Structure Sheets", + "file_type": "code", + "source_file": "pages/B08_DesignDetail/B08_cross_structure_sheets.md", + "community": 194, + "norm_label": "b08 cross section structure sheets", + "community_name": "B08 Cross Section Structure Sheets", + "id": "pages_b08_designdetail_cross_structure_sheets" + } + ], + "links": [ + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/implementation_status.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_implementation_status", + "target": "architecture_implementation_status_\ud604\uc7ac_\uad6c\ud604_\ud604\ud669_\uc18c\uc2a4_\uc77d\uae30_\uac10\uc0ac", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "index.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "index", + "target": "architecture_implementation_status", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/implementation_status.md", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_implementation_status_\ud604\uc7ac_\uad6c\ud604_\ud604\ud669_\uc18c\uc2a4_\uc77d\uae30_\uac10\uc0ac", + "target": "architecture_implementation_status_\uad6c\ud604_\uc0c1\ud0dc_\uc6a9\uc5b4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/implementation_status.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_implementation_status_\ud604\uc7ac_\uad6c\ud604_\ud604\ud669_\uc18c\uc2a4_\uc77d\uae30_\uac10\uc0ac", + "target": "architecture_implementation_status_\ub2e8\uacc4\ubcc4_\ud310\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/implementation_status.md", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_implementation_status_\ud604\uc7ac_\uad6c\ud604_\ud604\ud669_\uc18c\uc2a4_\uc77d\uae30_\uac10\uc0ac", + "target": "architecture_implementation_status_\ubbf8\uacb0_\uc124\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/implementation_status.md", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_implementation_status_\ud604\uc7ac_\uad6c\ud604_\ud604\ud669_\uc18c\uc2a4_\uc77d\uae30_\uac10\uc0ac", + "target": "architecture_implementation_status_\ubc18\ub4dc\uc2dc_\uc720\uc9c0\ud560_\uad6c\ubd84", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/implementation_status.md", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_implementation_status_\ud604\uc7ac_\uad6c\ud604_\ud604\ud669_\uc18c\uc2a4_\uc77d\uae30_\uac10\uc0ac", + "target": "architecture_implementation_status_\ube44\uc6cc\ud06c\ud50c\ub85c_\uc601\uc5ed_\ud310\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/project_map.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_project_map", + "target": "architecture_project_map_aislo_\ud504\ub85c\uc81d\ud2b8_\uc9c0\ub3c4", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "index.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "index", + "target": "architecture_project_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "weight": 1.0, + "source_file": "pages/B07_DesignDetail/B07_frontend.md", + "source_location": "wikilink", + "_origin": "curated", + "source": "pages_b07_designdetail_b07_frontend_b07_designdetail_\ud604\uc7ac_\ucc45\uc784", + "target": "architecture_project_map" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/project_map.md", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_project_map_aislo_\ud504\ub85c\uc81d\ud2b8_\uc9c0\ub3c4", + "target": "architecture_project_map_\uba85\uce6d_\ud310\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/project_map.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_project_map_aislo_\ud504\ub85c\uc81d\ud2b8_\uc9c0\ub3c4", + "target": "architecture_project_map_\ud0d0\uc0c9_\uc21c\uc11c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/project_map.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_project_map_aislo_\ud504\ub85c\uc81d\ud2b8_\uc9c0\ub3c4", + "target": "architecture_project_map_\ud604\uc7ac_\uba85\uce6d\uacfc_\ucc45\uc784", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/public_admin_map.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_public_admin_map", + "target": "architecture_public_admin_map_\uacf5\uac1c_\uc778\uc99d_\uad00\ub9ac_\uc601\uc5ed_\uc9c0\ub3c4", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "index.md", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast", + "source": "index", + "target": "architecture_public_admin_map", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/public_admin_map.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_public_admin_map_\uacf5\uac1c_\uc778\uc99d_\uad00\ub9ac_\uc601\uc5ed_\uc9c0\ub3c4", + "target": "architecture_public_admin_map_\uacf5\ud1b5_\uc758\uc874", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/public_admin_map.md", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_public_admin_map_\uacf5\uac1c_\uc778\uc99d_\uad00\ub9ac_\uc601\uc5ed_\uc9c0\ub3c4", + "target": "architecture_public_admin_map_\uc9c1\uc811_\uad6c\ud604_\uad00\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/shared_resources.md", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_shared_resources", + "target": "architecture_shared_resources_\uacf5\uc720_\uc790\uc6d0_\uc601\ud5a5_\uc9c0\ub3c4", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "index.md", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast", + "source": "index", + "target": "architecture_shared_resources", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/shared_resources.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_shared_resources_\uacf5\uc720_\uc790\uc6d0_\uc601\ud5a5_\uc9c0\ub3c4", + "target": "architecture_shared_resources_\ub2e8\uacc4\ubcc4_\uc9c1\uc811_\uc5f0\uacb0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/shared_resources.md", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_shared_resources_\uacf5\uc720_\uc790\uc6d0_\uc601\ud5a5_\uc9c0\ub3c4", + "target": "architecture_shared_resources_\uc601\ud5a5_\ubd84\uc11d_\uaddc\uce59", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/workflow_data_flow.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_workflow_data_flow", + "target": "architecture_workflow_data_flow_b01_b09_workflow_\ub370\uc774\ud130_\ud750\ub984", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "weight": 1.0, + "source_file": "concepts/completed_2026-09-07.md", + "source_location": "wikilink", + "_origin": "curated", + "source": "concepts_completed_2026_09_07", + "target": "architecture_workflow_data_flow" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "weight": 1.0, + "source_file": "concepts/quantity_cost_contract.md", + "source_location": "wikilink", + "_origin": "curated", + "source": "concepts_quantity_cost_contract", + "target": "architecture_workflow_data_flow" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "index.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "index", + "target": "architecture_workflow_data_flow", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "weight": 1.0, + "source_file": "pages/B07_DesignDetail/B07_frontend.md", + "source_location": "wikilink", + "_origin": "curated", + "source": "pages_b07_designdetail_b07_frontend_b07_designdetail_\ud604\uc7ac_\ucc45\uc784", + "target": "architecture_workflow_data_flow" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/workflow_data_flow.md", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_workflow_data_flow_b01_b09_workflow_\ub370\uc774\ud130_\ud750\ub984", + "target": "architecture_workflow_data_flow_b04_b06_\uc790\ub3d9_\uacc4\uc0b0\uacfc_\uc7ac\uc124\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/workflow_data_flow.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_workflow_data_flow_b01_b09_workflow_\ub370\uc774\ud130_\ud750\ub984", + "target": "architecture_workflow_data_flow_\ub2e8\uacc4_\uad00\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/workflow_data_flow.md", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_workflow_data_flow_b01_b09_workflow_\ub370\uc774\ud130_\ud750\ub984", + "target": "architecture_workflow_data_flow_\uc0c1\ud0dc\uc640_\uc0b0\ucd9c\ubb3c_\ubb34\ud6a8\ud654", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "architecture/workflow_data_flow.md", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast", + "source": "architecture_workflow_data_flow_b01_b09_workflow_\ub370\uc774\ud130_\ud750\ub984", + "target": "architecture_workflow_data_flow_\uc815\ubcf8_\uc704\uce58", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/a00_app_shell_framework.md", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_a00_app_shell_framework", + "target": "concepts_a00_app_shell_framework_a00_common_app_shell_framework", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/a00_app_shell_framework.md", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_a00_app_shell_framework", + "target": "concepts_a00_app_shell_framework_scaffold", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/dependencies.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_dependencies", + "target": "concepts_a00_app_shell_framework", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/a00_app_shell_framework.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_a00_app_shell_framework_a00_common_app_shell_framework", + "target": "concepts_a00_app_shell_framework_app_shell_\uad6c\uc131\uc694\uc18c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/a00_app_shell_framework.md", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_a00_app_shell_framework_a00_common_app_shell_framework", + "target": "concepts_a00_app_shell_framework_router_\ub77c\uc6b0\ud305_\ud14c\uc774\ube14", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/a00_app_shell_framework.md", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_a00_app_shell_framework_a00_common_app_shell_framework", + "target": "concepts_a00_app_shell_framework_\uc138\ubd80_\uc2a4\uce90\ud3f4\ub4dc_css_\uc885\uc18d\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/a00_app_shell_framework.md", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_a00_app_shell_framework_a00_common_app_shell_framework", + "target": "concepts_a00_app_shell_framework_\uc778\uc99d_\uac00\ub4dc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/a00_app_shell_framework.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_a00_app_shell_framework_a00_common_app_shell_framework", + "target": "concepts_a00_app_shell_framework_\ud30c\uc77c_\uad6c\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/a00_app_shell_framework.md", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_a00_app_shell_framework_app_shell_\uad6c\uc131\uc694\uc18c", + "target": "concepts_a00_app_shell_framework_\ud14c\ub9c8_\uc5b8\uc5b4_\uad00\ub9ac", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/a00_app_shell_framework.md", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_a00_app_shell_framework_app_shell_\uad6c\uc131\uc694\uc18c", + "target": "concepts_a00_app_shell_framework_\ud5e4\ub354_\uad6c\uc131_64px_\ub192\uc774_sticky", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/a00_app_shell_framework_scaffold.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_a00_app_shell_framework_scaffold", + "target": "concepts_a00_app_shell_framework_scaffold_a00_common_\uc2a4\uce90\ud3f4\ub4dc_css_\uc885\uc18d\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/a00_app_shell_framework_scaffold.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_a00_app_shell_framework_scaffold_a00_common_\uc2a4\uce90\ud3f4\ub4dc_css_\uc885\uc18d\uc131", + "target": "concepts_a00_app_shell_framework_scaffold_b_page_scaffold", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/a00_app_shell_framework_scaffold.md", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_a00_app_shell_framework_scaffold_a00_common_\uc2a4\uce90\ud3f4\ub4dc_css_\uc885\uc18d\uc131", + "target": "concepts_a00_app_shell_framework_scaffold_css_\uc778\uc81d\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/a00_app_shell_framework_scaffold.md", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_a00_app_shell_framework_scaffold_a00_common_\uc2a4\uce90\ud3f4\ub4dc_css_\uc885\uc18d\uc131", + "target": "concepts_a00_app_shell_framework_scaffold_\uc0ac\uc6a9\ucc98", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/a00_app_shell_framework_scaffold.md", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_a00_app_shell_framework_scaffold_a00_common_\uc2a4\uce90\ud3f4\ub4dc_css_\uc885\uc18d\uc131", + "target": "concepts_a00_app_shell_framework_scaffold_\uc885\uc18d\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/api_common.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_api_common", + "target": "concepts_api_common_api_\uacf5\ud1b5_\uc5ec\ub7ec_\ud398\uc774\uc9c0\uac00_\uacf5\uc720\ud558\ub294_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/api_common.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_api_common", + "target": "concepts_schema_common", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/api_common.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_api_common", + "target": "concepts_workflow_state", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/api_common.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_api_common_api_\uacf5\ud1b5_\uc5ec\ub7ec_\ud398\uc774\uc9c0\uac00_\uacf5\uc720\ud558\ub294_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "target": "concepts_api_common_\uacf5\ud1b5_\uc624\ub958_\uc751\ub2f5_\ud3ec\ub9f7_\uc804_\ub77c\uc6b0\ud130", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/api_common.md", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_api_common_api_\uacf5\ud1b5_\uc5ec\ub7ec_\ud398\uc774\uc9c0\uac00_\uacf5\uc720\ud558\ub294_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "target": "concepts_api_common_\uc6cc\ud06c\ud50c\ub85c\uc6b0_\uc0c1\ud0dc_\uc870\ud68c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/api_common.md", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_api_common_api_\uacf5\ud1b5_\uc5ec\ub7ec_\ud398\uc774\uc9c0\uac00_\uacf5\uc720\ud558\ub294_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "target": "concepts_api_common_\ud3f4\ub9c1_\ud328\ud134_legacy_workflow_json_\uc124\uacc4_\ud604\uc7ac_\uad6c\ud604\uc740_workflow_state_api_\uc0ac\uc6a9", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/auth_rbac.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_auth_rbac", + "target": "concepts_auth_rbac_\uc778\uc99d_rbac", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/auth_rbac.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_auth_rbac", + "target": "concepts_db_schema_users_auth", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/common_util.md", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_common_util", + "target": "concepts_auth_rbac", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/auth_rbac.md", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_auth_rbac_\uc778\uc99d_rbac", + "target": "concepts_auth_rbac_otp_\ube44\ubc00\ubc88\ud638_\ubc0f_\ub514\ubc14\uc774\uc2a4_\uc2e0\ub8b0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/auth_rbac.md", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_auth_rbac_\uc778\uc99d_rbac", + "target": "concepts_auth_rbac_\uad8c\ud55c_\uac80\uc99d_\ud5ec\ud37c_b01_dashboard", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/auth_rbac.md", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_auth_rbac_\uc778\uc99d_rbac", + "target": "concepts_auth_rbac_\ub77c\uc6b0\ud305_\uac00\ub4dc_frontend_md_5_2", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/auth_rbac.md", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_auth_rbac_\uc778\uc99d_rbac", + "target": "concepts_auth_rbac_\uc0ac\uc6a9\uc790_\uc0c1\ud0dc_\uc0dd\uba85\uc8fc\uae30", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/auth_rbac.md", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_auth_rbac_\uc778\uc99d_rbac", + "target": "concepts_auth_rbac_\uc0ac\uc6a9\ucc98_\uc5ed\ucc38\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/auth_rbac.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_auth_rbac_\uc778\uc99d_rbac", + "target": "concepts_auth_rbac_\uc138\uc158_\uc778\uc99d_backend_md_6_3", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/auth_rbac.md", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_auth_rbac_\uc778\uc99d_rbac", + "target": "concepts_auth_rbac_\uc5ed\ud560_users_role", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/auth_rbac.md", + "source_location": "L57", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_auth_rbac_\uc778\uc99d_rbac", + "target": "concepts_auth_rbac_\uc778\uc99d_\uac31\uc2e0_\ubc0f_\ub9cc\ub8cc_\uc77c\uc6d0\ud654", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/b07_external_webcad_demos.md", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_b07_external_webcad_demos", + "target": "concepts_b07_external_webcad_demos_b07_\uc678\ubd80_webcad_\ube44\uad50_\uc2e4\ud589\ud658\uacbd", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/b07_external_webcad_demos.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_b07_external_webcad_demos_b07_\uc678\ubd80_webcad_\ube44\uad50_\uc2e4\ud589\ud658\uacbd", + "target": "concepts_b07_external_webcad_demos_\uac80\uc99d_\uc0c1\ud0dc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/b07_external_webcad_demos.md", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_b07_external_webcad_demos_b07_\uc678\ubd80_webcad_\ube44\uad50_\uc2e4\ud589\ud658\uacbd", + "target": "concepts_b07_external_webcad_demos_\ub77c\uc774\uc120\uc2a4_\uc8fc\uc758", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/b07_external_webcad_demos.md", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_b07_external_webcad_demos_b07_\uc678\ubd80_webcad_\ube44\uad50_\uc2e4\ud589\ud658\uacbd", + "target": "concepts_b07_external_webcad_demos_\uc2e4\ud589\uacfc_\uc885\ub8cc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/common_util.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_common_util", + "target": "concepts_common_util_\uacf5\ud1b5_\uc720\ud2f8_common_util", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/common_util.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_common_util", + "target": "concepts_storage_paths", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/common_util.md", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_common_util", + "target": "concepts_workflow_state", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-04.md", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_04", + "target": "concepts_common_util", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/common_util.md", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_common_util_\uacf5\ud1b5_\uc720\ud2f8_common_util", + "target": "concepts_common_util_\ub9ac\uc18c\uc2a4_\ubaa8\ub2c8\ud130\ub9c1_common_util_resource_monitor_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/common_util.md", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_common_util_\uacf5\ud1b5_\uc720\ud2f8_common_util", + "target": "concepts_common_util_\uc774\uba54\uc77c_\ubc1c\uc1a1_common_util_email_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/common_util/common_util_project_delete.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_common_util_common_util_project_delete", + "target": "concepts_common_util_common_util_project_delete_common_util_project_delete_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/common_util/common_util_project_delete.md", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_common_util_common_util_project_delete_common_util_project_delete_py", + "target": "concepts_common_util_common_util_project_delete_\uc5ed\ucc38\uc870_\uc0ac\uc6a9\ucc98", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/common_util/common_util_project_delete.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_common_util_common_util_project_delete_common_util_project_delete_py", + "target": "concepts_common_util_common_util_project_delete_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/common_util/common_util_storage.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_common_util_common_util_storage", + "target": "concepts_common_util_common_util_storage_common_util_storage_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/common_util/common_util_storage.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_common_util_common_util_storage_common_util_storage_py", + "target": "concepts_common_util_common_util_storage_\uc5ed\ucc38\uc870_\uc0ac\uc6a9\ucc98", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/common_util/common_util_storage.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_common_util_common_util_storage_common_util_storage_py", + "target": "concepts_common_util_common_util_storage_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/common_util/common_util_workflow_state.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_common_util_common_util_workflow_state", + "target": "concepts_common_util_common_util_workflow_state_common_util_workflow_state_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/common_util/common_util_workflow_state.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_common_util_common_util_workflow_state_common_util_workflow_state_py", + "target": "concepts_common_util_common_util_workflow_state_\uc5ed\ucc38\uc870_\uc0ac\uc6a9\ucc98", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/common_util/common_util_workflow_state.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_common_util_common_util_workflow_state_common_util_workflow_state_py", + "target": "concepts_common_util_common_util_workflow_state_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_08_29", + "target": "concepts_completed_2026_08_29_2026_08_29_\uc644\ub8cc_\ubc18\uc601", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-01_followups.md", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_01_followups", + "target": "concepts_completed_2026_08_29", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_08_29_2026_08_29_\uc644\ub8cc_\ubc18\uc601", + "target": "concepts_completed_2026_08_29_b03_\uc7ac\uc5c5\ub85c\ub4dc_b05_\ucd5c\uc2e0_\uc870\ud68c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_08_29_2026_08_29_\uc644\ub8cc_\ubc18\uc601", + "target": "concepts_completed_2026_08_29_b05_b06_\uad6c\uc870\ubb3c_ui_\ud1b5\ud569", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_08_29_2026_08_29_\uc644\ub8cc_\ubc18\uc601", + "target": "concepts_completed_2026_08_29_b07_b08_\uc21c\uc11c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_08_29_2026_08_29_\uc644\ub8cc_\ubc18\uc601", + "target": "concepts_completed_2026_08_29_b07_cad_\uace0\uc815_\ucc99\ub3c4_\ud6a1\ub2e8_\uc7a5_\ubc30\uce58", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_08_29_2026_08_29_\uc644\ub8cc_\ubc18\uc601", + "target": "concepts_completed_2026_08_29_b07_cad_\ud14c\ub9c8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L53", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_08_29_2026_08_29_\uc644\ub8cc_\ubc18\uc601", + "target": "concepts_completed_2026_08_29_b07_cad_\ud655\ub300_\ud32c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_08_29_2026_08_29_\uc644\ub8cc_\ubc18\uc601", + "target": "concepts_completed_2026_08_29_\ubc30\uc218\uc2dc\uc124_\ucd94\ucc9c_\uae30\uc900", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L72", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_08_29_2026_08_29_\uc644\ub8cc_\ubc18\uc601", + "target": "concepts_completed_2026_08_29_\ucd08\uae30\uac12_\ubcf4\uc804", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-08-29.md", + "source_location": "L83", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_08_29_2026_08_29_\uc644\ub8cc_\ubc18\uc601", + "target": "concepts_completed_2026_08_29_\ucd08\uae30\ud654_\ubcf5\uc6d0_\uc2e4\uce21", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-01.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_01", + "target": "concepts_completed_2026_09_01_2026_09_01_\uc644\ub8cc_b04_\uc9c0\uba74_\ucc98\ub9ac_b05_b06_\ubc30\uc218_\uc81c\uc5b4", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-01_followups.md", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_01_followups", + "target": "concepts_completed_2026_09_01", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-01.md", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_01_2026_09_01_\uc644\ub8cc_b04_\uc9c0\uba74_\ucc98\ub9ac_b05_b06_\ubc30\uc218_\uc81c\uc5b4", + "target": "concepts_completed_2026_09_01_\uac80\uc99d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-01.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_01_2026_09_01_\uc644\ub8cc_b04_\uc9c0\uba74_\ucc98\ub9ac_b05_b06_\ubc30\uc218_\uc81c\uc5b4", + "target": "concepts_completed_2026_09_01_\uc644\ub8cc_\ubc94\uc704", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-01.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_01_2026_09_01_\uc644\ub8cc_b04_\uc9c0\uba74_\ucc98\ub9ac_b05_b06_\ubc30\uc218_\uc81c\uc5b4", + "target": "concepts_completed_2026_09_01_\uc800\uc7a5_\ud638\ud658_\uaddc\uce59", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-01_followups.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_01_followups", + "target": "concepts_completed_2026_09_01_followups_2026_09_01_\uc794\uc5ec_\uc644\ub8cc_\uccb4\ud06c_\uc815\ub9ac", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-01_followups.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_01_followups", + "target": "concepts_crs_metadata", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-01_followups.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_01_followups", + "target": "concepts_drainage_watershed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-01_followups.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_01_followups_2026_09_01_\uc794\uc5ec_\uc644\ub8cc_\uccb4\ud06c_\uc815\ub9ac", + "target": "concepts_completed_2026_09_01_followups_\ubc94\uc704", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-01_followups.md", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_01_followups_2026_09_01_\uc794\uc5ec_\uc644\ub8cc_\uccb4\ud06c_\uc815\ub9ac", + "target": "concepts_completed_2026_09_01_followups_\ubcf4\ub958_\uad6c\ubd84", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-02.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_02", + "target": "concepts_completed_2026_09_02_2026_09_02_\uc644\ub8cc_\ud56d\ubaa9", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-02.md", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_02_2026_09_02_\uc644\ub8cc_\ud56d\ubaa9", + "target": "concepts_completed_2026_09_02_b05_\uad6c\uc870\ubb3c_3d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-02.md", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_02_2026_09_02_\uc644\ub8cc_\ud56d\ubaa9", + "target": "concepts_completed_2026_09_02_b05_\uc885\ub2e8_\ud3b8\uc9d1_\ud6c4\uc18d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-02.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_02_2026_09_02_\uc644\ub8cc_\ud56d\ubaa9", + "target": "concepts_completed_2026_09_02_cad", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-02.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_02_2026_09_02_\uc644\ub8cc_\ud56d\ubaa9", + "target": "concepts_completed_2026_09_02_\ub178\uc120_\uc9c0\ud45c\uba74", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-02.md", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_02_2026_09_02_\uc644\ub8cc_\ud56d\ubaa9", + "target": "concepts_completed_2026_09_02_\uc791\uc5c5_\ud658\uacbd", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-02.md", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_02_2026_09_02_\uc644\ub8cc_\ud56d\ubaa9", + "target": "concepts_completed_2026_09_02_\ud68c\uadc0_\uc0c1\ud0dc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-03.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_03", + "target": "concepts_completed_2026_09_03_2026_09_03_\uc644\ub8cc_\uc785\ub825_\ubc30\uc218_\uc885\ud6a1\ub2e8_cad", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-03.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_03_2026_09_03_\uc644\ub8cc_\uc785\ub825_\ubc30\uc218_\uc885\ud6a1\ub2e8_cad", + "target": "concepts_completed_2026_09_03_\uacf5\ud1b5_\uacb0\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-03.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_03_2026_09_03_\uc644\ub8cc_\uc785\ub825_\ubc30\uc218_\uc885\ud6a1\ub2e8_cad", + "target": "concepts_completed_2026_09_03_\uc644\ub8cc_\ubc94\uc704", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-03_additional.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_03_additional", + "target": "concepts_completed_2026_09_03_additional_2026_09_03_\ucd94\uac00_\uc644\ub8cc_\ud654\uba74_\uc885\ub2e8_\ud6a1\ub2e8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-03_additional.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_03_additional_2026_09_03_\ucd94\uac00_\uc644\ub8cc_\ud654\uba74_\uc885\ub2e8_\ud6a1\ub2e8", + "target": "concepts_completed_2026_09_03_additional_\uc644\ub8cc_\ubc94\uc704", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-03_additional.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_03_additional_2026_09_03_\ucd94\uac00_\uc644\ub8cc_\ud654\uba74_\uc885\ub2e8_\ud6a1\ub2e8", + "target": "concepts_completed_2026_09_03_additional_\ucd5c\uc2e0_\uacb0\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-04.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_04", + "target": "concepts_completed_2026_09_04_2026_09_04_\uc644\ub8cc_\ud56d\ubaa9", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-04.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_04", + "target": "concepts_drainage_watershed", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-04.md", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_04", + "target": "concepts_ui_templates", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-04.md", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_04_2026_09_04_\uc644\ub8cc_\ud56d\ubaa9", + "target": "concepts_completed_2026_09_04_700\uc904_\uc81c\ud55c_\ubd84\ub9ac", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-04.md", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_04_2026_09_04_\uc644\ub8cc_\ud56d\ubaa9", + "target": "concepts_completed_2026_09_04_\ubcf4\uc874\ub41c_\ubbf8\uc644\ub8cc_\ubc94\uc704", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-04.md", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_04_2026_09_04_\uc644\ub8cc_\ud56d\ubaa9", + "target": "concepts_completed_2026_09_04_\uc0c1\uc2dc\uacc4\ud68d\uc11c_\ucd94\uac00_\uc644\ub8cc_\ubc94\uc704", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-04.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_04_2026_09_04_\uc644\ub8cc_\ud56d\ubaa9", + "target": "concepts_completed_2026_09_04_\uc644\ub8cc_\ubc94\uc704", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-04.md", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_04_2026_09_04_\uc644\ub8cc_\ud56d\ubaa9", + "target": "concepts_completed_2026_09_04_\ucd94\uac00_\uc644\ub8cc_\ubc94\uc704", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-07.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_07", + "target": "concepts_completed_2026_09_07_2026_09_07_\uc644\ub8cc_\ubcf4\ub958_\uc694\uc57d", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-07.md", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_07", + "target": "concepts_quantity_cost_contract", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "weight": 1.0, + "source_file": "concepts/completed_2026-09-07.md", + "source_location": "wikilink", + "_origin": "curated", + "source": "concepts_completed_2026_09_07", + "target": "pages_b06_section_b06_backend" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "weight": 1.0, + "source_file": "concepts/completed_2026-09-07.md", + "source_location": "wikilink", + "_origin": "curated", + "source": "concepts_completed_2026_09_07", + "target": "pages_b07_quantity_b07_frontend" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-07.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_07_2026_09_07_\uc644\ub8cc_\ubcf4\ub958_\uc694\uc57d", + "target": "concepts_completed_2026_09_07_\uc131\ub2a5_\uc6b4\uc601_\uacb0\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-07.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_07_2026_09_07_\uc644\ub8cc_\ubcf4\ub958_\uc694\uc57d", + "target": "concepts_completed_2026_09_07_\uc644\ub8cc_\ubc94\uc704", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-07.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_07_2026_09_07_\uc644\ub8cc_\ubcf4\ub958_\uc694\uc57d", + "target": "concepts_completed_2026_09_07_\uc8fc\uc758", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-09.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_09", + "target": "concepts_completed_2026_09_09_2026_09_09_\uc644\ub8cc_\uad6c\ud604_\uac80\uc99d", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-09.md", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_09", + "target": "concepts_quantity_cost_contract", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-09.md", + "source_location": "L52", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_09", + "target": "concepts_standard_quantity_open_2026_09_09", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-09.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_09_2026_09_09_\uc644\ub8cc_\uad6c\ud604_\uac80\uc99d", + "target": "concepts_completed_2026_09_09_b05_b06_\uc885\ud6a1\ub2e8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-09.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_09_2026_09_09_\uc644\ub8cc_\uad6c\ud604_\uac80\uc99d", + "target": "concepts_completed_2026_09_09_b07_\ud45c\uc900\ub3c4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-09.md", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_09_2026_09_09_\uc644\ub8cc_\uad6c\ud604_\uac80\uc99d", + "target": "concepts_completed_2026_09_09_b08_\uc218\ub7c9\uc0b0\ucd9c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-09.md", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_09_2026_09_09_\uc644\ub8cc_\uad6c\ud604_\uac80\uc99d", + "target": "concepts_completed_2026_09_09_b09_\uc6d0\uac00\uacc4\uc0b0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/completed_2026-09-09.md", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_completed_2026_09_09_2026_09_09_\uc644\ub8cc_\uad6c\ud604_\uac80\uc99d", + "target": "concepts_completed_2026_09_09_\uac80\uc99d_\uacbd\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/crs_metadata.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_crs_metadata", + "target": "concepts_crs_metadata_crs_\uba54\ud0c0\ub370\uc774\ud130_\uc815\uc0c1\ud654", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/crs_metadata.md", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_crs_metadata", + "target": "concepts_dependencies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/crs_metadata.md", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_crs_metadata_crs_\uba54\ud0c0\ub370\uc774\ud130_\uc815\uc0c1\ud654", + "target": "concepts_crs_metadata_\uac80\uc99d_\ubc94\uc704\uc640_\ubaa8\uc21c_\uc774\ub825", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/crs_metadata.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_crs_metadata_crs_\uba54\ud0c0\ub370\uc774\ud130_\uc815\uc0c1\ud654", + "target": "concepts_crs_metadata_\uac80\uc99d\ub41c_\ud310\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/crs_metadata.md", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_crs_metadata_crs_\uba54\ud0c0\ub370\uc774\ud130_\uc815\uc0c1\ud654", + "target": "concepts_crs_metadata_\ub370\uc774\ud130_\ud750\ub984", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/crs_metadata.md", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_crs_metadata_crs_\uba54\ud0c0\ub370\uc774\ud130_\uc815\uc0c1\ud654", + "target": "concepts_crs_metadata_\uc0ac\uc6a9\ucc98", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_files_surface", + "target": "concepts_db_schema_files_surface_db_\ud30c\uc77c_\uc9c0\ud45c\uba74\ubd84\uc11d_\ud14c\uc774\ube14", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L89", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_files_surface_db_\ud30c\uc77c_\uc9c0\ud45c\uba74\ubd84\uc11d_\ud14c\uc774\ube14", + "target": "concepts_db_schema_files_surface_input_files_status_\uac12", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_files_surface_db_\ud30c\uc77c_\uc9c0\ud45c\uba74\ubd84\uc11d_\ud14c\uc774\ube14", + "target": "concepts_db_schema_files_surface_input_files_\uc785\ub825_\uc6d0\ubcf8_\ud30c\uc77c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_files_surface_db_\ud30c\uc77c_\uc9c0\ud45c\uba74\ubd84\uc11d_\ud14c\uc774\ube14", + "target": "concepts_db_schema_files_surface_processed_point_cloud_status_\uac12", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_files_surface_db_\ud30c\uc77c_\uc9c0\ud45c\uba74\ubd84\uc11d_\ud14c\uc774\ube14", + "target": "concepts_db_schema_files_surface_processed_point_cloud_\ud544\ud130_\ubcc0\ud658_\ud3ec\uc778\ud2b8\ud074\ub77c\uc6b0\ub4dc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_files_surface_db_\ud30c\uc77c_\uc9c0\ud45c\uba74\ubd84\uc11d_\ud14c\uc774\ube14", + "target": "concepts_db_schema_files_surface_surface_models_status_\uac12", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_files_surface_db_\ud30c\uc77c_\uc9c0\ud45c\uba74\ubd84\uc11d_\ud14c\uc774\ube14", + "target": "concepts_db_schema_files_surface_surface_models_\uc9c0\ud45c\uba74_\ubaa8\ub378_\ubc0f_\ub4f1\uace0\uc120", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L77", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_files_surface_db_\ud30c\uc77c_\uc9c0\ud45c\uba74\ubd84\uc11d_\ud14c\uc774\ube14", + "target": "concepts_db_schema_files_surface_terrain_layers_\uc9c0\ud615_\ub808\uc774\uc5b4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_files_surface_db_\ud30c\uc77c_\uc9c0\ud45c\uba74\ubd84\uc11d_\ud14c\uc774\ube14", + "target": "concepts_db_schema_files_surface_upload_chunks_\uc5c5\ub85c\ub4dc_\uccad\ud06c_\ub370\uc774\ud130", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/files_surface.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_files_surface_db_\ud30c\uc77c_\uc9c0\ud45c\uba74\ubd84\uc11d_\ud14c\uc774\ube14", + "target": "concepts_db_schema_files_surface_upload_sessions_\uc5c5\ub85c\ub4dc_\uc138\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_logs_monitoring", + "target": "concepts_db_schema_logs_monitoring_db_\ub85c\uadf8_\ubaa8\ub2c8\ud130\ub9c1_\ud14c\uc774\ube14", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_logs_monitoring_db_\ub85c\uadf8_\ubaa8\ub2c8\ud130\ub9c1_\ud14c\uc774\ube14", + "target": "concepts_db_schema_logs_monitoring_activity_logs_\uc0ac\uc6a9\uc790_\ud65c\ub3d9_\ub85c\uadf8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_logs_monitoring_db_\ub85c\uadf8_\ubaa8\ub2c8\ud130\ub9c1_\ud14c\uc774\ube14", + "target": "concepts_db_schema_logs_monitoring_audit_logs_\uac10\uc0ac_\ub85c\uadf8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L84", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_logs_monitoring_db_\ub85c\uadf8_\ubaa8\ub2c8\ud130\ub9c1_\ud14c\uc774\ube14", + "target": "concepts_db_schema_logs_monitoring_change_logs_\uc124\uacc4_\ubcc0\uacbd_\uc774\ub825", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_logs_monitoring_db_\ub85c\uadf8_\ubaa8\ub2c8\ud130\ub9c1_\ud14c\uc774\ube14", + "target": "concepts_db_schema_logs_monitoring_login_logs_\ub85c\uadf8\uc778_\uc2dc\ub3c4_\ub85c\uadf8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L71", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_logs_monitoring_db_\ub85c\uadf8_\ubaa8\ub2c8\ud130\ub9c1_\ud14c\uc774\ube14", + "target": "concepts_db_schema_logs_monitoring_support_requests_\uae30\uc220_\uc9c0\uc6d0_\uc694\uccad", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L53", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_logs_monitoring_db_\ub85c\uadf8_\ubaa8\ub2c8\ud130\ub9c1_\ud14c\uc774\ube14", + "target": "concepts_db_schema_logs_monitoring_system_admin_logs_\uc2dc\uc2a4\ud15c_\uad00\ub9ac\uc790_\ud589\uc704_\ub85c\uadf8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_logs_monitoring_db_\ub85c\uadf8_\ubaa8\ub2c8\ud130\ub9c1_\ud14c\uc774\ube14", + "target": "concepts_db_schema_logs_monitoring_system_audit_logs_\uc0ac\uc6a9\ucc98_b01_b02", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_logs_monitoring_db_\ub85c\uadf8_\ubaa8\ub2c8\ud130\ub9c1_\ud14c\uc774\ube14", + "target": "concepts_db_schema_logs_monitoring_system_audit_logs_\ud504\ub85c\uc81d\ud2b8_\uc870\uc9c1_\ubcc0\uacbd_\uac10\uc0ac_\ub85c\uadf8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_logs_monitoring_db_\ub85c\uadf8_\ubaa8\ub2c8\ud130\ub9c1_\ud14c\uc774\ube14", + "target": "concepts_db_schema_logs_monitoring_system_resources_\uc2dc\uc2a4\ud15c_\uc790\uc6d0_\uacc4\uce21", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/logs_monitoring.md", + "source_location": "L98", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_logs_monitoring_db_\ub85c\uadf8_\ubaa8\ub2c8\ud130\ub9c1_\ud14c\uc774\ube14", + "target": "concepts_db_schema_logs_monitoring_\ub9ac\uc18c\uc2a4_api_system_admin_\uc804\uc6a9", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/overview.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_overview", + "target": "concepts_db_schema_overview_db_\uc2a4\ud0a4\ub9c8_\uac1c\uc694", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/storage_paths.md", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_storage_paths", + "target": "concepts_db_schema_overview", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/overview.md", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_overview_db_\uc2a4\ud0a4\ub9c8_\uac1c\uc694", + "target": "concepts_db_schema_overview_\uc124\uacc4_\uc6d0\uce59", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/overview.md", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_overview_db_\uc2a4\ud0a4\ub9c8_\uac1c\uc694", + "target": "concepts_db_schema_overview_\ud14c\uc774\ube14_\uad00\uacc4_\ud575\uc2ec_\ud750\ub984", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/overview.md", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_overview_db_\uc2a4\ud0a4\ub9c8_\uac1c\uc694", + "target": "concepts_db_schema_overview_\ud14c\uc774\ube14_\uadf8\ub8f9_9\uac1c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/overview.md", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_overview_db_\uc2a4\ud0a4\ub9c8_\uac1c\uc694", + "target": "concepts_db_schema_overview_\ud30c\uc77c_\uacbd\ub85c_\ucd94\uc801_\uceec\ub7fc_db\uc5d0_\uacbd\ub85c\ub9cc_\uae30\ub85d_\uc2e4_\ud30c\uc77c\uc740_\ud30c\uc77c\uc2dc\uc2a4\ud15c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/projects.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_projects", + "target": "concepts_db_schema_projects_db_\ud504\ub85c\uc81d\ud2b8_\uad00\ub9ac_\ud14c\uc774\ube14", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/projects.md", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_projects_db_\ud504\ub85c\uc81d\ud2b8_\uad00\ub9ac_\ud14c\uc774\ube14", + "target": "concepts_db_schema_projects_project_automations_\ud504\ub85c\uc81d\ud2b8_\uc790\ub3d9\ud654_\uc815\ucc45", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/projects.md", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_projects_db_\ud504\ub85c\uc81d\ud2b8_\uad00\ub9ac_\ud14c\uc774\ube14", + "target": "concepts_db_schema_projects_project_versions_\ud504\ub85c\uc81d\ud2b8_\ubc84\uc804_\uc2a4\ub0c5\uc0f7", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/projects.md", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_projects_db_\ud504\ub85c\uc81d\ud2b8_\uad00\ub9ac_\ud14c\uc774\ube14", + "target": "concepts_db_schema_projects_project_workflow_stages_\ub2e8\uacc4\ubcc4_\uc0c1\uc138_\uc0c1\ud0dc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/projects.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_projects_db_\ud504\ub85c\uc81d\ud2b8_\uad00\ub9ac_\ud14c\uc774\ube14", + "target": "concepts_db_schema_projects_projects_\ud504\ub85c\uc81d\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_route_profile", + "target": "concepts_db_schema_route_profile_db_\uacbd\ub85c_\uc885\ud6a1\ub2e8_\ud14c\uc774\ube14", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_route_profile_db_\uacbd\ub85c_\uc885\ud6a1\ub2e8_\ud14c\uc774\ube14", + "target": "concepts_db_schema_route_profile_cross_sections_data_structures", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_route_profile_db_\uacbd\ub85c_\uc885\ud6a1\ub2e8_\ud14c\uc774\ube14", + "target": "concepts_db_schema_route_profile_cross_sections_\ud6a1\ub2e8\uba74_\uc124\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_route_profile_db_\uacbd\ub85c_\uc885\ud6a1\ub2e8_\ud14c\uc774\ube14", + "target": "concepts_db_schema_route_profile_longitudinal_sections_\uc885\ub2e8\uba74_\uc124\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_route_profile_db_\uacbd\ub85c_\uc885\ud6a1\ub2e8_\ud14c\uc774\ube14", + "target": "concepts_db_schema_route_profile_route_points_\uacbd\ub85c_\uc88c\ud45c\uc810", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_route_profile_db_\uacbd\ub85c_\uc885\ud6a1\ub2e8_\ud14c\uc774\ube14", + "target": "concepts_db_schema_route_profile_route_statistics_\ub178\uc120_\ud1b5\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L82", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_route_profile_db_\uacbd\ub85c_\uc885\ud6a1\ub2e8_\ud14c\uc774\ube14", + "target": "concepts_db_schema_route_profile_routes_status_\ud750\ub984", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_route_profile_db_\uacbd\ub85c_\uc885\ud6a1\ub2e8_\ud14c\uc774\ube14", + "target": "concepts_db_schema_route_profile_routes_\ub178\uc120_\uacbd\ub85c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L63", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_route_profile_longitudinal_sections_\uc885\ub2e8\uba74_\uc124\uacc4", + "target": "concepts_db_schema_route_profile_data_\uceec\ub7fc_\ub0b4_options_\uc2a4\ub0c5\uc0f7_\uad6c\uc870_2026_07_19_\ub3c4\uc785", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/route_profile.md", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_route_profile_longitudinal_sections_\uc885\ub2e8\uba74_\uc124\uacc4", + "target": "concepts_db_schema_route_profile_data_\uceec\ub7fc_\ub0b4_profile_alignment_\uad6c\uc870_2026_07_23_\ub3c4\uc785", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/route_profile/longitudinal_alignment.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_route_profile_longitudinal_alignment", + "target": "concepts_db_schema_route_profile_longitudinal_alignment_db_longitudinal_sections_data_profile_alignment_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/structure_output.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_structure_output", + "target": "concepts_db_schema_structure_output_db_\uad6c\uc870\ubb3c_\uc218\ub7c9_\uc0b0\ucd9c\ubb3c_\ud14c\uc774\ube14", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/structure_output.md", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_structure_output_db_\uad6c\uc870\ubb3c_\uc218\ub7c9_\uc0b0\ucd9c\ubb3c_\ud14c\uc774\ube14", + "target": "concepts_db_schema_structure_output_output_files_\uac1c\ubcc4_\uc0b0\ucd9c_\ud30c\uc77c_\ub9ac\uc2a4\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/structure_output.md", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_structure_output_db_\uad6c\uc870\ubb3c_\uc218\ub7c9_\uc0b0\ucd9c\ubb3c_\ud14c\uc774\ube14", + "target": "concepts_db_schema_structure_output_outputs_\ucd5c\uc885_\uacac\uc801_\ub3c4\uba74_\uc0b0\ucd9c_\uc138\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/structure_output.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_structure_output_db_\uad6c\uc870\ubb3c_\uc218\ub7c9_\uc0b0\ucd9c\ubb3c_\ud14c\uc774\ube14", + "target": "concepts_db_schema_structure_output_quantity_items_\uc218\ub7c9_\uc0b0\ucd9c_\ud56d\ubaa9", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/structure_output.md", + "source_location": "L65", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_structure_output_db_\uad6c\uc870\ubb3c_\uc218\ub7c9_\uc0b0\ucd9c\ubb3c_\ud14c\uc774\ube14", + "target": "concepts_db_schema_structure_output_quantity_items_\ucd1d\ube44\uc6a9_\uacc4\uc0b0_\uc608", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/structure_output.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_structure_output_db_\uad6c\uc870\ubb3c_\uc218\ub7c9_\uc0b0\ucd9c\ubb3c_\ud14c\uc774\ube14", + "target": "concepts_db_schema_structure_output_structures_\ubc30\uce58_\uad6c\uc870\ubb3c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/unconfirmed/README.md", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_unconfirmed_readme", + "target": "concepts_db_schema_unconfirmed_readme_\ubbf8\ud655\uc815_\ud14c\uc774\ube14_\ubcf4\uad00\uc18c_unconfirmed_db_schemas", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/unconfirmed/README.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_unconfirmed_readme_\ubbf8\ud655\uc815_\ud14c\uc774\ube14_\ubcf4\uad00\uc18c_unconfirmed_db_schemas", + "target": "concepts_db_schema_unconfirmed_readme_\uc6b4\uc601_\uaddc\uce59", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/users_auth.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_users_auth", + "target": "concepts_db_schema_users_auth_db_\uc0ac\uc6a9\uc790_\uc778\uc99d_\uc870\uc9c1_\ud14c\uc774\ube14", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/users_auth.md", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_users_auth_db_\uc0ac\uc6a9\uc790_\uc778\uc99d_\uc870\uc9c1_\ud14c\uc774\ube14", + "target": "concepts_db_schema_users_auth_companies_\ud68c\uc0ac", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/users_auth.md", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_users_auth_db_\uc0ac\uc6a9\uc790_\uc778\uc99d_\uc870\uc9c1_\ud14c\uc774\ube14", + "target": "concepts_db_schema_users_auth_email_otps_\uc774\uba54\uc77c_otp", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/users_auth.md", + "source_location": "L73", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_users_auth_db_\uc0ac\uc6a9\uc790_\uc778\uc99d_\uc870\uc9c1_\ud14c\uc774\ube14", + "target": "concepts_db_schema_users_auth_join_requests_\ud68c\uc0ac_\uac00\uc785_\uc2e0\uccad", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/users_auth.md", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_users_auth_db_\uc0ac\uc6a9\uc790_\uc778\uc99d_\uc870\uc9c1_\ud14c\uc774\ube14", + "target": "concepts_db_schema_users_auth_sessions_\uc138\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/users_auth.md", + "source_location": "L65", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_users_auth_db_\uc0ac\uc6a9\uc790_\uc778\uc99d_\uc870\uc9c1_\ud14c\uc774\ube14", + "target": "concepts_db_schema_users_auth_trusted_devices_\uc2e0\ub8b0_\uae30\uae30", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/users_auth.md", + "source_location": "L84", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_users_auth_db_\uc0ac\uc6a9\uc790_\uc778\uc99d_\uc870\uc9c1_\ud14c\uc774\ube14", + "target": "concepts_db_schema_users_auth_user_consents_\uc57d\uad00_\ub3d9\uc758", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/db_schema/users_auth.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_db_schema_users_auth_db_\uc0ac\uc6a9\uc790_\uc778\uc99d_\uc870\uc9c1_\ud14c\uc774\ube14", + "target": "concepts_db_schema_users_auth_users_\uc0ac\uc6a9\uc790", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/dependencies.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_dependencies", + "target": "concepts_dependencies_\uc678\ubd80_\ub77c\uc774\ube0c\ub7ec\ub9ac_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/dependencies.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_dependencies", + "target": "concepts_ui_templates", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/dependencies.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_dependencies_\uc678\ubd80_\ub77c\uc774\ube0c\ub7ec\ub9ac_\uc758\uc874\uc131", + "target": "concepts_dependencies_\ubc31\uc5d4\ub4dc_python_3_12_7", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/dependencies.md", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_dependencies_\uc678\ubd80_\ub77c\uc774\ube0c\ub7ec\ub9ac_\uc758\uc874\uc131", + "target": "concepts_dependencies_\uc120\uc815_\uc6d0\uce59_agent_md_3\uc808", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/dependencies.md", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_dependencies_\uc678\ubd80_\ub77c\uc774\ube0c\ub7ec\ub9ac_\uc758\uc874\uc131", + "target": "concepts_dependencies_\ud504\ub860\ud2b8\uc5d4\ub4dc_typescript_node_js", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/design.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_design", + "target": "concepts_design_\ub514\uc790\uc778_\uc2dc\uc2a4\ud15c_design_system", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/design.md", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_design", + "target": "concepts_ui_templates", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/design.md", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_design_\ub514\uc790\uc778_\uc2dc\uc2a4\ud15c_design_system", + "target": "concepts_design_\ub808\uc774\uc544\uc6c3_\ubc0f_\ub465\uadfc_\ud14c\ub450\ub9ac_radius_spacing", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/design.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_design_\ub514\uc790\uc778_\uc2dc\uc2a4\ud15c_design_system", + "target": "concepts_design_\ube44\uc8fc\uc5bc_\ud14c\ub9c8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/design.md", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_design_\ub514\uc790\uc778_\uc2dc\uc2a4\ud15c_design_system", + "target": "concepts_design_\uc804\uc5ed_\uc2a4\ud06c\ub864\ubc14_\ub514\uc790\uc778_scrollbars", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/design.md", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_design_\ub514\uc790\uc778_\uc2dc\uc2a4\ud15c_design_system", + "target": "concepts_design_\ud0c0\uc774\ud3ec\uadf8\ub798\ud53c_typography", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/design.md", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_design_\ub514\uc790\uc778_\uc2dc\uc2a4\ud15c_design_system", + "target": "concepts_design_\ud575\uc2ec_\uc0c9\uc0c1_\ud1a0\ud070_colors", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/design_data_lifecycle.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_design_data_lifecycle", + "target": "concepts_design_data_lifecycle_\uc124\uacc4_\ub370\uc774\ud130_\uc0dd\uba85\uc8fc\uae30", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/design_data_lifecycle.md", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_design_data_lifecycle", + "target": "concepts_multi_environment_safety", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/design_data_lifecycle.md", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_design_data_lifecycle", + "target": "concepts_workflow_state", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/design_data_lifecycle.md", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_design_data_lifecycle_\uc124\uacc4_\ub370\uc774\ud130_\uc0dd\uba85\uc8fc\uae30", + "target": "concepts_design_data_lifecycle_\uacc4\uc0b0_\uad6c\ud604_\uc6d0\uce59", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/design_data_lifecycle.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_design_data_lifecycle_\uc124\uacc4_\ub370\uc774\ud130_\uc0dd\uba85\uc8fc\uae30", + "target": "concepts_design_data_lifecycle_\uacc4\ud68d\ub178\uc120_\uaddc\uce59", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/design_data_lifecycle.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_design_data_lifecycle_\uc124\uacc4_\ub370\uc774\ud130_\uc0dd\uba85\uc8fc\uae30", + "target": "concepts_design_data_lifecycle_\uc815\ubcf8_\uc138_\ubc8c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/drainage_watershed.md", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_drainage_watershed", + "target": "concepts_drainage_watershed_\ubc30\uc218\uc720\uc5ed_\ud574\uc11d_\ubc0f_\uc138\ubd80\uc124\uacc4_drainage_watershed", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/las_free_sheet_surface.md", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_las_free_sheet_surface", + "target": "concepts_drainage_watershed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/drainage_watershed.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_drainage_watershed_\ubc30\uc218\uc720\uc5ed_\ud574\uc11d_\ubc0f_\uc138\ubd80\uc124\uacc4_drainage_watershed", + "target": "concepts_drainage_watershed_1_b04_vs_b05_\uc5ed\ud560_\ubd84\ub2f4_\ubc0f_\uc77c\uc6d0\ud654", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/drainage_watershed.md", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_drainage_watershed_\ubc30\uc218\uc720\uc5ed_\ud574\uc11d_\ubc0f_\uc138\ubd80\uc124\uacc4_drainage_watershed", + "target": "concepts_drainage_watershed_2_\uacf5\uc6a9_\ubc30\uc218_\uc5d4\uc9c4_\ubc0f_wamis_\uac15\uc6b0\ub7c9_\uc5f0\ub3d9_phase_1_2_2026_08_13_\uad00\uce21\uc18c_\uc804\ud658", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/drainage_watershed.md", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_drainage_watershed_\ubc30\uc218\uc720\uc5ed_\ud574\uc11d_\ubc0f_\uc138\ubd80\uc124\uacc4_drainage_watershed", + "target": "concepts_drainage_watershed_3_\uad6c\uc870\ubb3c_3\ub2e8_\uc635\uc158_\uccb4\uacc4_ui_phase_3_5", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/drainage_watershed.md", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_drainage_watershed_\ubc30\uc218\uc720\uc5ed_\ud574\uc11d_\ubc0f_\uc138\ubd80\uc124\uacc4_drainage_watershed", + "target": "concepts_drainage_watershed_4_\ud574\uc11d_\uc54c\uace0\ub9ac\uc998_\ub4f1\uace0\uc120_\ud558\uac15_contour_descent", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/drainage_watershed.md", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_drainage_watershed_\ubc30\uc218\uc720\uc5ed_\ud574\uc11d_\ubc0f_\uc138\ubd80\uc124\uacc4_drainage_watershed", + "target": "concepts_drainage_watershed_5_\uc801\uc0c9_\uccad\uc0c9_\ud310\uc815_\ubc0f_\uc720\uc5ed_\ud655\uc7a5", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/drainage_watershed.md", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_drainage_watershed_\ubc30\uc218\uc720\uc5ed_\ud574\uc11d_\ubc0f_\uc138\ubd80\uc124\uacc4_drainage_watershed", + "target": "concepts_drainage_watershed_6_\ud3c9\uade0_\ud750\ub984_\ud654\uc0b4\ud45c_flow_arrows_\ubc0f_\ud750\ub984\uac15\ub3c4_\ub7a8\ud504", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/drainage_watershed.md", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_drainage_watershed_\ubc30\uc218\uc720\uc5ed_\ud574\uc11d_\ubc0f_\uc138\ubd80\uc124\uacc4_drainage_watershed", + "target": "concepts_drainage_watershed_7_\uc601\uad6c\uc800\uc7a5\uc18c_\uc0b0\ucd9c\ubb3c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/drainage_watershed.md", + "source_location": "L75", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_drainage_watershed_\ubc30\uc218\uc720\uc5ed_\ud574\uc11d_\ubc0f_\uc138\ubd80\uc124\uacc4_drainage_watershed", + "target": "concepts_drainage_watershed_8_b08_\uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/las_free_sheet_surface.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_las_free_sheet_surface", + "target": "concepts_las_free_sheet_surface_las_\uc5c6\ub294_\ub3c4\uc5fd\ub4f1\uace0\uc120_\uc11c\ud53c\uc2a4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/las_free_sheet_surface.md", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_las_free_sheet_surface_las_\uc5c6\ub294_\ub3c4\uc5fd\ub4f1\uace0\uc120_\uc11c\ud53c\uc2a4", + "target": "concepts_las_free_sheet_surface_e2e_\uacb0\uacfc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/las_free_sheet_surface.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_las_free_sheet_surface_las_\uc5c6\ub294_\ub3c4\uc5fd\ub4f1\uace0\uc120_\uc11c\ud53c\uc2a4", + "target": "concepts_las_free_sheet_surface_\uacc4\uc57d\uacfc_\ud655\uc815\uac12", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/las_free_sheet_surface.md", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_las_free_sheet_surface_las_\uc5c6\ub294_\ub3c4\uc5fd\ub4f1\uace0\uc120_\uc11c\ud53c\uc2a4", + "target": "concepts_las_free_sheet_surface_\ubbf8\uacb0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/las_free_sheet_surface.md", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_las_free_sheet_surface_las_\uc5c6\ub294_\ub3c4\uc5fd\ub4f1\uace0\uc120_\uc11c\ud53c\uc2a4", + "target": "concepts_las_free_sheet_surface_\ud750\ub984", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/law_source_quality.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_law_source_quality", + "target": "concepts_law_source_quality_\uc784\ub3c4\uae30\uc220\uad50\ubcf8_\uc6d0\ubb38_md_\ucd94\ucd9c_\ud488\uc9c8_\uacb0\ud568", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/standard_drawing_cost_inputs.md", + "source_location": "wikilink", + "weight": 1.0, + "_origin": "curated", + "confidence_score": 1.0, + "source": "concepts_standard_drawing_cost_inputs", + "target": "concepts_law_source_quality" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/law_source_quality.md", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_law_source_quality_\uc784\ub3c4\uae30\uc220\uad50\ubcf8_\uc6d0\ubb38_md_\ucd94\ucd9c_\ud488\uc9c8_\uacb0\ud568", + "target": "concepts_law_source_quality_\uacb0\ud568_\uc720\ud615_\uc608\uc2dc_\uc704_\ud30c\uc77c_\uae30\uc900_\uc904\ubc88\ud638", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/law_source_quality.md", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_law_source_quality_\uc784\ub3c4\uae30\uc220\uad50\ubcf8_\uc6d0\ubb38_md_\ucd94\ucd9c_\ud488\uc9c8_\uacb0\ud568", + "target": "concepts_law_source_quality_\uc6d0\uc778_\ucd94\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/law_source_quality.md", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_law_source_quality_\uc784\ub3c4\uae30\uc220\uad50\ubcf8_\uc6d0\ubb38_md_\ucd94\ucd9c_\ud488\uc9c8_\uacb0\ud568", + "target": "concepts_law_source_quality_\uc870\uce58_\uc0c1\ud0dc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/law_source_quality.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_law_source_quality_\uc784\ub3c4\uae30\uc220\uad50\ubcf8_\uc6d0\ubb38_md_\ucd94\ucd9c_\ud488\uc9c8_\uacb0\ud568", + "target": "concepts_law_source_quality_\ud655\uc778_\ubc94\uc704", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/mass_haul_diagram.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_mass_haul_diagram", + "target": "concepts_mass_haul_diagram_\uc720\ud1a0\uace1\uc120_mass_haul_diagram_\uacc4\uc0b0_\uba85\uc138", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "weight": 1.0, + "source_file": "pages/B08_Quantity/B08_overview_2026_09.md", + "source_location": "wikilink", + "_origin": "curated", + "source": "pages_b08_quantity_b08_overview_2026_09_b08_quantity_2026_09_\uc218\ub7c9\uc0b0\ucd9c", + "target": "concepts_mass_haul_diagram" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/mass_haul_diagram.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_mass_haul_diagram_\uc720\ud1a0\uace1\uc120_mass_haul_diagram_\uacc4\uc0b0_\uba85\uc138", + "target": "concepts_mass_haul_diagram_1_\uac1c\uc694_\ubc0f_\ubd84\uc11d_\ubaa9\uc801", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/mass_haul_diagram.md", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_mass_haul_diagram_\uc720\ud1a0\uace1\uc120_mass_haul_diagram_\uacc4\uc0b0_\uba85\uc138", + "target": "concepts_mass_haul_diagram_2_\uc8fc\uc694_\uacc4\uc0b0_\uc218\uc2dd_\ubc0f_\uc6d0\ub9ac_\uc2e4\ubb34_\uad00\ub840_\ubc18\uc601", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/mass_haul_diagram.md", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_mass_haul_diagram_\uc720\ud1a0\uace1\uc120_mass_haul_diagram_\uacc4\uc0b0_\uba85\uc138", + "target": "concepts_mass_haul_diagram_3_\uc9c0\ubc18\uc720\ud615\ubcc4_\ud1a0\ub7c9\ud658\uc0b0\uacc4\uc218_\uae30\ubcf8\uac12_config_system_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/mass_haul_diagram.md", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_mass_haul_diagram_\uc720\ud1a0\uace1\uc120_mass_haul_diagram_\uacc4\uc0b0_\uba85\uc138", + "target": "concepts_mass_haul_diagram_4_\ud1a0\uacf5_\uc6b4\ubc18\uc7a5\ube44_\uc120\uc815\uac70\ub9ac_\ubc0f_\ubd84\ubc30_\uae30\uc900_config_system_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/mass_haul_diagram.md", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_mass_haul_diagram_\uc720\ud1a0\uace1\uc120_mass_haul_diagram_\uacc4\uc0b0_\uba85\uc138", + "target": "concepts_mass_haul_diagram_5_\uc720\ud1a0\uace1\uc120_\uace1\uc120_\uc0ac\uc591_b06_\uad6c\ud604_v2", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/mass_haul_diagram.md", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_mass_haul_diagram_\uc720\ud1a0\uace1\uc120_mass_haul_diagram_\uacc4\uc0b0_\uba85\uc138", + "target": "concepts_mass_haul_diagram_6_\uc6f9\uc571_\uc5f0\ub3d9_\ubc0f_\uc2dc\uac01\ud654_\uba85\uc138_2026_08_02_\ud655\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/multi_environment_safety.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_multi_environment_safety", + "target": "concepts_multi_environment_safety_\ub2e4\uc911_\ud658\uacbd_\uc800\uc7a5\uc18c_\uacf5\uc6a9_db_\uc548\uc804", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/multi_environment_safety.md", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_multi_environment_safety", + "target": "concepts_storage_paths", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/multi_environment_safety.md", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_multi_environment_safety", + "target": "concepts_workflow_state", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/multi_environment_safety.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_multi_environment_safety_\ub2e4\uc911_\ud658\uacbd_\uc800\uc7a5\uc18c_\uacf5\uc6a9_db_\uc548\uc804", + "target": "concepts_multi_environment_safety_\uc5ec\uc12f_\uc6cc\ud06c\ud2b8\ub9ac_\uc6b4\uc601_\ud655\uc815\ud310", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/multi_environment_safety.md", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_multi_environment_safety_\ub2e4\uc911_\ud658\uacbd_\uc800\uc7a5\uc18c_\uacf5\uc6a9_db_\uc548\uc804", + "target": "concepts_multi_environment_safety_\uc644\ub8cc_\ud310\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/multi_environment_safety.md", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_multi_environment_safety_\ub2e4\uc911_\ud658\uacbd_\uc800\uc7a5\uc18c_\uacf5\uc6a9_db_\uc548\uc804", + "target": "concepts_multi_environment_safety_\uc6b4\uc601_\uaddc\uce59", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/multi_environment_safety.md", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_multi_environment_safety_\ub2e4\uc911_\ud658\uacbd_\uc800\uc7a5\uc18c_\uacf5\uc6a9_db_\uc548\uc804", + "target": "concepts_multi_environment_safety_\uc7ac\uacc4\uc0b0_\uc601\ud5a5", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/multi_environment_safety.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_multi_environment_safety_\ub2e4\uc911_\ud658\uacbd_\uc800\uc7a5\uc18c_\uacf5\uc6a9_db_\uc548\uc804", + "target": "concepts_multi_environment_safety_\ud655\uc778\ub41c_\uc704\ud5d8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/quantity_cost_contract.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_quantity_cost_contract", + "target": "concepts_quantity_cost_contract_b08_\uc218\ub7c9_b09_\uc6d0\uac00_\uacc4\uc57d", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/standard_drawing_cost_inputs.md", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_standard_drawing_cost_inputs", + "target": "concepts_quantity_cost_contract", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "weight": 1.0, + "source_file": "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md", + "source_location": "wikilink", + "_origin": "curated", + "source": "pages_b07_designdetail_b07_standard_drawings_2026_09_b07_\uad6c\uc870\ubb3c_\ud45c\uc900\ub3c4_\uc870\uc0ac_\ud569\uc758\uc640_\ud604\uc7ac_\ud1b5\ub85c", + "target": "concepts_quantity_cost_contract" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/quantity_cost_contract.md", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_quantity_cost_contract_b08_\uc218\ub7c9_b09_\uc6d0\uac00_\uacc4\uc57d", + "target": "concepts_quantity_cost_contract_\uae08\uc9c0_\uaddc\uce59", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/quantity_cost_contract.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_quantity_cost_contract_b08_\uc218\ub7c9_b09_\uc6d0\uac00_\uacc4\uc57d", + "target": "concepts_quantity_cost_contract_\uc800\uc7a5_\uc778\uacc4_\uaddc\uce59", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/quantity_cost_contract.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_quantity_cost_contract_b08_\uc218\ub7c9_b09_\uc6d0\uac00_\uacc4\uc57d", + "target": "concepts_quantity_cost_contract_\ucc45\uc784_\uacbd\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/schema_common.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_schema_common", + "target": "concepts_schema_common_\uacf5\ud1b5_\uc2a4\ud0a4\ub9c8_pydantic_\uc694\uccad_\uc751\ub2f5_\uaddc\uce59", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/schema_common.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_schema_common_\uacf5\ud1b5_\uc2a4\ud0a4\ub9c8_pydantic_\uc694\uccad_\uc751\ub2f5_\uaddc\uce59", + "target": "concepts_schema_common_\uac80\uc99d_\uc6d0\uce59_backend_md_4\uc808", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/schema_common.md", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_schema_common_\uacf5\ud1b5_\uc2a4\ud0a4\ub9c8_pydantic_\uc694\uccad_\uc751\ub2f5_\uaddc\uce59", + "target": "concepts_schema_common_\uba85\uba85_\uaddc\uce59", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/standard_drawing_cost_inputs.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_standard_drawing_cost_inputs", + "target": "concepts_standard_drawing_cost_inputs_\ud45c\uc900\ub3c4_\uc218\ub7c9_\uc6d0\uac00_\uc785\ub825\uc758_\ubbf8\uacb0_\uacbd\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "concepts/standard_quantity_open_2026-09-09.md", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_standard_quantity_open_2026_09_09", + "target": "concepts_standard_drawing_cost_inputs", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "weight": 1.0, + "source_file": "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md", + "source_location": "wikilink", + "_origin": "curated", + "source": "pages_b07_designdetail_b07_standard_drawings_2026_09_b07_\uad6c\uc870\ubb3c_\ud45c\uc900\ub3c4_\uc870\uc0ac_\ud569\uc758\uc640_\ud604\uc7ac_\ud1b5\ub85c", + "target": "concepts_standard_drawing_cost_inputs" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/standard_drawing_cost_inputs.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_standard_drawing_cost_inputs_\ud45c\uc900\ub3c4_\uc218\ub7c9_\uc6d0\uac00_\uc785\ub825\uc758_\ubbf8\uacb0_\uacbd\uacc4", + "target": "concepts_standard_drawing_cost_inputs_\uc0ac\uc6a9\uc790_\uc790\ub8cc_\ub300\uae30", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/standard_drawing_cost_inputs.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_standard_drawing_cost_inputs_\ud45c\uc900\ub3c4_\uc218\ub7c9_\uc6d0\uac00_\uc785\ub825\uc758_\ubbf8\uacb0_\uacbd\uacc4", + "target": "concepts_standard_drawing_cost_inputs_\uc7ac\uc870\uc0ac\ub85c_\ubc14\ub010_\ud310\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/standard_drawing_cost_inputs.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_standard_drawing_cost_inputs_\ud45c\uc900\ub3c4_\uc218\ub7c9_\uc6d0\uac00_\uc785\ub825\uc758_\ubbf8\uacb0_\uacbd\uacc4", + "target": "concepts_standard_drawing_cost_inputs_\ud655\uc778\ub41c_\ubd84\ub958", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/standard_quantity_open_2026-09-09.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_standard_quantity_open_2026_09_09", + "target": "concepts_standard_quantity_open_2026_09_09_2026_09_09_\ud45c\uc900\ub3c4_\uc218\ub7c9_\ubbf8\uacb0_\uadfc\uac70", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/standard_quantity_open_2026-09-09.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_standard_quantity_open_2026_09_09_2026_09_09_\ud45c\uc900\ub3c4_\uc218\ub7c9_\ubbf8\uacb0_\uadfc\uac70", + "target": "concepts_standard_quantity_open_2026_09_09_\uc5f0\uacb0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/standard_quantity_open_2026-09-09.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_standard_quantity_open_2026_09_09_2026_09_09_\ud45c\uc900\ub3c4_\uc218\ub7c9_\ubbf8\uacb0_\uadfc\uac70", + "target": "concepts_standard_quantity_open_2026_09_09_\uc801\uc6a9_\uc6d0\uce59", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/standard_quantity_open_2026-09-09.md", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_standard_quantity_open_2026_09_09_2026_09_09_\ud45c\uc900\ub3c4_\uc218\ub7c9_\ubbf8\uacb0_\uadfc\uac70", + "target": "concepts_standard_quantity_open_2026_09_09_\uc8fc\uc694_\ubbf8\uacb0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/storage_paths.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_storage_paths", + "target": "concepts_storage_paths_\uc800\uc7a5_\uacbd\ub85c_\uaddc\uce59_workflow_based_folder_structure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/storage_paths.md", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_storage_paths_\uc800\uc7a5_\uacbd\ub85c_\uaddc\uce59_workflow_based_folder_structure", + "target": "concepts_storage_paths_db_\uceec\ub7fc_\uc2e4\uc81c_\uacbd\ub85c_\ub9e4\ud551", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/storage_paths.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_storage_paths_\uc800\uc7a5_\uacbd\ub85c_\uaddc\uce59_workflow_based_folder_structure", + "target": "concepts_storage_paths_\uacbd\ub85c_\ud328\ud134", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/storage_paths.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_storage_paths_\uc800\uc7a5_\uacbd\ub85c_\uaddc\uce59_workflow_based_folder_structure", + "target": "concepts_storage_paths_\uc6d0\uce59_backend_md_3\uc808", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/storage_paths.md", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_storage_paths_\uc800\uc7a5_\uacbd\ub85c_\uaddc\uce59_workflow_based_folder_structure", + "target": "concepts_storage_paths_\ucf54\ub4dc_\uac10\uc0ac_\uc8fc\uc758\uc0ac\ud56d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/storage_paths.md", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_storage_paths_\uc800\uc7a5_\uacbd\ub85c_\uaddc\uce59_workflow_based_folder_structure", + "target": "concepts_storage_paths_\ud30c\uc77c\uba85_\uaddc\uce59_structure_md_1\uc808", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/temp_upload.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_temp_upload", + "target": "concepts_temp_upload_temp_upload_\ud504\ub85c\uc81d\ud2b8_\uc0dd\uc131_\uc804_\uc784\uc2dc_\ubcf4\uad00\ud568", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/temp_upload.md", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_temp_upload_temp_upload_\ud504\ub85c\uc81d\ud2b8_\uc0dd\uc131_\uc804_\uc784\uc2dc_\ubcf4\uad00\ud568", + "target": "concepts_temp_upload_\uc0ac\uc6a9\ucc98", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/temp_upload.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_temp_upload_temp_upload_\ud504\ub85c\uc81d\ud2b8_\uc0dd\uc131_\uc804_\uc784\uc2dc_\ubcf4\uad00\ud568", + "target": "concepts_temp_upload_\uc8fc\uc694_\uac1c\ub150_\ubc0f_\uc2a4\ud399", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/temp_upload.md", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_temp_upload_temp_upload_\ud504\ub85c\uc81d\ud2b8_\uc0dd\uc131_\uc804_\uc784\uc2dc_\ubcf4\uad00\ud568", + "target": "concepts_temp_upload_\uc8fc\uc694_\uad6c\uc131_\uc694\uc18c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/ui_templates.md", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_ui_templates", + "target": "concepts_ui_templates_ui_templates_localization_components", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/ui_templates.md", + "source_location": "L79", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_ui_templates_ui_templates_localization_components", + "target": "concepts_ui_templates_theme_css_\uc2a4\ud0c0\uc77c_\ubcc0\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/ui_templates.md", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_ui_templates_ui_templates_localization_components", + "target": "concepts_ui_templates_ui_template_elements_ts_\uacf5\ud1b5_\uc5d8\ub9ac\uba3c\ud2b8_\ud15c\ud50c\ub9bf", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/ui_templates.md", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_ui_templates_ui_templates_localization_components", + "target": "concepts_ui_templates_ui_template_general_blocks_ts_\uc77c\ubc18\uc5c5\ubb34_\uacf5\uc6a9_\ube14\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/ui_templates.md", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_ui_templates_ui_templates_localization_components", + "target": "concepts_ui_templates_ui_template_general_layout_ts_\uc77c\ubc18\uc5c5\ubb34_\ub808\uc774\uc544\uc6c3", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/ui_templates.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_ui_templates_ui_templates_localization_components", + "target": "concepts_ui_templates_ui_template_locale_ts_\ub2e4\uad6d\uc5b4_\uad00\ub9ac", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/ui_templates.md", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_ui_templates_ui_templates_localization_components", + "target": "concepts_ui_templates_ui_template_overlay_ts_\uc624\ubc84\ub808\uc774_\ucef4\ud3ec\ub10c\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/ui_templates.md", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_ui_templates_ui_templates_localization_components", + "target": "concepts_ui_templates_ui_template_palette_ts_\uc9c0\ub3c4_\ud314\ub808\ud2b8_\uce90\uc2f1_\uc720\ud2f8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/ui_templates.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_ui_templates_ui_templates_localization_components", + "target": "concepts_ui_templates_ui_template_resizer_ts_\ud328\ub110_\ub9ac\uc0ac\uc774\uc800_\ud15c\ud50c\ub9bf", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/ui_templates.md", + "source_location": "L72", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_ui_templates_ui_templates_localization_components", + "target": "concepts_ui_templates_ui_template_workflow_layout_ts_\uc5d4\uc9c0\ub2c8\uc5b4\ub9c1_\ub808\uc774\uc544\uc6c3", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/ui_templates.md", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_ui_templates_ui_templates_localization_components", + "target": "concepts_ui_templates_\ub0a8\uc740_\ud30c\uc77c_\ud55c\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/ui_templates.md", + "source_location": "L90", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_ui_templates_ui_templates_localization_components", + "target": "concepts_ui_templates_\uc81c\uc57d_backend_md_1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/workflow_state.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_workflow_state", + "target": "concepts_workflow_state_workflow_\uc0c1\ud0dc_\uad00\ub9ac", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/workflow_state.md", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_workflow_state_workflow_\uc0c1\ud0dc_\uad00\ub9ac", + "target": "concepts_workflow_state_r1_\uc6cc\ud06c\ud50c\ub85c\uc6b0_\ub2e8\uacc4_\uc7ac\ud3b8_2026_08_08_\ubc18\uc601", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/workflow_state.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_workflow_state_workflow_\uc0c1\ud0dc_\uad00\ub9ac", + "target": "concepts_workflow_state_ssot_project_workflow_stages_\ud14c\uc774\ube14_\uc2e4_db_\ud655\uc778", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/workflow_state.md", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_workflow_state_workflow_\uc0c1\ud0dc_\uad00\ub9ac", + "target": "concepts_workflow_state_\uacf5\ud1b5_\uc720\ud2f8_common_util_common_util_workflow_state_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/workflow_state.md", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_workflow_state_workflow_\uc0c1\ud0dc_\uad00\ub9ac", + "target": "concepts_workflow_state_\ubb34\ud6a8\ud654\uc758_\uc2e4\uc81c_\ubc94\uc704", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/workflow_state.md", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_workflow_state_workflow_\uc0c1\ud0dc_\uad00\ub9ac", + "target": "concepts_workflow_state_\ubc31\uadf8\ub77c\uc6b4\ub4dc_\uc790\ub3d9_\uacc4\uc0b0_\uccb4\uc778_\ubc0f_\uc0ac\uc6a9\uc790_\uc124\uc815_\uc774\uc6d4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/workflow_state.md", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_workflow_state_workflow_\uc0c1\ud0dc_\uad00\ub9ac", + "target": "concepts_workflow_state_\uc870\ud68c_api", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "concepts/workflow_state.md", + "source_location": "L63", + "weight": 1.0, + "_origin": "ast", + "source": "concepts_workflow_state_workflow_\uc0c1\ud0dc_\uad00\ub9ac", + "target": "concepts_workflow_state_\ud504\ub860\ud2b8\uc5d4\ub4dc_\uac8c\uc774\ud305_\ubc0f_\uc2a4\ud15d\ubc14_\uc5f0\ub3d9", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "graphify-out/memory/query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918__\uc784\ub3c4\uc5d0\uc11c.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "graphify_out_memory_query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_\uc784\ub3c4\uc5d0\uc11c", + "target": "graphify_out_memory_query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_\uc784\ub3c4\uc5d0\uc11c_q_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_\uc784\ub3c4\uc5d0\uc11c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "graphify-out/memory/query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918__\uc784\ub3c4\uc5d0\uc11c.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "graphify_out_memory_query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_\uc784\ub3c4\uc5d0\uc11c_q_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_\uc784\ub3c4\uc5d0\uc11c", + "target": "graphify_out_memory_query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_\uc784\ub3c4\uc5d0\uc11c_answer", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "graphify-out/memory/query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918__\uc784\ub3c4\uc5d0\uc11c.md", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast", + "source": "graphify_out_memory_query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_\uc784\ub3c4\uc5d0\uc11c_q_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_\uc784\ub3c4\uc5d0\uc11c", + "target": "graphify_out_memory_query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_\uc784\ub3c4\uc5d0\uc11c_outcome", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "graphify-out/memory/query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918__\uc784\ub3c4\uc5d0\uc11c.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "graphify_out_memory_query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_\uc784\ub3c4\uc5d0\uc11c_q_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_\uc784\ub3c4\uc5d0\uc11c", + "target": "graphify_out_memory_query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_\uc784\ub3c4\uc5d0\uc11c_source_nodes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "graphify-out/memory/query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "graphify_out_memory_query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918", + "target": "graphify_out_memory_query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_q_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "graphify-out/memory/query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "graphify_out_memory_query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_q_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918", + "target": "graphify_out_memory_query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_answer", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "graphify-out/memory/query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918.md", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast", + "source": "graphify_out_memory_query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_q_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918", + "target": "graphify_out_memory_query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_outcome", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "graphify-out/memory/query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "graphify_out_memory_query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_q_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918", + "target": "graphify_out_memory_query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918_source_nodes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "index.md", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast", + "source": "index", + "target": "index_wiki_index", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "index.md", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast", + "source": "index_wiki_index", + "target": "index_\uacf5\ud1b5_\uac1c\ub150", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "index.md", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast", + "source": "index_wiki_index", + "target": "index_\ub85c\uadf8\uc778_\uc804_\uad00\ub9ac", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "index.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "index_wiki_index", + "target": "index_\ub85c\uadf8\uc778_\ud6c4_\uae30\ub2a5", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "index.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "index_wiki_index", + "target": "index_\uc6b0\uc120_\uc9c4\uc785\uc810", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "index.md", + "source_location": "L75", + "weight": 1.0, + "_origin": "ast", + "source": "index_wiki_index", + "target": "index_\ud604\uc7ac_\uc8fc\uc758\uc0ac\ud56d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A00_Common/A00_Common.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a00_common_a00_common", + "target": "pages_a00_common_a00_common_a00_common_\uacf5\ud1b5_\ud504\ub808\uc784\uc6cc\ud06c_\uc720\ud2f8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A00_Common/A00_Common.md", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a00_common_a00_common_a00_common_\uacf5\ud1b5_\ud504\ub808\uc784\uc6cc\ud06c_\uc720\ud2f8", + "target": "pages_a00_common_a00_common_\uac1c\uc694", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A00_Common/A00_Common.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a00_common_a00_common_a00_common_\uacf5\ud1b5_\ud504\ub808\uc784\uc6cc\ud06c_\uc720\ud2f8", + "target": "pages_a00_common_a00_common_\uc138\ubd84\ud654_\ub9c8\ud06c\ub2e4\uc6b4_\ubb38\uc11c_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A00_Common/frontend/A00_Common_AppShell.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a00_common_frontend_a00_common_appshell", + "target": "pages_a00_common_frontend_a00_common_appshell_app_shell_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A00_Common/frontend/A00_Common_AppShell.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a00_common_frontend_a00_common_appshell_app_shell_ts", + "target": "pages_a00_common_frontend_a00_common_appshell_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A00_Common/frontend/A00_Common_AppShell.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a00_common_frontend_a00_common_appshell_app_shell_ts", + "target": "pages_a00_common_frontend_a00_common_appshell_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A00_Common/frontend/A00_Common_Router.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a00_common_frontend_a00_common_router", + "target": "pages_a00_common_frontend_a00_common_router_router_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A00_Common/frontend/A00_Common_Router.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a00_common_frontend_a00_common_router_router_ts", + "target": "pages_a00_common_frontend_a00_common_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A00_Common/frontend/A00_Common_Router.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a00_common_frontend_a00_common_router_router_ts", + "target": "pages_a00_common_frontend_a00_common_router_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A01_Home/A01_components.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a01_home_a01_components", + "target": "pages_a01_home_a01_components_a01_home_\uc138\ubd80_\uad6c\ud604", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A01_Home/A01_components.md", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a01_home_a01_components_a01_home_\uc138\ubd80_\uad6c\ud604", + "target": "pages_a01_home_a01_components_\ub370\uc774\ud130_\ud750\ub984", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A01_Home/A01_components.md", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a01_home_a01_components_a01_home_\uc138\ubd80_\uad6c\ud604", + "target": "pages_a01_home_a01_components_\ubbf8\ud574\uacb0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A01_Home/A01_components.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a01_home_a01_components_a01_home_\uc138\ubd80_\uad6c\ud604", + "target": "pages_a01_home_a01_components_\uc2a4\ud0c0\uc77c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A01_Home/A01_components.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a01_home_a01_components_a01_home_\uc138\ubd80_\uad6c\ud604", + "target": "pages_a01_home_a01_components_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A01_Home/A01_frontend.md", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a01_home_a01_frontend", + "target": "pages_a01_home_a01_frontend_a01_home_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A01_Home/A01_frontend.md", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a01_home_a01_frontend_a01_home_frontend", + "target": "pages_a01_home_a01_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A01_Home/A01_frontend.md", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a01_home_a01_frontend_a01_home_frontend", + "target": "pages_a01_home_a01_frontend_\uc138\ubd80_\uad6c\ud604", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A01_Home/A01_frontend.md", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a01_home_a01_frontend_a01_home_frontend", + "target": "pages_a01_home_a01_frontend_\uc774\ubca4\ud2b8_\ud578\ub4e4\ub7ec", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A01_Home/A01_frontend.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a01_home_a01_frontend_a01_home_frontend", + "target": "pages_a01_home_a01_frontend_\ucef4\ud3ec\ub10c\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A01_Home/A01_frontend.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a01_home_a01_frontend_a01_home_frontend", + "target": "pages_a01_home_a01_frontend_\ud30c\uc77c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A01_Home/A01_frontend.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a01_home_a01_frontend_\ucef4\ud3ec\ub10c\ud2b8", + "target": "pages_a01_home_a01_frontend_hero_\uc139\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A01_Home/A01_frontend.md", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a01_home_a01_frontend_\ucef4\ud3ec\ub10c\ud2b8", + "target": "pages_a01_home_a01_frontend_\uc8fc\uc694_\uae30\ub2a5_\uc139\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A01_Home/A01_frontend.md", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a01_home_a01_frontend_\ucef4\ud3ec\ub10c\ud2b8", + "target": "pages_a01_home_a01_frontend_\ucd5c\uc2e0_\uc18c\uc2dd_\uc139\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A01_Home/frontend/A01_Home_UI_Page.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a01_home_frontend_a01_home_ui_page", + "target": "pages_a01_home_frontend_a01_home_ui_page_a01_home_ui_page_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A01_Home/frontend/A01_Home_UI_Page.md", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a01_home_frontend_a01_home_ui_page_a01_home_ui_page_ts", + "target": "pages_a01_home_frontend_a01_home_ui_page_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A01_Home/frontend/A01_Home_UI_Page.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a01_home_frontend_a01_home_ui_page_a01_home_ui_page_ts", + "target": "pages_a01_home_frontend_a01_home_ui_page_\uc8fc\uc694_\ud568\uc218_\ubc0f_\uc778\ud130\ud398\uc774\uc2a4_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A02_ProgDetail/A02_components.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a02_progdetail_a02_components", + "target": "pages_a02_progdetail_a02_components_a02_progdetail_\uc138\ubd80_\uad6c\ud604", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A02_ProgDetail/A02_components.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a02_progdetail_a02_components_a02_progdetail_\uc138\ubd80_\uad6c\ud604", + "target": "pages_a02_progdetail_a02_components_\ub370\uc774\ud130_\ud750\ub984", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A02_ProgDetail/A02_components.md", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a02_progdetail_a02_components_a02_progdetail_\uc138\ubd80_\uad6c\ud604", + "target": "pages_a02_progdetail_a02_components_\ubbf8\ud574\uacb0_\ud2b9\uc774\uc0ac\ud56d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A02_ProgDetail/A02_components.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a02_progdetail_a02_components_a02_progdetail_\uc138\ubd80_\uad6c\ud604", + "target": "pages_a02_progdetail_a02_components_\uc2a4\ud0c0\uc77c_css", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A02_ProgDetail/A02_components.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a02_progdetail_a02_components_a02_progdetail_\uc138\ubd80_\uad6c\ud604", + "target": "pages_a02_progdetail_a02_components_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A02_ProgDetail/A02_frontend.md", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a02_progdetail_a02_frontend", + "target": "pages_a02_progdetail_a02_frontend_a02_progdetail_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A02_ProgDetail/A02_frontend.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a02_progdetail_a02_frontend_a02_progdetail_frontend", + "target": "pages_a02_progdetail_a02_frontend_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A02_ProgDetail/A02_frontend.md", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a02_progdetail_a02_frontend_a02_progdetail_frontend", + "target": "pages_a02_progdetail_a02_frontend_\uc138\ubd80_\uad6c\ud604", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A02_ProgDetail/A02_frontend.md", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a02_progdetail_a02_frontend_a02_progdetail_frontend", + "target": "pages_a02_progdetail_a02_frontend_\uc81c\uc57d_\uc900\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A02_ProgDetail/A02_frontend.md", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a02_progdetail_a02_frontend_a02_progdetail_frontend", + "target": "pages_a02_progdetail_a02_frontend_\ucef4\ud3ec\ub10c\ud2b8_\ubd84\uc11d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A02_ProgDetail/frontend/A02_ProgDetail_UI_Page.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a02_progdetail_frontend_a02_progdetail_ui_page", + "target": "pages_a02_progdetail_frontend_a02_progdetail_ui_page_a02_progdetail_ui_page_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A02_ProgDetail/frontend/A02_ProgDetail_UI_Page.md", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a02_progdetail_frontend_a02_progdetail_ui_page_a02_progdetail_ui_page_ts", + "target": "pages_a02_progdetail_frontend_a02_progdetail_ui_page_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A02_ProgDetail/frontend/A02_ProgDetail_UI_Page.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a02_progdetail_frontend_a02_progdetail_ui_page_a02_progdetail_ui_page_ts", + "target": "pages_a02_progdetail_frontend_a02_progdetail_ui_page_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A03_CompDetail/A03_frontend.md", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a03_compdetail_a03_frontend", + "target": "pages_a03_compdetail_a03_frontend_a03_compdetail_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A03_CompDetail/A03_frontend.md", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a03_compdetail_a03_frontend_a03_compdetail_frontend", + "target": "pages_a03_compdetail_a03_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A03_CompDetail/A03_frontend.md", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a03_compdetail_a03_frontend_a03_compdetail_frontend", + "target": "pages_a03_compdetail_a03_frontend_\uc2a4\ud0c0\uc77c_css", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A03_CompDetail/A03_frontend.md", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a03_compdetail_a03_frontend_a03_compdetail_frontend", + "target": "pages_a03_compdetail_a03_frontend_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A03_CompDetail/A03_frontend.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a03_compdetail_a03_frontend_a03_compdetail_frontend", + "target": "pages_a03_compdetail_a03_frontend_\ucef4\ud3ec\ub10c\ud2b8_\uc139\uc158_\ube4c\ub354", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A03_CompDetail/A03_frontend.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a03_compdetail_a03_frontend_a03_compdetail_frontend", + "target": "pages_a03_compdetail_a03_frontend_\ud30c\uc77c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A03_CompDetail/A03_frontend.md", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a03_compdetail_a03_frontend_\uc2a4\ud0c0\uc77c_css", + "target": "pages_a03_compdetail_a03_frontend_css_\ud074\ub798\uc2a4_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A03_CompDetail/A03_frontend.md", + "source_location": "L63", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a03_compdetail_a03_frontend_\uc2a4\ud0c0\uc77c_css", + "target": "pages_a03_compdetail_a03_frontend_\ubc18\uc751\ud615", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a04_newshistory_a04_frontend", + "target": "pages_a04_newshistory_a04_frontend_a04_newshistory_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a04_newshistory_a04_frontend_a04_newshistory_frontend", + "target": "pages_a04_newshistory_a04_frontend_mock_\ub370\uc774\ud130_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a04_newshistory_a04_frontend_a04_newshistory_frontend", + "target": "pages_a04_newshistory_a04_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a04_newshistory_a04_frontend_a04_newshistory_frontend", + "target": "pages_a04_newshistory_a04_frontend_\ubbf8\ud574\uacb0_\uc0ac\ud56d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a04_newshistory_a04_frontend_a04_newshistory_frontend", + "target": "pages_a04_newshistory_a04_frontend_\uc2a4\ud0c0\uc77c_css", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L80", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a04_newshistory_a04_frontend_a04_newshistory_frontend", + "target": "pages_a04_newshistory_a04_frontend_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a04_newshistory_a04_frontend_a04_newshistory_frontend", + "target": "pages_a04_newshistory_a04_frontend_\ucef4\ud3ec\ub10c\ud2b8_\uc139\uc158_\ube4c\ub354", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a04_newshistory_a04_frontend_a04_newshistory_frontend", + "target": "pages_a04_newshistory_a04_frontend_\ud30c\uc77c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a04_newshistory_a04_frontend_\uc2a4\ud0c0\uc77c_css", + "target": "pages_a04_newshistory_a04_frontend_css_\ud074\ub798\uc2a4_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A04_NewsHistory/A04_frontend.md", + "source_location": "L77", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a04_newshistory_a04_frontend_\uc2a4\ud0c0\uc77c_css", + "target": "pages_a04_newshistory_a04_frontend_\ubc18\uc751\ud615", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A05_EduDetail/A05_frontend.md", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a05_edudetail_a05_frontend", + "target": "pages_a05_edudetail_a05_frontend_a05_edudetail_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A05_EduDetail/A05_frontend.md", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a05_edudetail_a05_frontend_a05_edudetail_frontend", + "target": "pages_a05_edudetail_a05_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A05_EduDetail/A05_frontend.md", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a05_edudetail_a05_frontend_a05_edudetail_frontend", + "target": "pages_a05_edudetail_a05_frontend_\uc2a4\ud0c0\uc77c_css", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A05_EduDetail/A05_frontend.md", + "source_location": "L67", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a05_edudetail_a05_frontend_a05_edudetail_frontend", + "target": "pages_a05_edudetail_a05_frontend_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A05_EduDetail/A05_frontend.md", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a05_edudetail_a05_frontend_a05_edudetail_frontend", + "target": "pages_a05_edudetail_a05_frontend_\uc774\ubca4\ud2b8_\ud578\ub4e4\ub7ec", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A05_EduDetail/A05_frontend.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a05_edudetail_a05_frontend_a05_edudetail_frontend", + "target": "pages_a05_edudetail_a05_frontend_\ucef4\ud3ec\ub10c\ud2b8_\uc139\uc158_\ube4c\ub354", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A05_EduDetail/A05_frontend.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a05_edudetail_a05_frontend_a05_edudetail_frontend", + "target": "pages_a05_edudetail_a05_frontend_\ud30c\uc77c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A05_EduDetail/A05_frontend.md", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a05_edudetail_a05_frontend_\uc2a4\ud0c0\uc77c_css", + "target": "pages_a05_edudetail_a05_frontend_css_\ud074\ub798\uc2a4_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A05_EduDetail/A05_frontend.md", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a05_edudetail_a05_frontend_\uc2a4\ud0c0\uc77c_css", + "target": "pages_a05_edudetail_a05_frontend_\ubc18\uc751\ud615", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/A06_backend.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_a06_backend", + "target": "pages_a06_login_a06_backend_a06_login_backend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/A06_backend.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_a06_backend_a06_login_backend", + "target": "pages_a06_login_a06_backend_api_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/A06_backend.md", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_a06_backend_a06_login_backend", + "target": "pages_a06_login_a06_backend_\ub0b4\ubd80_\ud5ec\ud37c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/A06_backend.md", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_a06_backend_a06_login_backend", + "target": "pages_a06_login_a06_backend_\ub85c\uadf8\uc778_\ub85c\uc9c1_\ud750\ub984", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/A06_backend.md", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_a06_backend_a06_login_backend", + "target": "pages_a06_login_a06_backend_\ubcf4\uc548_\uc815\ucc45_\uc2e4_\ucf54\ub4dc_\uae30\uc900", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/A06_backend.md", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_a06_backend_a06_login_backend", + "target": "pages_a06_login_a06_backend_\uc694\uccad_\uc2a4\ud0a4\ub9c8_pydantic", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/A06_backend.md", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_a06_backend_a06_login_backend", + "target": "pages_a06_login_a06_backend_\uc758\uc874\uc131_\uacf5\ud1b5_\uc720\ud2f8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/A06_backend.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_a06_backend_a06_login_backend", + "target": "pages_a06_login_a06_backend_\ud30c\uc77c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/A06_frontend.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_a06_frontend", + "target": "pages_a06_login_a06_frontend_a06_login_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/A06_frontend.md", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_a06_frontend_a06_login_frontend", + "target": "pages_a06_login_a06_frontend_api_\ud074\ub77c\uc774\uc5b8\ud2b8_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/A06_frontend.md", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_a06_frontend_a06_login_frontend", + "target": "pages_a06_login_a06_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/A06_frontend.md", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_a06_frontend_a06_login_frontend", + "target": "pages_a06_login_a06_frontend_\uc2a4\ud0c0\uc77c_css", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/A06_frontend.md", + "source_location": "L87", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_a06_frontend_a06_login_frontend", + "target": "pages_a06_login_a06_frontend_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/A06_frontend.md", + "source_location": "L78", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_a06_frontend_a06_login_frontend", + "target": "pages_a06_login_a06_frontend_\uc774\ubca4\ud2b8_\ud578\ub4e4\ub7ec", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/A06_frontend.md", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_a06_frontend_a06_login_frontend", + "target": "pages_a06_login_a06_frontend_\uc81c\ucd9c_\ubc0f_otp_\uc81c\uc5b4_\ub85c\uc9c1_2\ub2e8\uacc4_\ud3fc_\uc804\ud658", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/A06_frontend.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_a06_frontend_a06_login_frontend", + "target": "pages_a06_login_a06_frontend_\ucef4\ud3ec\ub10c\ud2b8_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/A06_frontend.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_a06_frontend_a06_login_frontend", + "target": "pages_a06_login_a06_frontend_\ud30c\uc77c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/backend/A06_Login_Router.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_backend_a06_login_router", + "target": "pages_a06_login_backend_a06_login_router_a06_login_router_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/backend/A06_Login_Router.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_backend_a06_login_router_a06_login_router_py", + "target": "pages_a06_login_backend_a06_login_router_\ub77c\uc6b0\ud130_api_\ubc0f_\uc8fc\uc694_\ud5ec\ud37c_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A06_Login/backend/A06_Login_Router.md", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a06_login_backend_a06_login_router_a06_login_router_py", + "target": "pages_a06_login_backend_a06_login_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/A07_backend.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_a07_backend", + "target": "pages_a07_register_a07_backend_a07_register_backend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/A07_backend.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_a07_backend_a07_register_backend", + "target": "pages_a07_register_a07_backend_api_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/A07_backend.md", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_a07_backend_a07_register_backend", + "target": "pages_a07_register_a07_backend_\uac00\uc785_\ub85c\uc9c1_\ud750\ub984", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/A07_backend.md", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_a07_backend_a07_register_backend", + "target": "pages_a07_register_a07_backend_\uc694\uccad_\uc2a4\ud0a4\ub9c8_pydantic", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/A07_backend.md", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_a07_backend_a07_register_backend", + "target": "pages_a07_register_a07_backend_\uc758\uc874\uc131_\uacf5\ud1b5_\uc720\ud2f8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/A07_backend.md", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_a07_backend_a07_register_backend", + "target": "pages_a07_register_a07_backend_\ucc38\uace0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/A07_backend.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_a07_backend_a07_register_backend", + "target": "pages_a07_register_a07_backend_\ud30c\uc77c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_a07_frontend", + "target": "pages_a07_register_a07_frontend_a07_register_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_a07_frontend_a07_register_frontend", + "target": "pages_a07_register_a07_frontend_api_\ud074\ub77c\uc774\uc5b8\ud2b8_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_a07_frontend_a07_register_frontend", + "target": "pages_a07_register_a07_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_a07_frontend_a07_register_frontend", + "target": "pages_a07_register_a07_frontend_\uc2a4\ud0c0\uc77c_css", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_a07_frontend_a07_register_frontend", + "target": "pages_a07_register_a07_frontend_\uc57d\uad00_\ub3d9\uc758_\uc544\ucf54\ub514\uc5b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_a07_frontend_a07_register_frontend", + "target": "pages_a07_register_a07_frontend_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L77", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_a07_frontend_a07_register_frontend", + "target": "pages_a07_register_a07_frontend_\uc774\ubca4\ud2b8_\ud578\ub4e4\ub7ec", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_a07_frontend_a07_register_frontend", + "target": "pages_a07_register_a07_frontend_\uc81c\ucd9c_\ub85c\uc9c1_2\ub2e8\uacc4_\ud3fc_\uc804\ud658", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_a07_frontend_a07_register_frontend", + "target": "pages_a07_register_a07_frontend_\ucef4\ud3ec\ub10c\ud2b8_\ud568\uc218_ui_auth_page_\uc2e4\uc0ac\uc6a9", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/A07_frontend.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_a07_frontend_a07_register_frontend", + "target": "pages_a07_register_a07_frontend_\ud30c\uc77c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/backend/A07_Register_Router.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_backend_a07_register_router", + "target": "pages_a07_register_backend_a07_register_router_a07_register_router_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/backend/A07_Register_Router.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_backend_a07_register_router_a07_register_router_py", + "target": "pages_a07_register_backend_a07_register_router_\ub77c\uc6b0\ud130_api_\ubc0f_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A07_Register/backend/A07_Register_Router.md", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a07_register_backend_a07_register_router_a07_register_router_py", + "target": "pages_a07_register_backend_a07_register_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/A08_backend.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_a08_backend", + "target": "pages_a08_support_a08_backend_a08_support_backend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/A08_backend.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_a08_backend_a08_support_backend", + "target": "pages_a08_support_a08_backend_api_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/A08_backend.md", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_a08_backend_a08_support_backend", + "target": "pages_a08_support_a08_backend_db_\uc800\uc7a5_\uceec\ub7fc_\uc2e4_\ucf54\ub4dc_insert_\uae30\uc900", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/A08_backend.md", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_a08_backend_a08_support_backend", + "target": "pages_a08_support_a08_backend_\ub0b4\ubd80_\ud5ec\ud37c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/A08_backend.md", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_a08_backend_a08_support_backend", + "target": "pages_a08_support_a08_backend_\uc694\uccad_\uc2a4\ud0a4\ub9c8_pydantic", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/A08_backend.md", + "source_location": "L57", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_a08_backend_a08_support_backend", + "target": "pages_a08_support_a08_backend_\uc758\uc874\uc131_\uacf5\ud1b5_\uc720\ud2f8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/A08_backend.md", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_a08_backend_a08_support_backend", + "target": "pages_a08_support_a08_backend_\uc811\uc218_\ub85c\uc9c1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/A08_backend.md", + "source_location": "L52", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_a08_backend_a08_support_backend", + "target": "pages_a08_support_a08_backend_\ud2b9\uc9d5", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/A08_backend.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_a08_backend_a08_support_backend", + "target": "pages_a08_support_a08_backend_\ud30c\uc77c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_a08_frontend", + "target": "pages_a08_support_a08_frontend_a08_support_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_a08_frontend_a08_support_frontend", + "target": "pages_a08_support_a08_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_a08_frontend_a08_support_frontend", + "target": "pages_a08_support_a08_frontend_\uc138\uc158_\uc790\ub3d9_\ucc44\uc6c0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_a08_frontend_a08_support_frontend", + "target": "pages_a08_support_a08_frontend_\uc2a4\ud0c0\uc77c_css", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L65", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_a08_frontend_a08_support_frontend", + "target": "pages_a08_support_a08_frontend_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_a08_frontend_a08_support_frontend", + "target": "pages_a08_support_a08_frontend_\uc774\ubca4\ud2b8_\ud578\ub4e4\ub7ec", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_a08_frontend_a08_support_frontend", + "target": "pages_a08_support_a08_frontend_\uc81c\ucd9c_\ub85c\uc9c1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L73", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_a08_frontend_a08_support_frontend", + "target": "pages_a08_support_a08_frontend_\ucc38\uace0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_a08_frontend_a08_support_frontend", + "target": "pages_a08_support_a08_frontend_\ucef4\ud3ec\ub10c\ud2b8_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/A08_frontend.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_a08_frontend_a08_support_frontend", + "target": "pages_a08_support_a08_frontend_\ud30c\uc77c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/backend/A08_Support_Router.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_backend_a08_support_router", + "target": "pages_a08_support_backend_a08_support_router_a08_support_router_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/backend/A08_Support_Router.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_backend_a08_support_router_a08_support_router_py", + "target": "pages_a08_support_backend_a08_support_router_\ub77c\uc6b0\ud130_api_\ubc0f_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A08_Support/backend/A08_Support_Router.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a08_support_backend_a08_support_router_a08_support_router_py", + "target": "pages_a08_support_backend_a08_support_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_backend", + "target": "pages_a09_security_a09_backend_a09_security_backend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_backend_a09_security_backend", + "target": "pages_a09_security_a09_backend_api_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_backend_a09_security_backend", + "target": "pages_a09_security_a09_backend_db_\uc800\uc7a5_activity_logs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_backend_a09_security_backend", + "target": "pages_a09_security_a09_backend_\uad8c\ud55c_\ud5ec\ud37c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_backend_a09_security_backend", + "target": "pages_a09_security_a09_backend_\uc694\uccad_\uc2a4\ud0a4\ub9c8_pydantic", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L67", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_backend_a09_security_backend", + "target": "pages_a09_security_a09_backend_\uc758\uc874\uc131_\uacf5\ud1b5_\uc720\ud2f8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L73", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_backend_a09_security_backend", + "target": "pages_a09_security_a09_backend_\ucc38\uace0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_backend_a09_security_backend", + "target": "pages_a09_security_a09_backend_\ud30c\uc77c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_backend_api_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "target": "pages_a09_security_a09_backend_\ub9c8\uc2a4\ud130_\ud68c\uc0ac_\uad00\ub9ac\uc790_\uc804\uc6a9_require_master", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_backend_api_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "target": "pages_a09_security_a09_backend_\uc2dc\uc2a4\ud15c_\uad00\ub9ac\uc790_\uc804\uc6a9_require_system_admin", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_backend.md", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_backend_api_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "target": "pages_a09_security_a09_backend_\uc778\uc99d_\uc0ac\uc6a9\uc790_\uacf5\ud1b5_verify_session", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_frontend.md", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_frontend", + "target": "pages_a09_security_a09_frontend_a09_security_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_frontend.md", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_frontend_a09_security_frontend", + "target": "pages_a09_security_a09_frontend_api_\ud074\ub77c\uc774\uc5b8\ud2b8_\ud568\uc218_\ubbf8\uc0ac\uc6a9_\uc815\uc758\ub9cc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_frontend.md", + "source_location": "L53", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_frontend_a09_security_frontend", + "target": "pages_a09_security_a09_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_frontend.md", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_frontend_a09_security_frontend", + "target": "pages_a09_security_a09_frontend_\uc2a4\ud0c0\uc77c_css", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_frontend.md", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_frontend_a09_security_frontend", + "target": "pages_a09_security_a09_frontend_\uc57d\uad00_\ub370\uc774\ud130_a09_security_terms_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_frontend.md", + "source_location": "L69", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_frontend_a09_security_frontend", + "target": "pages_a09_security_a09_frontend_\uc57d\uad00_\ud14d\uc2a4\ud2b8\uc640_\uc2e4_\ucf54\ub4dc_\ubd88\uc77c\uce58", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_frontend.md", + "source_location": "L75", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_frontend_a09_security_frontend", + "target": "pages_a09_security_a09_frontend_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_frontend.md", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_frontend_a09_security_frontend", + "target": "pages_a09_security_a09_frontend_\ucef4\ud3ec\ub10c\ud2b8_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/A09_frontend.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_a09_frontend_a09_security_frontend", + "target": "pages_a09_security_a09_frontend_\ud30c\uc77c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/backend/A09_Security_Router.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_backend_a09_security_router", + "target": "pages_a09_security_backend_a09_security_router_a09_security_router_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/backend/A09_Security_Router.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_backend_a09_security_router_a09_security_router_py", + "target": "pages_a09_security_backend_a09_security_router_\ub77c\uc6b0\ud130_api_\ubc0f_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/A09_Security/backend/A09_Security_Router.md", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast", + "source": "pages_a09_security_backend_a09_security_router_a09_security_router_py", + "target": "pages_a09_security_backend_a09_security_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_api.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_api", + "target": "pages_b01_dashboard_b01_api_b01_dashboard_api", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_api.md", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_api_b01_dashboard_api", + "target": "pages_b01_dashboard_b01_api_\uc0ac\uc6a9\uc790_\ud68c\uc0ac", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_api.md", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_api_b01_dashboard_api", + "target": "pages_b01_dashboard_b01_api_\uc2dc\uc2a4\ud15c_\uad00\ub9ac\uc790", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_api.md", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_api_b01_dashboard_api", + "target": "pages_b01_dashboard_b01_api_\ud504\ub85c\uc81d\ud2b8_\uc790\ub3d9\ud654", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_api.md", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_api_b01_dashboard_api", + "target": "pages_b01_dashboard_b01_api_\ud68c\uc0ac_\uad00\ub9ac\uc790", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_backend.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_backend", + "target": "pages_b01_dashboard_b01_backend_b01_dashboard_backend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_backend.md", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_backend_b01_dashboard_backend", + "target": "pages_b01_dashboard_b01_backend_\uae30\uc220\ubd80\ucc44", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_backend.md", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_backend_b01_dashboard_backend", + "target": "pages_b01_dashboard_b01_backend_\ub77c\uc6b0\ud130_\uad8c\ud55c_\ud5ec\ud37c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_backend.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_backend_b01_dashboard_backend", + "target": "pages_b01_dashboard_b01_backend_\uc138\ubd84\ud654_\ubc31\uc5d4\ub4dc_\uc704\ud0a4_\uba85\uc138", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_backend.md", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_backend_b01_dashboard_backend", + "target": "pages_b01_dashboard_b01_backend_\uc694\uccad_\uc2a4\ud0a4\ub9c8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_backend.md", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_backend_b01_dashboard_backend", + "target": "pages_b01_dashboard_b01_backend_\uc800\uc7a5\uc18c_\ubc0f_\uc0ad\uc81c_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_db.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_db", + "target": "pages_b01_dashboard_b01_db_b01_dashboard_db_\uc0ac\uc6a9_\uad00\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_db.md", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_db_b01_dashboard_db_\uc0ac\uc6a9_\uad00\uacc4", + "target": "pages_b01_dashboard_b01_db_\ud2b8\ub79c\uc7ad\uc158_\uacbd\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_dependencies.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_dependencies", + "target": "pages_b01_dashboard_b01_dependencies_b01_dashboard_dependencies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_dependencies.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_dependencies_b01_dashboard_dependencies", + "target": "pages_b01_dashboard_b01_dependencies_\ud504\ub85c\uc81d\ud2b8_\uacf5\ud1b5_\ubaa8\ub4c8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_frontend.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_frontend", + "target": "pages_b01_dashboard_b01_frontend_b01_dashboard_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_frontend.md", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_frontend_b01_dashboard_frontend", + "target": "pages_b01_dashboard_b01_frontend_ui_\uad8c\ud55c_\ud5ec\ud37c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_frontend.md", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_frontend_b01_dashboard_frontend", + "target": "pages_b01_dashboard_b01_frontend_\uacf5\uc720_\uc790\uc6d0_\uc5f0\uacb0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_frontend.md", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_frontend_b01_dashboard_frontend", + "target": "pages_b01_dashboard_b01_frontend_\ubaa8\ub2ec", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_frontend.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_frontend_b01_dashboard_frontend", + "target": "pages_b01_dashboard_b01_frontend_\ubd84\ud560\ub41c_ui_\ucef4\ud3ec\ub10c\ud2b8_\ud30c\uc77c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/B01_frontend.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_b01_frontend_b01_dashboard_frontend", + "target": "pages_b01_dashboard_b01_frontend_\ud30c\uc77c\uacfc_\uc9c4\uc785\uc810", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/backend/B01_Dashboard_Router.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_backend_b01_dashboard_router", + "target": "pages_b01_dashboard_backend_b01_dashboard_router_b01_dashboard_router_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/backend/B01_Dashboard_Router.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_backend_b01_dashboard_router_b01_dashboard_router_py", + "target": "pages_b01_dashboard_backend_b01_dashboard_router_\ub77c\uc6b0\ud130_api_\ubc0f_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/backend/B01_Dashboard_Router.md", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_backend_b01_dashboard_router_b01_dashboard_router_py", + "target": "pages_b01_dashboard_backend_b01_dashboard_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/frontend/B01_Dashboard_UI_Page.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_frontend_b01_dashboard_ui_page", + "target": "pages_b01_dashboard_frontend_b01_dashboard_ui_page_b01_dashboard_ui_page_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/frontend/B01_Dashboard_UI_Page.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_frontend_b01_dashboard_ui_page_b01_dashboard_ui_page_ts", + "target": "pages_b01_dashboard_frontend_b01_dashboard_ui_page_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B01_Dashboard/frontend/B01_Dashboard_UI_Page.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b01_dashboard_frontend_b01_dashboard_ui_page_b01_dashboard_ui_page_ts", + "target": "pages_b01_dashboard_frontend_b01_dashboard_ui_page_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_backend.md", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_backend", + "target": "pages_b02_projregister_b02_backend_b02_projregister_backend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_backend.md", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_backend_b02_projregister_backend", + "target": "pages_b02_projregister_b02_backend_api_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_backend.md", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_backend_b02_projregister_backend", + "target": "pages_b02_projregister_b02_backend_db_\uc800\uc7a5_\uceec\ub7fc_projects_insert", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_backend.md", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_backend_b02_projregister_backend", + "target": "pages_b02_projregister_b02_backend_\uc0dd\uc131_\ub85c\uc9c1_create_project_\ud2b8\ub79c\uc7ad\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_backend.md", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_backend_b02_projregister_backend", + "target": "pages_b02_projregister_b02_backend_\uc694\uccad_\uc751\ub2f5_\uc2a4\ud0a4\ub9c8_pydantic", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_backend.md", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_backend_b02_projregister_backend", + "target": "pages_b02_projregister_b02_backend_\uc758\uc874\uc131_\uacf5\ud1b5_\uc720\ud2f8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_backend.md", + "source_location": "L69", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_backend_b02_projregister_backend", + "target": "pages_b02_projregister_b02_backend_\ucc38\uace0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_backend.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_backend_b02_projregister_backend", + "target": "pages_b02_projregister_b02_backend_\ud30c\uc77c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_backend.md", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_backend_b02_projregister_backend", + "target": "pages_b02_projregister_b02_backend_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_db.md", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_db", + "target": "pages_b02_projregister_b02_db_b02_projregister_db", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_db.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_db_b02_projregister_db", + "target": "pages_b02_projregister_b02_db_\uc4f0\ub294_\ud14c\uc774\ube14", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_db.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_db_b02_projregister_db", + "target": "pages_b02_projregister_b02_db_\uc800\uc7a5\uc18c_\ud30c\uc77c\uc2dc\uc2a4\ud15c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_db.md", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_db_b02_projregister_db", + "target": "pages_b02_projregister_b02_db_\ucc38\uace0_\uacc4\ud68d_\ub2f9\uc2dc_\uc758\ub3c4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_frontend", + "target": "pages_b02_projregister_b02_frontend_b02_projregister_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_frontend_b02_projregister_frontend", + "target": "pages_b02_projregister_b02_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L57", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_frontend_b02_projregister_frontend", + "target": "pages_b02_projregister_b02_frontend_\uc2a4\ud0c0\uc77c_css", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L72", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_frontend_b02_projregister_frontend", + "target": "pages_b02_projregister_b02_frontend_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_frontend_b02_projregister_frontend", + "target": "pages_b02_projregister_b02_frontend_\uc774\ubca4\ud2b8_\ud578\ub4e4\ub7ec", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_frontend_b02_projregister_frontend", + "target": "pages_b02_projregister_b02_frontend_\uc785\ub825_\ud544\ub4dc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_frontend_b02_projregister_frontend", + "target": "pages_b02_projregister_b02_frontend_\uc81c\ucd9c_\ub85c\uc9c1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L80", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_frontend_b02_projregister_frontend", + "target": "pages_b02_projregister_b02_frontend_\ucc38\uace0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_frontend_b02_projregister_frontend", + "target": "pages_b02_projregister_b02_frontend_\ucef4\ud3ec\ub10c\ud2b8_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/B02_frontend.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_b02_frontend_b02_projregister_frontend", + "target": "pages_b02_projregister_b02_frontend_\ud30c\uc77c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/backend/B02_ProjRegister_Router.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_backend_b02_projregister_router", + "target": "pages_b02_projregister_backend_b02_projregister_router_b02_projregister_router_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/backend/B02_ProjRegister_Router.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_backend_b02_projregister_router_b02_projregister_router_py", + "target": "pages_b02_projregister_backend_b02_projregister_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B02_ProjRegister/backend/B02_ProjRegister_Router.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b02_projregister_backend_b02_projregister_router_b02_projregister_router_py", + "target": "pages_b02_projregister_backend_b02_projregister_router_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_FileInput_plan_lidar_multi_file.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_fileinput_plan_lidar_multi_file", + "target": "pages_b03_fileinput_b03_fileinput_plan_lidar_multi_file_b03_\ub2e4\uc911_\ub77c\uc774\ub2e4_\ud30c\uc77c_\ub300\uc6a9\ub7c9_\ucc98\ub9ac_\ubcf4\ub958_\uacc4\ud68d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_api.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_api", + "target": "pages_b03_fileinput_b03_api_b03_fileinput_api", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_api.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_api_b03_fileinput_api", + "target": "pages_b03_fileinput_b03_api_workflow_\uc870\ud68c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_api.md", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_api_b03_fileinput_api", + "target": "pages_b03_fileinput_b03_api_\uc77c\ubc18_\uc5c5\ub85c\ub4dc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_api.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_api_b03_fileinput_api", + "target": "pages_b03_fileinput_b03_api_\uccad\ud06c_\uc5c5\ub85c\ub4dc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_backend.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_backend", + "target": "pages_b03_fileinput_b03_backend_b03_fileinput_backend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_backend.md", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_backend_b03_fileinput_backend", + "target": "pages_b03_fileinput_b03_backend_workflow_\uc54c\ub9bc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_backend.md", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_backend_b03_fileinput_backend", + "target": "pages_b03_fileinput_b03_backend_\uba54\ud0c0\ub370\uc774\ud130_\ubd84\uc11d_\ubc0f_\ud30c\uc77c_\uc9c0\ubb38", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_backend.md", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_backend_b03_fileinput_backend", + "target": "pages_b03_fileinput_b03_backend_\uc784\uc2dc_\ubcf4\uad00\ud568_r2_temp_upload", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_backend.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_backend_b03_fileinput_backend", + "target": "pages_b03_fileinput_b03_backend_\uc785\ub825_\uac80\uc99d_\ud30c\uc77c_\ucc98\ub9ac", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_backend.md", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_backend_b03_fileinput_backend", + "target": "pages_b03_fileinput_b03_backend_\uc800\uc7a5\uc18c_\ubc0f_\ucd08\uae30\ud654", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_db.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_db", + "target": "pages_b03_fileinput_b03_db_b03_fileinput_db_\uc0ac\uc6a9_\uad00\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_db.md", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_db_b03_fileinput_db_\uc0ac\uc6a9_\uad00\uacc4", + "target": "pages_b03_fileinput_b03_db_\ud30c\uc77c_\uacbd\ub85c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_dependencies.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_dependencies", + "target": "pages_b03_fileinput_b03_dependencies_b03_fileinput_dependencies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_dependencies.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_dependencies_b03_fileinput_dependencies", + "target": "pages_b03_fileinput_b03_dependencies_\uacf5\ud1b5_\ubaa8\ub4c8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_frontend.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_frontend", + "target": "pages_b03_fileinput_b03_frontend_b03_fileinput_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_frontend.md", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_frontend_b03_fileinput_frontend", + "target": "pages_b03_fileinput_b03_frontend_api_\ud074\ub77c\uc774\uc5b8\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_frontend.md", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_frontend_b03_fileinput_frontend", + "target": "pages_b03_fileinput_b03_frontend_ui_\uc9c0\uc6d0_\uc720\ud2f8\ub9ac\ud2f0_\ubd84\ud560_\uc644\ub8cc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_frontend.md", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_frontend_b03_fileinput_frontend", + "target": "pages_b03_fileinput_b03_frontend_\ube0c\ub77c\uc6b0\uc800_\uc0c1\ud0dc_\uc624\ud504\ub77c\uc778_\ubcf4\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_frontend.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_frontend_b03_fileinput_frontend", + "target": "pages_b03_fileinput_b03_frontend_\ud398\uc774\uc9c0_\uc5c5\ub85c\ub4dc_\ud750\ub984", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_route_snapshot_crs.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_route_snapshot_crs", + "target": "pages_b03_fileinput_b03_route_snapshot_crs_b03_\uacc4\ud68d\ub178\uc120_\uc815\ubcf8_\uc88c\ud45c\uacc4_\ud6c4\uc18d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_route_snapshot_crs.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_route_snapshot_crs_b03_\uacc4\ud68d\ub178\uc120_\uc815\ubcf8_\uc88c\ud45c\uacc4_\ud6c4\uc18d", + "target": "pages_b03_fileinput_b03_route_snapshot_crs_las_\uc5c6\ub294_\uc124\uacc4\uc640_\uc5c5\ub85c\ub4dc_\uc0c1\ud0dc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_route_snapshot_crs.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_route_snapshot_crs_b03_\uacc4\ud68d\ub178\uc120_\uc815\ubcf8_\uc88c\ud45c\uacc4_\ud6c4\uc18d", + "target": "pages_b03_fileinput_b03_route_snapshot_crs_\uacc4\ud68d\ub178\uc120_\uc815\ubcf8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_upload_ui_2026_09.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_upload_ui_2026_09", + "target": "pages_b03_fileinput_b03_upload_ui_2026_09_b03_\ud30c\uc77c_\uc785\ub825_\ud654\uba74_\uc815\ub9ac", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_upload_ui_2026_09.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_upload_ui_2026_09_b03_\ud30c\uc77c_\uc785\ub825_\ud654\uba74_\uc815\ub9ac", + "target": "pages_b03_fileinput_b03_upload_ui_2026_09_\uc785\ub825_\uaddc\uce59", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/B03_upload_ui_2026_09.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_b03_upload_ui_2026_09_b03_\ud30c\uc77c_\uc785\ub825_\ud654\uba74_\uc815\ub9ac", + "target": "pages_b03_fileinput_b03_upload_ui_2026_09_\ud654\uba74_\uad6c\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/backend/B03_FileInput_Router.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_backend_b03_fileinput_router", + "target": "pages_b03_fileinput_backend_b03_fileinput_router_b03_fileinput_router_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/backend/B03_FileInput_Router.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_backend_b03_fileinput_router_b03_fileinput_router_py", + "target": "pages_b03_fileinput_backend_b03_fileinput_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B03_FileInput/backend/B03_FileInput_Router.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b03_fileinput_backend_b03_fileinput_router_b03_fileinput_router_py", + "target": "pages_b03_fileinput_backend_b03_fileinput_router_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_api.md", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_api", + "target": "pages_b04_preprocess_b04_api_b04_preprocess_api", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_api.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_api_b04_preprocess_api", + "target": "pages_b04_preprocess_b04_api_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_api.md", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_api_b04_preprocess_api", + "target": "pages_b04_preprocess_b04_api_\uc694\uccad_\uc751\ub2f5_\uc2a4\ud0a4\ub9c8_pydantic", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_backend", + "target": "pages_b04_preprocess_b04_backend_b04_preprocess_backend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "source_location": "L97", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_backend_b04_preprocess_backend", + "target": "pages_b04_preprocess_b04_backend_2d_gis_\ubbf8\ud45c\uc2dc_\uc6d0\uc778_\ubd84\uc11d_\ubc0f_\uc870\uce58", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_backend_b04_preprocess_backend", + "target": "pages_b04_preprocess_b04_backend_\uad6c\ud604_\uc608\uc678_\ucc98\ub9ac_\uac80\ud1a0_\ud56d\ubaa9_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "source_location": "L82", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_backend_b04_preprocess_backend", + "target": "pages_b04_preprocess_b04_backend_\uc124\uc815_\ubc0f_\ud658\uacbd_\ud30c\uc77c_\uc815\ud569\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_backend_b04_preprocess_backend", + "target": "pages_b04_preprocess_b04_backend_\uc218\uce58\uc9c0\ud615\ub3c4_\ub3c4\uc5fd_\uc624\ubc84\ub808\uc774_\uc544\ud0a4\ud14d\ucc98_2026_07_26_2026_08_01_s8_\uac1c\ud3b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_backend_b04_preprocess_backend", + "target": "pages_b04_preprocess_b04_backend_\uc5d4\uc9c4_\uc11c\ube0c\ubaa8\ub4c8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "source_location": "L75", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_backend_b04_preprocess_backend", + "target": "pages_b04_preprocess_b04_backend_\uc6cc\ud06c\ud50c\ub85c\uc6b0_\uc0c1\ud0dc_\uc804\uc774_\ubc0f_\uc790\ub3d9_\ud655\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_backend_b04_preprocess_backend", + "target": "pages_b04_preprocess_b04_backend_\uc8fc\uc694_\ud568\uc218_router_repository_engine_utility", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_backend.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_backend_b04_preprocess_backend", + "target": "pages_b04_preprocess_b04_backend_\ud30c\uc77c_\uad6c\uc131_\uc624\ucf00\uc2a4\ud2b8\ub808\uc774\ud130_\uc800\uc7a5\uc18c_\ub77c\uc6b0\ud130", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_compass_crs_2026_09.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_compass_crs_2026_09", + "target": "pages_b04_preprocess_b04_compass_crs_2026_09_b04_3d_\ubc29\uc704_\uc88c\ud45c\uacc4_\ucd5c\uc2e0_\uacb0\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_compass_crs_2026_09.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_compass_crs_2026_09_b04_3d_\ubc29\uc704_\uc88c\ud45c\uacc4_\ucd5c\uc2e0_\uacb0\uc815", + "target": "pages_b04_preprocess_b04_compass_crs_2026_09_3d_\ubc29\uc704_\uc704\uc82f", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_compass_crs_2026_09.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_compass_crs_2026_09_b04_3d_\ubc29\uc704_\uc88c\ud45c\uacc4_\ucd5c\uc2e0_\uacb0\uc815", + "target": "pages_b04_preprocess_b04_compass_crs_2026_09_\uc791\uc5c5_\uc88c\ud45c\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_db.md", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_db", + "target": "pages_b04_preprocess_b04_db_b04_preprocess_db", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_db.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_db_b04_preprocess_db", + "target": "pages_b04_preprocess_b04_db_repository_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_db.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_db_b04_preprocess_db", + "target": "pages_b04_preprocess_b04_db_\uc4f0\ub294_\ud14c\uc774\ube14", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_db.md", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_db_b04_preprocess_db", + "target": "pages_b04_preprocess_b04_db_\ucc38\uace0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_dependencies.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_dependencies", + "target": "pages_b04_preprocess_b04_dependencies_b04_preprocess_dependencies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_dependencies.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_dependencies_b04_preprocess_dependencies", + "target": "pages_b04_preprocess_b04_dependencies_\ubc31\uc5d4\ub4dc_python", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_dependencies.md", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_dependencies_b04_preprocess_dependencies", + "target": "pages_b04_preprocess_b04_dependencies_\ud504\ub860\ud2b8\uc5d4\ub4dc_typescript", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_drainage_compass_crs.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_drainage_compass_crs", + "target": "pages_b04_preprocess_b04_drainage_compass_crs_b04_\uc138\ubd80\uc720\uc5ed_\ubc29\uc704_\uc88c\ud45c\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_drainage_compass_crs.md", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_drainage_compass_crs_b04_\uc138\ubd80\uc720\uc5ed_\ubc29\uc704_\uc88c\ud45c\uacc4", + "target": "pages_b04_preprocess_b04_drainage_compass_crs_3d_\ubc29\uc704\uc640_\uc88c\ud45c\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_drainage_compass_crs.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_drainage_compass_crs_b04_\uc138\ubd80\uc720\uc5ed_\ubc29\uc704_\uc88c\ud45c\uacc4", + "target": "pages_b04_preprocess_b04_drainage_compass_crs_\uc138\ubd80\uc720\uc5ed_\ud615\uc0c1_\ubcf4\uc874", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_drainage_compass_crs.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_drainage_compass_crs_b04_\uc138\ubd80\uc720\uc5ed_\ubc29\uc704_\uc88c\ud45c\uacc4", + "target": "pages_b04_preprocess_b04_drainage_compass_crs_\uc885\ub2e8_\ub192\ub0ae\uc774_\uae30\ubc18_\ubc30\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_frontend", + "target": "pages_b04_preprocess_b04_frontend_b04_preprocess_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_frontend_b04_preprocess_frontend", + "target": "pages_b04_preprocess_b04_frontend_3d_\ubdf0\uc5b4_dom_\ub9c8\uc6b4\ud2b8_\ubc84\uadf8_\uc218\ub9ac", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_frontend_b04_preprocess_frontend", + "target": "pages_b04_preprocess_b04_frontend_3d_\ubdf0\uc5b4_\ud14c\ub9c8_\uc5f0\ub3d9_\ubc0f_\uac00\ub3c5\uc131_\uac1c\uc120", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "source_location": "L73", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_frontend_b04_preprocess_frontend", + "target": "pages_b04_preprocess_b04_frontend_3d_\uce74\uba54\ub77c_\ucee4\uc11c_\ud53c\ubd07_2d_\uc624\ubc84\ub808\uc774_ui_\uac1c\uc120_2026_08_01_02_\uc77c\uc6d0\ud654", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_frontend_b04_preprocess_frontend", + "target": "pages_b04_preprocess_b04_frontend_\uacc4\ud68d\uc11c\uc640_\uc2e4_\ucf54\ub4dc_\ubd88\uc77c\uce58_3d_\ubdf0\uc5b4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "source_location": "L82", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_frontend_b04_preprocess_frontend", + "target": "pages_b04_preprocess_b04_frontend_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "source_location": "L65", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_frontend_b04_preprocess_frontend", + "target": "pages_b04_preprocess_b04_frontend_\ucc98\ub9ac_\ud750\ub984", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_frontend_b04_preprocess_frontend", + "target": "pages_b04_preprocess_b04_frontend_\ucef4\ud3ec\ub10c\ud2b8_api_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/B04_frontend.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_b04_frontend_b04_preprocess_frontend", + "target": "pages_b04_preprocess_b04_frontend_\ud30c\uc77c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/backend/B04_PreProcess_Router.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_backend_b04_preprocess_router", + "target": "pages_b04_preprocess_backend_b04_preprocess_router_b04_preprocess_router_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/backend/B04_PreProcess_Router.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_backend_b04_preprocess_router_b04_preprocess_router_py", + "target": "pages_b04_preprocess_backend_b04_preprocess_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B04_PreProcess/backend/B04_PreProcess_Router.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b04_preprocess_backend_b04_preprocess_router_b04_preprocess_router_py", + "target": "pages_b04_preprocess_backend_b04_preprocess_router_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-18.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_profile_plan_2026_08_18", + "target": "pages_b05_profile_b05_profile_plan_2026_08_18_b05_\uad6c\uc870\ubb3c_ui_\ud604\uc7ac_\uacc4\ud68d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-18.md", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_profile_plan_2026_08_18_b05_\uad6c\uc870\ubb3c_ui_\ud604\uc7ac_\uacc4\ud68d", + "target": "pages_b05_profile_b05_profile_plan_2026_08_18_2026_08_18_b05_\ud398\uc774\uc9c0_\uac1c\uc120_2\ucc28_\uacc4\ud68d_\uae30\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-18.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_profile_plan_2026_08_18_b05_\uad6c\uc870\ubb3c_ui_\ud604\uc7ac_\uacc4\ud68d", + "target": "pages_b05_profile_b05_profile_plan_2026_08_18_2026_08_18_\uc0ac\uc774\ub4dc_\ud328\ub110_\uc785\ub825_\ub85c\uc9c1_\uacc4\ud68d_\uae30\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-18.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_profile_plan_2026_08_18_b05_\uad6c\uc870\ubb3c_ui_\ud604\uc7ac_\uacc4\ud68d", + "target": "pages_b05_profile_b05_profile_plan_2026_08_18_b05_b06_\uad6c\uc870\ubb3c_\uc801\uc6a9_\ubc94\uc704", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-18.md", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_profile_plan_2026_08_18_b05_\uad6c\uc870\ubb3c_ui_\ud604\uc7ac_\uacc4\ud68d", + "target": "pages_b05_profile_b05_profile_plan_2026_08_18_\ud6c4\uc18d_\uacb0\uc815_\ub300\uae30", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-19.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_profile_plan_2026_08_19", + "target": "pages_b05_profile_b05_profile_plan_2026_08_19_b05_\uad6c\uc870\ubb3c_\uc785\ub825_\uc885\ub2e8_\ud45c\uc2dc_\uc815\ube44_2026_08_19", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-19.md", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_profile_plan_2026_08_19_b05_\uad6c\uc870\ubb3c_\uc785\ub825_\uc885\ub2e8_\ud45c\uc2dc_\uc815\ube44_2026_08_19", + "target": "pages_b05_profile_b05_profile_plan_2026_08_19_\uae30\ub85d\ub41c_\uac80\uc99d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-19.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_profile_plan_2026_08_19_b05_\uad6c\uc870\ubb3c_\uc785\ub825_\uc885\ub2e8_\ud45c\uc2dc_\uc815\ube44_2026_08_19", + "target": "pages_b05_profile_b05_profile_plan_2026_08_19_\uae30\uc900_\ud574\uc11d_\ubcf4\ub958", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-19.md", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_profile_plan_2026_08_19_b05_\uad6c\uc870\ubb3c_\uc785\ub825_\uc885\ub2e8_\ud45c\uc2dc_\uc815\ube44_2026_08_19", + "target": "pages_b05_profile_b05_profile_plan_2026_08_19_\uc644\ub8cc_\ubc94\uc704", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_Profile_plan_2026-08-19.md", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_profile_plan_2026_08_19_b05_\uad6c\uc870\ubb3c_\uc785\ub825_\uc885\ub2e8_\ud45c\uc2dc_\uc815\ube44_2026_08_19", + "target": "pages_b05_profile_b05_profile_plan_2026_08_19_\uc8fc\uc694_\ud56d\ubaa9", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_api.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_api", + "target": "pages_b05_profile_b05_api_b05_profile_api", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_api.md", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_api_b05_profile_api", + "target": "pages_b05_profile_b05_api_api_\uc2a4\ud0a4\ub9c8_\ubc0f_\ubc18\ud658_\ud544\ub4dc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_api.md", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_api_b05_profile_api", + "target": "pages_b05_profile_b05_api_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_api.md", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_api_api_\uc2a4\ud0a4\ub9c8_\ubc0f_\ubc18\ud658_\ud544\ub4dc", + "target": "pages_b05_profile_b05_api_post_project_id_route_confirm_\uc694\uccad_routeconfirmrequest", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_backend.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_backend", + "target": "pages_b05_profile_b05_backend_b05_profile_backend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_backend.md", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_backend_b05_profile_backend", + "target": "pages_b05_profile_b05_backend_\uc18c\uc2a4\ucf54\ub4dc_1_1_\uc138\ubd84\ud654_\uc704\ud0a4_\ud30c\uc77c_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_backend.md", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_backend_b05_profile_backend", + "target": "pages_b05_profile_b05_backend_\ud575\uc2ec_\ubc31\uc5d4\ub4dc_\uc544\ud0a4\ud14d\ucc98_\uac1c\uc694", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_completed_followups.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_completed_followups", + "target": "pages_b05_profile_b05_completed_followups_b05_\ud6c4\uc18d_\uc644\ub8cc_\ud56d\ubaa9", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_cut_fill.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_cut_fill", + "target": "pages_b05_profile_b05_corridor_cut_fill_b05_\uad6c\uc870\ubb3c_\uad6c\uac04_\uc808\ucde8_\uce21\ubcbd_\uc131\ud1a0_\ud328\uce58", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_cut_fill.md", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_cut_fill_b05_\uad6c\uc870\ubb3c_\uad6c\uac04_\uc808\ucde8_\uce21\ubcbd_\uc131\ud1a0_\ud328\uce58", + "target": "pages_b05_profile_b05_corridor_cut_fill_b06_\ubcc0\ud615_\uc131\ud1a0\uc120_\ud328\uce58", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_cut_fill.md", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_cut_fill_b05_\uad6c\uc870\ubb3c_\uad6c\uac04_\uc808\ucde8_\uce21\ubcbd_\uc131\ud1a0_\ud328\uce58", + "target": "pages_b05_profile_b05_corridor_cut_fill_\uc800\uc7a5_\uac80\uc99d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_cut_fill.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_cut_fill_b05_\uad6c\uc870\ubb3c_\uad6c\uac04_\uc808\ucde8_\uce21\ubcbd_\uc131\ud1a0_\ud328\uce58", + "target": "pages_b05_profile_b05_corridor_cut_fill_\uc808\ucde8\uc640_\uacbd\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_followup_decisions.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_followup_decisions", + "target": "pages_b05_profile_b05_corridor_followup_decisions_b05_\uad6c\uc870\ubb3c_3d_\ud6c4\uc18d_\ud310\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_patch_finish.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_patch_finish", + "target": "pages_b05_profile_b05_corridor_patch_finish_b05_\ubcc0\ud615_\uc131\ud1a0\uba74_\ub9c8\uac10_\ub0a0\uac1c_\ud328\uce58", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_patch_finish.md", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_patch_finish_b05_\ubcc0\ud615_\uc131\ud1a0\uba74_\ub9c8\uac10_\ub0a0\uac1c_\ud328\uce58", + "target": "pages_b05_profile_b05_corridor_patch_finish_\uc138\uc6d4\uad50_\ub0a0\uac1c_\ud328\uce58", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_patch_finish.md", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_patch_finish_b05_\ubcc0\ud615_\uc131\ud1a0\uba74_\ub9c8\uac10_\ub0a0\uac1c_\ud328\uce58", + "target": "pages_b05_profile_b05_corridor_patch_finish_\uc800\uc7a5_\uac80\uc99d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_patch_finish.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_patch_finish_b05_\ubcc0\ud615_\uc131\ud1a0\uba74_\ub9c8\uac10_\ub0a0\uac1c_\ud328\uce58", + "target": "pages_b05_profile_b05_corridor_patch_finish_\ud328\uce58_\ub9c8\uac10", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_plan_curves.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_plan_curves", + "target": "pages_b05_profile_b05_corridor_plan_curves_b05_\uad6c\uc870\ubb3c_3d_\ud22c\uc601_\ucee4\ube0c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_plan_curves.md", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_plan_curves_b05_\uad6c\uc870\ubb3c_3d_\ud22c\uc601_\ucee4\ube0c", + "target": "pages_b05_profile_b05_corridor_plan_curves_\uac80\uc99d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_plan_curves.md", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_plan_curves_b05_\uad6c\uc870\ubb3c_3d_\ud22c\uc601_\ucee4\ube0c", + "target": "pages_b05_profile_b05_corridor_plan_curves_\uad6c\uc870\ubb3c_\ub0a0\uac1c_\ubc14\ub2e5_\uc5f0\uacb0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_plan_curves.md", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_plan_curves_b05_\uad6c\uc870\ubb3c_3d_\ud22c\uc601_\ucee4\ube0c", + "target": "pages_b05_profile_b05_corridor_plan_curves_\ube44\ud0c8_\ud22c\uc601_\uc131\ud1a0\uba74_\uc808\ub2e8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_plan_curves.md", + "source_location": "L52", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_plan_curves_b05_\uad6c\uc870\ubb3c_3d_\ud22c\uc601_\ucee4\ube0c", + "target": "pages_b05_profile_b05_corridor_plan_curves_\uc800\uc7a5_\ud638\ud658\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_plan_curves.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_plan_curves_b05_\uad6c\uc870\ubb3c_3d_\ud22c\uc601_\ucee4\ube0c", + "target": "pages_b05_profile_b05_corridor_plan_curves_\ucee4\ube0c_\uc0dd\uc131_\ub80c\ub354", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_surface.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_surface", + "target": "pages_b05_profile_b05_corridor_surface_b05_\uacc4\ud68d\ub178\uc120_\ucf54\ub9ac\ub3c4_\uc0bc\uac01\ub9dd_\uc11c\ud53c\uc2a4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_surface.md", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_surface_b05_\uacc4\ud68d\ub178\uc120_\ucf54\ub9ac\ub3c4_\uc0bc\uac01\ub9dd_\uc11c\ud53c\uc2a4", + "target": "pages_b05_profile_b05_corridor_surface_\uac80\uc99d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_surface.md", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_surface_b05_\uacc4\ud68d\ub178\uc120_\ucf54\ub9ac\ub3c4_\uc0bc\uac01\ub9dd_\uc11c\ud53c\uc2a4", + "target": "pages_b05_profile_b05_corridor_surface_\uc800\uc7a5_\ud638\ud658\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_surface.md", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_surface_b05_\uacc4\ud68d\ub178\uc120_\ucf54\ub9ac\ub3c4_\uc0bc\uac01\ub9dd_\uc11c\ud53c\uc2a4", + "target": "pages_b05_profile_b05_corridor_surface_\uc9c4\ud589_\uc911_\uacc4\ud68d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_surface.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_surface_b05_\uacc4\ud68d\ub178\uc120_\ucf54\ub9ac\ub3c4_\uc0bc\uac01\ub9dd_\uc11c\ud53c\uc2a4", + "target": "pages_b05_profile_b05_corridor_surface_\ud504\ub860\ud2b8\uc5d4\ub4dc_\uad6c\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_turn_correction_plan.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_turn_correction_plan", + "target": "pages_b05_profile_b05_corridor_turn_correction_plan_b05_\uae09\uc120\ud68c_3d_\uad6d\ubd80_\ubcf4\uc815_\uacc4\ud68d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_turn_correction_plan.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_turn_correction_plan_b05_\uae09\uc120\ud68c_3d_\uad6d\ubd80_\ubcf4\uc815_\uacc4\ud68d", + "target": "pages_b05_profile_b05_corridor_turn_correction_plan_\uad6c\uc870\ubb3c_\uc5f0\ub3d9", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_turn_correction_plan.md", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_turn_correction_plan_b05_\uae09\uc120\ud68c_3d_\uad6d\ubd80_\ubcf4\uc815_\uacc4\ud68d", + "target": "pages_b05_profile_b05_corridor_turn_correction_plan_\uad6d\ubd80_\ud328\uce58_\uc808\ucc28", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_turn_correction_plan.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_turn_correction_plan_b05_\uae09\uc120\ud68c_3d_\uad6d\ubd80_\ubcf4\uc815_\uacc4\ud68d", + "target": "pages_b05_profile_b05_corridor_turn_correction_plan_\ubaa9\uc801\uacfc_\uacbd\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_turn_correction_plan.md", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_turn_correction_plan_b05_\uae09\uc120\ud68c_3d_\uad6d\ubd80_\ubcf4\uc815_\uacc4\ud68d", + "target": "pages_b05_profile_b05_corridor_turn_correction_plan_\uc644\ub8cc_\uc870\uac74", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_corridor_turn_correction_plan.md", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_corridor_turn_correction_plan_b05_\uae09\uc120\ud68c_3d_\uad6d\ubd80_\ubcf4\uc815_\uacc4\ud68d", + "target": "pages_b05_profile_b05_corridor_turn_correction_plan_\ud655\uc778\ub41c_\ub178\uacac_\ud655\uc7a5_\ud68c\uadc0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_db.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_db", + "target": "pages_b05_profile_b05_db_b05_profile_db_\uc0ac\uc6a9_\uad00\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_db.md", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_db_b05_profile_db_\uc0ac\uc6a9_\uad00\uacc4", + "target": "pages_b05_profile_b05_db_repository_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_db.md", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_db_b05_profile_db_\uc0ac\uc6a9_\uad00\uacc4", + "target": "pages_b05_profile_b05_db_\uc800\uc7a5_\uacbd\ub85c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_dependencies.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_dependencies", + "target": "pages_b05_profile_b05_dependencies_b05_profile_dependencies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_dependencies.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_dependencies_b05_profile_dependencies", + "target": "pages_b05_profile_b05_dependencies_\ud398\uc774\uc9c0_\ud30c\uc77c\ubcc4_\uc5f0\uacb0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_frontend.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_frontend", + "target": "pages_b05_profile_b05_frontend_b05_profile_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_frontend.md", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_frontend_b05_profile_frontend", + "target": "pages_b05_profile_b05_frontend_\ub0a8\uc740_\ud30c\uc77c_\ud55c\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_frontend.md", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_frontend_b05_profile_frontend", + "target": "pages_b05_profile_b05_frontend_\uc18c\uc2a4\ucf54\ub4dc_1_1_\uc138\ubd84\ud654_\uc704\ud0a4_\ud30c\uc77c_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_frontend.md", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_frontend_b05_profile_frontend", + "target": "pages_b05_profile_b05_frontend_\uc885\ub2e8_\ud3b8\uc9d1_\uc548\uc804\uc7a5\uce58", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_frontend.md", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_frontend_b05_profile_frontend", + "target": "pages_b05_profile_b05_frontend_\uc885\ub2e8\ud14c\uc774\ube14_\ud45c\uc2dc_\ubcf4\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_frontend.md", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_frontend_b05_profile_frontend", + "target": "pages_b05_profile_b05_frontend_\ud575\uc2ec_\ud504\ub860\ud2b8\uc5d4\ub4dc_\uc544\ud0a4\ud14d\ucc98_\uac1c\uc694", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_frontend_alignment.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_frontend_alignment", + "target": "pages_b05_profile_b05_frontend_alignment_b05_profile_profile_alignment_table", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_frontend_alignment.md", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_frontend_alignment_b05_profile_profile_alignment_table", + "target": "pages_b05_profile_b05_frontend_alignment_12\ud589_\ub3c4\uba74_\ud14c\uc774\ube14_\ubc0f_\uac00\ub85c_\uc2a4\ud06c\ub864_\uc815\ub82c_\uac1c\ud3b8_ui_profile_table_ts_ui_profile_panel_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_frontend_alignment.md", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_frontend_alignment_b05_profile_profile_alignment_table", + "target": "pages_b05_profile_b05_frontend_alignment_\ube44\uc815\uaddc_\uce21\uc810_\uad6c\uc870\ubb3c_\ud14c\uc774\ube14_\uc624\ubc84\ub808\uc774_\ub7f0\ud0c0\uc784_\uac80\uc99d_ui_profile_table_ts_ui_irregularstations_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_frontend_alignment.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_frontend_alignment_b05_profile_profile_alignment_table", + "target": "pages_b05_profile_b05_frontend_alignment_\uc885\ub2e8_\uacc4\ud68d\uace0_\ud3b8\uc9d1_\uc778\ud130\ub799\uc158_ui_profile_edit_ts_ui_profile_panel_ts_ui_page_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_frontend_viewer.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_frontend_viewer", + "target": "pages_b05_profile_b05_frontend_viewer_b05_profile_3d_viewer_interaction", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_frontend_viewer.md", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_frontend_viewer_b05_profile_3d_viewer_interaction", + "target": "pages_b05_profile_b05_frontend_viewer_3d_\ub9c8\ucee4_\uc9c1\uc811_\ub4dc\ub798\uadf8_\uc774\ub3d9_0_old_i_401_\uc774\uc2dd", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_frontend_viewer.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_frontend_viewer_b05_profile_3d_viewer_interaction", + "target": "pages_b05_profile_b05_frontend_viewer_3d_\uc9c0\ud615_\ubdf0\ud3ec\ud2b8_\uc2dc\uac01\ud654_ui_viewer_ts_ui_markers_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_masshaul_structure_2026_09.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_masshaul_structure_2026_09", + "target": "pages_b05_profile_b05_masshaul_structure_2026_09_b05_\uc720\ud1a0\uace1\uc120_\uad6c\uc870\ubb3c_\ud6c4\uc18d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_masshaul_structure_2026_09.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_masshaul_structure_2026_09_b05_\uc720\ud1a0\uace1\uc120_\uad6c\uc870\ubb3c_\ud6c4\uc18d", + "target": "pages_b05_profile_b05_masshaul_structure_2026_09_\uc720\uc9c0_\ud310\uc815_\uc0ac\ud56d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_masshaul_structure_2026_09.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_masshaul_structure_2026_09_b05_\uc720\ud1a0\uace1\uc120_\uad6c\uc870\ubb3c_\ud6c4\uc18d", + "target": "pages_b05_profile_b05_masshaul_structure_2026_09_\uc720\ud1a0\uace1\uc120_\uacf5\uc6a9\ud654", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_profile_interaction_2026_09.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_profile_interaction_2026_09", + "target": "pages_b05_profile_b05_profile_interaction_2026_09_b05_\uc885\ub2e8\uace1\uc120_\uc2e4\uc2dc\uac04_\ud6a1\ub2e8_\uc5f0\ub3d9", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_profile_interaction_2026_09.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_profile_interaction_2026_09_b05_\uc885\ub2e8\uace1\uc120_\uc2e4\uc2dc\uac04_\ud6a1\ub2e8_\uc5f0\ub3d9", + "target": "pages_b05_profile_b05_profile_interaction_2026_09_\uc2e4\uc2dc\uac04_\ud6a1\ub2e8_\uc720\ud1a0\uace1\uc120", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_profile_interaction_2026_09.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_profile_interaction_2026_09_b05_\uc885\ub2e8\uace1\uc120_\uc2e4\uc2dc\uac04_\ud6a1\ub2e8_\uc5f0\ub3d9", + "target": "pages_b05_profile_b05_profile_interaction_2026_09_\ucd08\uae30_\uc885\ub2e8\uace1\uc120", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_structure_stations.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_structure_stations", + "target": "pages_b05_profile_b05_structure_stations_b05_\uad6c\uc870\ubb3c_\ube44\uc815\uaddc_\uce21\uc810_\uacf5\uae09", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_structure_stations.md", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_structure_stations_b05_\uad6c\uc870\ubb3c_\ube44\uc815\uaddc_\uce21\uc810_\uacf5\uae09", + "target": "pages_b05_profile_b05_structure_stations_\uac80\uc99d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_structure_stations.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_structure_stations_b05_\uad6c\uc870\ubb3c_\ube44\uc815\uaddc_\uce21\uc810_\uacf5\uae09", + "target": "pages_b05_profile_b05_structure_stations_\uacf5\uae09_\uacbd\ub85c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_structure_stations.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_structure_stations_b05_\uad6c\uc870\ubb3c_\ube44\uc815\uaddc_\uce21\uc810_\uacf5\uae09", + "target": "pages_b05_profile_b05_structure_stations_\uc815\ubcf8_\uaddc\uce59", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_structures.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_structures", + "target": "pages_b05_profile_b05_structures_b05_\uad6c\uc870\ubb3c_\uc815\ubcf8_\ud1b5\ud569_\ud3b8\uc9d1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_structures.md", + "source_location": "L67", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_structures_b05_\uad6c\uc870\ubb3c_\uc815\ubcf8_\ud1b5\ud569_\ud3b8\uc9d1", + "target": "pages_b05_profile_b05_structures_api", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_structures.md", + "source_location": "L75", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_structures_b05_\uad6c\uc870\ubb3c_\uc815\ubcf8_\ud1b5\ud569_\ud3b8\uc9d1", + "target": "pages_b05_profile_b05_structures_b06_\uacbd\uacc4\uc640_\ub0a8\uc740_\ubc94\uc704", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_structures.md", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_structures_b05_\uad6c\uc870\ubb3c_\uc815\ubcf8_\ud1b5\ud569_\ud3b8\uc9d1", + "target": "pages_b05_profile_b05_structures_\uac80\uc99d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_structures.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_structures_b05_\uad6c\uc870\ubb3c_\uc815\ubcf8_\ud1b5\ud569_\ud3b8\uc9d1", + "target": "pages_b05_profile_b05_structures_\ubc30\uc218\uad00_\uc2dc\uc124_\uc635\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_structures.md", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_structures_b05_\uad6c\uc870\ubb3c_\uc815\ubcf8_\ud1b5\ud569_\ud3b8\uc9d1", + "target": "pages_b05_profile_b05_structures_\ubc31\uc5d4\ub4dc_\ud30c\uc77c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_structures.md", + "source_location": "L57", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_structures_b05_\uad6c\uc870\ubb3c_\uc815\ubcf8_\ud1b5\ud569_\ud3b8\uc9d1", + "target": "pages_b05_profile_b05_structures_\uc720\uc5ed_\ucd94\ucc9c_\uac1c\ub7b5_\ub2e8\uba74", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_structures.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_structures_b05_\uad6c\uc870\ubb3c_\uc815\ubcf8_\ud1b5\ud569_\ud3b8\uc9d1", + "target": "pages_b05_profile_b05_structures_\uc815\ubcf8\uacfc_\ud0c0\uc785_\ub808\uc9c0\uc2a4\ud2b8\ub9ac", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/B05_structures.md", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_b05_structures_b05_\uad6c\uc870\ubb3c_\uc815\ubcf8_\ud1b5\ud569_\ud3b8\uc9d1", + "target": "pages_b05_profile_b05_structures_\ud504\ub860\ud2b8\uc5d4\ub4dc_\ud30c\uc77c\uacfc_\ub3d9\uc791", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Grade.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_engine_grade", + "target": "pages_b05_profile_backend_b05_profile_engine_grade_b05_profile_engine_grade_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Grade.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_engine_grade_b05_profile_engine_grade_py", + "target": "pages_b05_profile_backend_b05_profile_engine_grade_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Grade.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_engine_grade_b05_profile_engine_grade_py", + "target": "pages_b05_profile_backend_b05_profile_engine_grade_\uc8fc\uc694_\ud074\ub798\uc2a4_\ubc0f_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Sections.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_engine_sections", + "target": "pages_b05_profile_backend_b05_profile_engine_sections_b05_profile_engine_sections_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Sections.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_engine_sections_b05_profile_engine_sections_py", + "target": "pages_b05_profile_backend_b05_profile_engine_sections_\ub7f0\ud0c0\uc784_\uac80\uc99d_\uc8fc\uc758\uc0ac\ud56d_2026_07_24_\uac80\uc99d_\ubcf4\uace0\uc11c_\uae30\uc900", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Sections.md", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_engine_sections_b05_profile_engine_sections_py", + "target": "pages_b05_profile_backend_b05_profile_engine_sections_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Sections.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_engine_sections_b05_profile_engine_sections_py", + "target": "pages_b05_profile_backend_b05_profile_engine_sections_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Solver.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_engine_solver", + "target": "pages_b05_profile_backend_b05_profile_engine_solver_b05_profile_engine_solver_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Solver.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_engine_solver_b05_profile_engine_solver_py", + "target": "pages_b05_profile_backend_b05_profile_engine_solver_\uc5d4\uc9c4_\ud575\uc2ec_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Engine_Solver.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_engine_solver_b05_profile_engine_solver_py", + "target": "pages_b05_profile_backend_b05_profile_engine_solver_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Repository.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_repository", + "target": "pages_b05_profile_backend_b05_profile_repository_b05_profile_repository_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Repository.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_repository_b05_profile_repository_py", + "target": "pages_b05_profile_backend_b05_profile_repository_db_\uc811\uadfc_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Repository.md", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_repository_b05_profile_repository_py", + "target": "pages_b05_profile_backend_b05_profile_repository_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Router.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_router", + "target": "pages_b05_profile_backend_b05_profile_router_b05_profile_router_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Router.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_router_b05_profile_router_py", + "target": "pages_b05_profile_backend_b05_profile_router_\ub77c\uc6b0\ud130_api_\ubc0f_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Router.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_router_b05_profile_router_py", + "target": "pages_b05_profile_backend_b05_profile_router_\uc5f0\uad00_\ubaa8\ub4c8_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Router_Confirm.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_router_confirm", + "target": "pages_b05_profile_backend_b05_profile_router_confirm_b05_profile_router_confirm_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Router_Confirm.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_router_confirm_b05_profile_router_confirm_py", + "target": "pages_b05_profile_backend_b05_profile_router_confirm_\uc5f0\uad00_\ubaa8\ub4c8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Router_Confirm.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_router_confirm_b05_profile_router_confirm_py", + "target": "pages_b05_profile_backend_b05_profile_router_confirm_\uc8fc\uc694_\ud5ec\ud37c_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Schema.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_schema", + "target": "pages_b05_profile_backend_b05_profile_schema_b05_profile_schema_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Schema.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_schema_b05_profile_schema_py", + "target": "pages_b05_profile_backend_b05_profile_schema_pydantic_\ubaa8\ub378_\ubc0f_\uac80\uc99d_\ud5ec\ud37c_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/backend/B05_Profile_Schema.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_backend_b05_profile_schema_b05_profile_schema_py", + "target": "pages_b05_profile_backend_b05_profile_schema_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_Api_Fetch.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_api_fetch", + "target": "pages_b05_profile_frontend_b05_profile_api_fetch_b05_profile_api_fetch_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_Api_Fetch.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_api_fetch_b05_profile_api_fetch_ts", + "target": "pages_b05_profile_frontend_b05_profile_api_fetch_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_Api_Fetch.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_api_fetch_b05_profile_api_fetch_ts", + "target": "pages_b05_profile_frontend_b05_profile_api_fetch_\uc8fc\uc694_api_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Panel.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_drainage_panel", + "target": "pages_b05_profile_frontend_b05_profile_ui_drainage_panel_b05_profile_ui_drainage_panel", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Panel.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_drainage_panel_b05_profile_ui_drainage_panel", + "target": "pages_b05_profile_frontend_b05_profile_ui_drainage_panel_\uac1c\uc694_\ubc0f_\ud2b9\uc9d5", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Panel.md", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_drainage_panel_b05_profile_ui_drainage_panel", + "target": "pages_b05_profile_frontend_b05_profile_ui_drainage_panel_\uc8fc\uc694_\ud568\uc218_\uc2ec\ubcfc_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Parts.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_drainage_parts", + "target": "pages_b05_profile_frontend_b05_profile_ui_drainage_parts_b05_profile_ui_drainage_parts_\ubc30\uc218\uc720\uc5ed_\uacf5\uc6a9_ui_\ud30c\uce20", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Parts.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_drainage_parts_b05_profile_ui_drainage_parts_\ubc30\uc218\uc720\uc5ed_\uacf5\uc6a9_ui_\ud30c\uce20", + "target": "pages_b05_profile_frontend_b05_profile_ui_drainage_parts_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Parts.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_drainage_parts_b05_profile_ui_drainage_parts_\ubc30\uc218\uc720\uc5ed_\uacf5\uc6a9_ui_\ud30c\uce20", + "target": "pages_b05_profile_frontend_b05_profile_ui_drainage_parts_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Parts.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_drainage_parts_b05_profile_ui_drainage_parts_\ubc30\uc218\uc720\uc5ed_\uacf5\uc6a9_ui_\ud30c\uce20", + "target": "pages_b05_profile_frontend_b05_profile_ui_drainage_parts_3_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Pipes.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_drainage_pipes", + "target": "pages_b05_profile_frontend_b05_profile_ui_drainage_pipes_b05_profile_ui_drainage_pipes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Pipes.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_drainage_pipes_b05_profile_ui_drainage_pipes", + "target": "pages_b05_profile_frontend_b05_profile_ui_drainage_pipes_\uac1c\uc694_\ubc0f_\ud2b9\uc9d5", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Pipes.md", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_drainage_pipes_b05_profile_ui_drainage_pipes", + "target": "pages_b05_profile_frontend_b05_profile_ui_drainage_pipes_\uc8fc\uc694_\ud568\uc218_\uc2ec\ubcfc_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_IrregularStations.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_irregularstations", + "target": "pages_b05_profile_frontend_b05_profile_ui_irregularstations_b05_profile_ui_irregularstations_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_IrregularStations.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_irregularstations_b05_profile_ui_irregularstations_ts", + "target": "pages_b05_profile_frontend_b05_profile_ui_irregularstations_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_IrregularStations.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_irregularstations_b05_profile_ui_irregularstations_ts", + "target": "pages_b05_profile_frontend_b05_profile_ui_irregularstations_\uc8fc\uc694_\uc778\ud130\ud398\uc774\uc2a4_\ubc0f_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Page.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_page", + "target": "pages_b05_profile_frontend_b05_profile_ui_page_b05_profile_ui_page_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Page.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_page_b05_profile_ui_page_ts", + "target": "pages_b05_profile_frontend_b05_profile_ui_page_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Page.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_page_b05_profile_ui_page_ts", + "target": "pages_b05_profile_frontend_b05_profile_ui_page_\uc8fc\uc694_\ucef4\ud3ec\ub10c\ud2b8_\ubc0f_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Panel.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_panel", + "target": "pages_b05_profile_frontend_b05_profile_ui_panel_b05_profile_ui_panel_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Panel.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_panel_b05_profile_ui_panel_ts", + "target": "pages_b05_profile_frontend_b05_profile_ui_panel_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Panel.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_panel_b05_profile_ui_panel_ts", + "target": "pages_b05_profile_frontend_b05_profile_ui_panel_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Alignment.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_profile_alignment", + "target": "pages_b05_profile_frontend_b05_profile_ui_profile_alignment_b05_profile_ui_profile_alignment_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Alignment.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_profile_alignment_b05_profile_ui_profile_alignment_ts", + "target": "pages_b05_profile_frontend_b05_profile_ui_profile_alignment_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Alignment.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_profile_alignment_b05_profile_ui_profile_alignment_ts", + "target": "pages_b05_profile_frontend_b05_profile_ui_profile_alignment_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Panel.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_profile_panel", + "target": "pages_b05_profile_frontend_b05_profile_ui_profile_panel_b05_profile_ui_profile_panel_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Panel.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_profile_panel_b05_profile_ui_profile_panel_ts", + "target": "pages_b05_profile_frontend_b05_profile_ui_profile_panel_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Panel.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_profile_panel_b05_profile_ui_profile_panel_ts", + "target": "pages_b05_profile_frontend_b05_profile_ui_profile_panel_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\uac1c\uc120\uc0ac\ud56d_2026_08_06", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Panel.md", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_profile_panel_b05_profile_ui_profile_panel_ts", + "target": "pages_b05_profile_frontend_b05_profile_ui_profile_panel_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Table.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_profile_table", + "target": "pages_b05_profile_frontend_b05_profile_ui_profile_table_b05_profile_ui_profile_table_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Table.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_profile_table_b05_profile_ui_profile_table_ts", + "target": "pages_b05_profile_frontend_b05_profile_ui_profile_table_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Table.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_profile_table_b05_profile_ui_profile_table_ts", + "target": "pages_b05_profile_frontend_b05_profile_ui_profile_table_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Viewer.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_viewer", + "target": "pages_b05_profile_frontend_b05_profile_ui_viewer_b05_profile_ui_viewer_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Viewer.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_viewer_b05_profile_ui_viewer_ts", + "target": "pages_b05_profile_frontend_b05_profile_ui_viewer_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/B05_Profile_UI_Viewer.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_b05_profile_ui_viewer_b05_profile_ui_viewer_ts", + "target": "pages_b05_profile_frontend_b05_profile_ui_viewer_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/_UI_Drainage_Render.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_ui_drainage_render", + "target": "pages_b05_profile_frontend_ui_drainage_render_ui_drainage_render_\ubc30\uc218\uc720\uc5ed\ub3c4_canvas_\ub80c\ub354\ub7ec", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/_UI_Drainage_Render.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_ui_drainage_render_ui_drainage_render_\ubc30\uc218\uc720\uc5ed\ub3c4_canvas_\ub80c\ub354\ub7ec", + "target": "pages_b05_profile_frontend_ui_drainage_render_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/_UI_Drainage_Render.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_ui_drainage_render_ui_drainage_render_\ubc30\uc218\uc720\uc5ed\ub3c4_canvas_\ub80c\ub354\ub7ec", + "target": "pages_b05_profile_frontend_ui_drainage_render_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/_UI_Drainage_Render.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_ui_drainage_render_ui_drainage_render_\ubc30\uc218\uc720\uc5ed\ub3c4_canvas_\ub80c\ub354\ub7ec", + "target": "pages_b05_profile_frontend_ui_drainage_render_3_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/_UI_Profile_Structures.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_ui_profile_structures", + "target": "pages_b05_profile_frontend_ui_profile_structures_ui_profile_structures_\uc885\ub2e8_\uad6c\uc870\ubb3c_\ub80c\ub354\ub9c1_\ubc0f_\uc778\ud130\ub799\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/_UI_Profile_Structures.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_ui_profile_structures_ui_profile_structures_\uc885\ub2e8_\uad6c\uc870\ubb3c_\ub80c\ub354\ub9c1_\ubc0f_\uc778\ud130\ub799\uc158", + "target": "pages_b05_profile_frontend_ui_profile_structures_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/_UI_Profile_Structures.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_ui_profile_structures_ui_profile_structures_\uc885\ub2e8_\uad6c\uc870\ubb3c_\ub80c\ub354\ub9c1_\ubc0f_\uc778\ud130\ub799\uc158", + "target": "pages_b05_profile_frontend_ui_profile_structures_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/_UI_Profile_Structures.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_ui_profile_structures_ui_profile_structures_\uc885\ub2e8_\uad6c\uc870\ubb3c_\ub80c\ub354\ub9c1_\ubc0f_\uc778\ud130\ub799\uc158", + "target": "pages_b05_profile_frontend_ui_profile_structures_3_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/_UI_Selection.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_ui_selection", + "target": "pages_b05_profile_frontend_ui_selection_ui_selection_\ubc30\uc218_\uad6c\uc870\ubb3c_3\uc790_\uc120\ud0dd_\ub3d9\uae30\ud654", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/_UI_Selection.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_ui_selection_ui_selection_\ubc30\uc218_\uad6c\uc870\ubb3c_3\uc790_\uc120\ud0dd_\ub3d9\uae30\ud654", + "target": "pages_b05_profile_frontend_ui_selection_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/_UI_Selection.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_ui_selection_ui_selection_\ubc30\uc218_\uad6c\uc870\ubb3c_3\uc790_\uc120\ud0dd_\ub3d9\uae30\ud654", + "target": "pages_b05_profile_frontend_ui_selection_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B05_Profile/frontend/_UI_Selection.md", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b05_profile_frontend_ui_selection_ui_selection_\ubc30\uc218_\uad6c\uc870\ubb3c_3\uc790_\uc120\ud0dd_\ub3d9\uae30\ud654", + "target": "pages_b05_profile_frontend_ui_selection_3_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_api.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_api", + "target": "pages_b06_section_b06_api_b06_section_api", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_backend.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_backend", + "target": "pages_b06_section_b06_backend_b06_section_backend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_backend.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_backend_b06_section_backend", + "target": "pages_b06_section_b06_backend_\uacc4\uc0b0_\uc5d4\uc9c4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_backend.md", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_backend_b06_section_backend", + "target": "pages_b06_section_b06_backend_\ub370\uc774\ud130_\uc601\uad6c_\uc800\uc7a5_\ubc0f_\ud658\uacbd\uc124\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_backend.md", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_backend_b06_section_backend", + "target": "pages_b06_section_b06_backend_\ub77c\uc6b0\ud130_workflow_\uc870\ud68c_\ud655\uc815_\ud0c0_\ud504\ub85c\uc81d\ud2b8_\ubd88\ub7ec\uc624\uae30_\ubc0f_\uc7ac\uc0dd\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_backend.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_backend_b06_section_backend", + "target": "pages_b06_section_b06_backend_\uc694\uccad_\uc751\ub2f5_\ubaa8\ub378", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_cross_design_ui_2026_09.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_cross_design_ui_2026_09", + "target": "pages_b06_section_b06_cross_design_ui_2026_09_b06_\ud6a1\ub2e8_\uacc4\uc0b0_\ubbf8\ub7ec_\uce74\ub4dc_\ud45c\uae30", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_cross_design_ui_2026_09.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_cross_design_ui_2026_09_b06_\ud6a1\ub2e8_\uacc4\uc0b0_\ubbf8\ub7ec_\uce74\ub4dc_\ud45c\uae30", + "target": "pages_b06_section_b06_cross_design_ui_2026_09_\ud504\ub860\ud2b8_\uacc4\uc0b0_\ubbf8\ub7ec", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_cross_design_ui_2026_09.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_cross_design_ui_2026_09_b06_\ud6a1\ub2e8_\uacc4\uc0b0_\ubbf8\ub7ec_\uce74\ub4dc_\ud45c\uae30", + "target": "pages_b06_section_b06_cross_design_ui_2026_09_\ud6a1\ub2e8_\uce74\ub4dc_\ud45c\uae30", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_basin_multitier.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_basin_multitier", + "target": "pages_b06_section_b06_culvert_basin_multitier_b06_\uc9d1\uc218\uc815_\ub2e4\ub2e8_\uae30\uc2ad\ub9c9\uc774", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_basin_multitier.md", + "source_location": "L57", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_basin_multitier_b06_\uc9d1\uc218\uc815_\ub2e4\ub2e8_\uae30\uc2ad\ub9c9\uc774", + "target": "pages_b06_section_b06_culvert_basin_multitier_\ubbf8\uacb0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_basin_multitier.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_basin_multitier_b06_\uc9d1\uc218\uc815_\ub2e4\ub2e8_\uae30\uc2ad\ub9c9\uc774", + "target": "pages_b06_section_b06_culvert_basin_multitier_\uc720\uc785_\uad6c\uc870\ubb3c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_basin_multitier.md", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_basin_multitier_b06_\uc9d1\uc218\uc815_\ub2e4\ub2e8_\uae30\uc2ad\ub9c9\uc774", + "target": "pages_b06_section_b06_culvert_basin_multitier_\uc720\ucd9c_\uc131\ud1a0\ubd80_\ub2e4\ub2e8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_basin_multitier.md", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_basin_multitier_b06_\uc9d1\uc218\uc815_\ub2e4\ub2e8_\uae30\uc2ad\ub9c9\uc774", + "target": "pages_b06_section_b06_culvert_basin_multitier_\uc790\uccb4\uac80\uc99d_\uae30\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_basin_multitier.md", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_basin_multitier_b06_\uc9d1\uc218\uc815_\ub2e4\ub2e8_\uae30\uc2ad\ub9c9\uc774", + "target": "pages_b06_section_b06_culvert_basin_multitier_\uc9d1\uc218\uc815_\uacc4\ub958\uce21_\uc131\ud1a0\ubd80", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_controls.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_controls", + "target": "pages_b06_section_b06_culvert_controls_b06_\ubc30\uc218\uad00_\uad6c\uc870\ubb3c_\uc870\uc791_\ud45c\uc2dc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_controls.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_controls_b06_\ubc30\uc218\uad00_\uad6c\uc870\ubb3c_\uc870\uc791_\ud45c\uc2dc", + "target": "pages_b06_section_b06_culvert_controls_4\ucd95_\uc870\uc791\uacfc_\uc7ac\uc9c8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_controls.md", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_controls_b06_\ubc30\uc218\uad00_\uad6c\uc870\ubb3c_\uc870\uc791_\ud45c\uc2dc", + "target": "pages_b06_section_b06_culvert_controls_\uacc4\uc0b0_\ubcf4\uae30_\ubd84\ub9ac", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_controls.md", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_controls_b06_\ubc30\uc218\uad00_\uad6c\uc870\ubb3c_\uc870\uc791_\ud45c\uc2dc", + "target": "pages_b06_section_b06_culvert_controls_\uad6c\ud604_\ud30c\uc77c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_controls.md", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_controls_b06_\ubc30\uc218\uad00_\uad6c\uc870\ubb3c_\uc870\uc791_\ud45c\uc2dc", + "target": "pages_b06_section_b06_culvert_controls_\uc790\uccb4\uac80\uc99d_\uae30\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_controls.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_controls_b06_\ubc30\uc218\uad00_\uad6c\uc870\ubb3c_\uc870\uc791_\ud45c\uc2dc", + "target": "pages_b06_section_b06_culvert_controls_\uc870\uc815\ucc3d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_controls.md", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_controls_b06_\ubc30\uc218\uad00_\uad6c\uc870\ubb3c_\uc870\uc791_\ud45c\uc2dc", + "target": "pages_b06_section_b06_culvert_controls_\uc9d1\uc218\uc815_9\ud0a4_\uc870\uc791", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_geometry_redesign.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_geometry_redesign", + "target": "pages_b06_section_b06_culvert_geometry_redesign_b06_\ubc30\uc218\uad00_\uad6c\uc870\ubb3c_\uae30\ud558_\uc870\uc791_\uccb4\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_geometry_redesign.md", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_geometry_redesign_b06_\ubc30\uc218\uad00_\uad6c\uc870\ubb3c_\uae30\ud558_\uc870\uc791_\uccb4\uacc4", + "target": "pages_b06_section_b06_culvert_geometry_redesign_\uac80\uc99d_\uc0c1\ud0dc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_geometry_redesign.md", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_geometry_redesign_b06_\ubc30\uc218\uad00_\uad6c\uc870\ubb3c_\uae30\ud558_\uc870\uc791_\uccb4\uacc4", + "target": "pages_b06_section_b06_culvert_geometry_redesign_\uad6c\ud604_\ud30c\uc77c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_geometry_redesign.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_geometry_redesign_b06_\ubc30\uc218\uad00_\uad6c\uc870\ubb3c_\uae30\ud558_\uc870\uc791_\uccb4\uacc4", + "target": "pages_b06_section_b06_culvert_geometry_redesign_\uae30\uc2ad\ub9c9\uc774_\uad00_\ud575\uc2ec_\uaddc\uce59", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_geometry_redesign.md", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_geometry_redesign_b06_\ubc30\uc218\uad00_\uad6c\uc870\ubb3c_\uae30\ud558_\uc870\uc791_\uccb4\uacc4", + "target": "pages_b06_section_b06_culvert_geometry_redesign_\uc124\uacc4\uc120_\ud2b8\ub9bc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_geometry_redesign.md", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_geometry_redesign_b06_\ubc30\uc218\uad00_\uad6c\uc870\ubb3c_\uae30\ud558_\uc870\uc791_\uccb4\uacc4", + "target": "pages_b06_section_b06_culvert_geometry_redesign_\uc811\uc18d\uc120", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_link_trim.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_link_trim", + "target": "pages_b06_section_b06_culvert_link_trim_b06_\uc778\uc811_\uce21\uc810_\uad6c\uc870\ubb3c_\ud2b8\ub9bc_\uc815\ub9ac", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_link_trim.md", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_link_trim_b06_\uc778\uc811_\uce21\uc810_\uad6c\uc870\ubb3c_\ud2b8\ub9bc_\uc815\ub9ac", + "target": "pages_b06_section_b06_culvert_link_trim_\uac80\uc99d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_link_trim.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_link_trim_b06_\uc778\uc811_\uce21\uc810_\uad6c\uc870\ubb3c_\ud2b8\ub9bc_\uc815\ub9ac", + "target": "pages_b06_section_b06_culvert_link_trim_\uc6d0\uc778\uacfc_\uacbd\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_link_trim.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_link_trim_b06_\uc778\uc811_\uce21\uc810_\uad6c\uc870\ubb3c_\ud2b8\ub9bc_\uc815\ub9ac", + "target": "pages_b06_section_b06_culvert_link_trim_\ucc98\ub9ac_\ud56d\ubaa9", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_set.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_set", + "target": "pages_b06_section_b06_culvert_set_b06_\ubc30\uc218\uad00_\ud6a1\ub2e8\ub3c4_\uc138\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_set.md", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_set_b06_\ubc30\uc218\uad00_\ud6a1\ub2e8\ub3c4_\uc138\ud2b8", + "target": "pages_b06_section_b06_culvert_set_\uac80\uc99d_\uadfc\uac70\uc640_\ud6c4\uc18d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_set.md", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_set_b06_\ubc30\uc218\uad00_\ud6a1\ub2e8\ub3c4_\uc138\ud2b8", + "target": "pages_b06_section_b06_culvert_set_\uacc4\ud68d\uc120_\uaddc\uce59", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_set.md", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_set_b06_\ubc30\uc218\uad00_\ud6a1\ub2e8\ub3c4_\uc138\ud2b8", + "target": "pages_b06_section_b06_culvert_set_\uad6c\ud604_\ud56d\ubaa9", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_set.md", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_set_b06_\ubc30\uc218\uad00_\ud6a1\ub2e8\ub3c4_\uc138\ud2b8", + "target": "pages_b06_section_b06_culvert_set_\uc785\ub825_\ud310\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_culvert_set.md", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_culvert_set_b06_\ubc30\uc218\uad00_\ud6a1\ub2e8\ub3c4_\uc138\ud2b8", + "target": "pages_b06_section_b06_culvert_set_\ud615\uc0c1_\ud45c\uc2dc_\uc21c\uc11c_2026_08_20_\uc2a4\ub0c5\uc0f7", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_db.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_db", + "target": "pages_b06_section_b06_db_b06_section_db_\uc0ac\uc6a9_\uad00\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_db.md", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_db_b06_section_db_\uc0ac\uc6a9_\uad00\uacc4", + "target": "pages_b06_section_b06_db_repository_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_db.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_db_b06_section_db_\uc0ac\uc6a9_\uad00\uacc4", + "target": "pages_b06_section_b06_db_\ud30c\uc77c_\uacbd\ub85c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_dependencies.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_dependencies", + "target": "pages_b06_section_b06_dependencies_b06_section_dependencies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_dependencies.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_dependencies_b06_section_dependencies", + "target": "pages_b06_section_b06_dependencies_\uacf5\ud1b5_\ubaa8\ub4c8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_frontend.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_frontend", + "target": "pages_b06_section_b06_frontend_b06_section_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_frontend.md", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_frontend_b06_section_frontend", + "target": "pages_b06_section_b06_frontend_2026_08_22_\ud30c\uc77c_\ud55c\uacc4_\uc815\ub9ac", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_frontend.md", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_frontend_b06_section_frontend", + "target": "pages_b06_section_b06_frontend_api_\ud074\ub77c\uc774\uc5b8\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_frontend.md", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_frontend_b06_section_frontend", + "target": "pages_b06_section_b06_frontend_svg_\ub80c\ub354\ub7ec_\ubc0f_\uc720\ud2f8\ub9ac\ud2f0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_frontend.md", + "source_location": "L78", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_frontend_b06_section_frontend", + "target": "pages_b06_section_b06_frontend_ui_\ud328\ub110_\ud06c\uae30_\ubc0f_\ub9ac\uc0ac\uc774\uc800_\uaddc\uce59_2026_08_02_\uc2e0\uc124", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_frontend.md", + "source_location": "L84", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_frontend_b06_section_frontend", + "target": "pages_b06_section_b06_frontend_\uae30\uc220\ubd80\ucc44_\ud574\uacb0\ub428", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_frontend.md", + "source_location": "L67", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_frontend_b06_section_frontend", + "target": "pages_b06_section_b06_frontend_\uc785\ub825_\uc635\uc158_\ud45c\uc2dc_\uc635\uc158_\ubc0f_\ud6a1\ub2e8_\ubc18\ud3ed_\uc81c\uc5b4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_frontend.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_frontend_b06_section_frontend", + "target": "pages_b06_section_b06_frontend_\ud30c\uc77c_\uad6c\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_frontend.md", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_frontend_b06_section_frontend", + "target": "pages_b06_section_b06_frontend_\ud654\uba74_workflow_\uc870\ud68c_\ubc0f_\ud655\uc815_\uc804\uc6a9", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_masshaul_culvert_2026_09.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_masshaul_culvert_2026_09", + "target": "pages_b06_section_b06_masshaul_culvert_2026_09_b06_\ud6a1\ub2e8_\uad00_\ud615\uc0c1_\uc720\ud1a0\uace1\uc120_\ud6c4\uc18d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_masshaul_culvert_2026_09.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_masshaul_culvert_2026_09_b06_\ud6a1\ub2e8_\uad00_\ud615\uc0c1_\uc720\ud1a0\uace1\uc120_\ud6c4\uc18d", + "target": "pages_b06_section_b06_masshaul_culvert_2026_09_i\ud615_\uc9d1\uc218\uc815_\uad00_\ud615\uc0c1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_masshaul_culvert_2026_09.md", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_masshaul_culvert_2026_09_b06_\ud6a1\ub2e8_\uad00_\ud615\uc0c1_\uc720\ud1a0\uace1\uc120_\ud6c4\uc18d", + "target": "pages_b06_section_b06_masshaul_culvert_2026_09_\uacc4\uc0b0_\uc0c1\ud0dc\uc640_\uacbd\uace0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_masshaul_culvert_2026_09.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_masshaul_culvert_2026_09_b06_\ud6a1\ub2e8_\uad00_\ud615\uc0c1_\uc720\ud1a0\uace1\uc120_\ud6c4\uc18d", + "target": "pages_b06_section_b06_masshaul_culvert_2026_09_\ud30c\uc77c_\ucc45\uc784_\ubd84\ub9ac", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_pavement_revetment.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_pavement_revetment", + "target": "pages_b06_section_b06_pavement_revetment_b06_\ubb3c\ub118\uc774\ud3ec\uc7a5_\ucf58\ud06c\ub9ac\ud2b8_\ud3ec\uc7a5_\ub3c5\ub9bd_\uae30\uc2ad\ub9c9\uc774", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_pavement_revetment.md", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_pavement_revetment_b06_\ubb3c\ub118\uc774\ud3ec\uc7a5_\ucf58\ud06c\ub9ac\ud2b8_\ud3ec\uc7a5_\ub3c5\ub9bd_\uae30\uc2ad\ub9c9\uc774", + "target": "pages_b06_section_b06_pavement_revetment_\uac80\uc99d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_pavement_revetment.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_pavement_revetment_b06_\ubb3c\ub118\uc774\ud3ec\uc7a5_\ucf58\ud06c\ub9ac\ud2b8_\ud3ec\uc7a5_\ub3c5\ub9bd_\uae30\uc2ad\ub9c9\uc774", + "target": "pages_b06_section_b06_pavement_revetment_\ub3c5\ub9bd_\uae30\uc2ad\ub9c9\uc774", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_pavement_revetment.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_pavement_revetment_b06_\ubb3c\ub118\uc774\ud3ec\uc7a5_\ucf58\ud06c\ub9ac\ud2b8_\ud3ec\uc7a5_\ub3c5\ub9bd_\uae30\uc2ad\ub9c9\uc774", + "target": "pages_b06_section_b06_pavement_revetment_\ud3ec\uc7a5\uacfc_\ubb3c\ub118\uc774", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_revetment_link_controls.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_revetment_link_controls", + "target": "pages_b06_section_b06_revetment_link_controls_b06_\uae30\uc2ad\ub9c9\uc774_\uc5f0\ub3d9_\uacbd\uc0ac_\ub2e8\ubcc4_\uc81c\uc5b4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_revetment_link_controls.md", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_revetment_link_controls_b06_\uae30\uc2ad\ub9c9\uc774_\uc5f0\ub3d9_\uacbd\uc0ac_\ub2e8\ubcc4_\uc81c\uc5b4", + "target": "pages_b06_section_b06_revetment_link_controls_\uac80\uc99d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_revetment_link_controls.md", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_revetment_link_controls_b06_\uae30\uc2ad\ub9c9\uc774_\uc5f0\ub3d9_\uacbd\uc0ac_\ub2e8\ubcc4_\uc81c\uc5b4", + "target": "pages_b06_section_b06_revetment_link_controls_\ub2e8\ubcc4_\uad6c\uac04\uac12", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_revetment_link_controls.md", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_revetment_link_controls_b06_\uae30\uc2ad\ub9c9\uc774_\uc5f0\ub3d9_\uacbd\uc0ac_\ub2e8\ubcc4_\uc81c\uc5b4", + "target": "pages_b06_section_b06_revetment_link_controls_\uc120\ud0dd\uacfc_\ud558\uc774\ub77c\uc774\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_revetment_link_controls.md", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_revetment_link_controls_b06_\uae30\uc2ad\ub9c9\uc774_\uc5f0\ub3d9_\uacbd\uc0ac_\ub2e8\ubcc4_\uc81c\uc5b4", + "target": "pages_b06_section_b06_revetment_link_controls_\uc5f0\ub3d9\uacfc_\uacbd\uc0ac", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_revetment_link_controls.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_revetment_link_controls_b06_\uae30\uc2ad\ub9c9\uc774_\uc5f0\ub3d9_\uacbd\uc0ac_\ub2e8\ubcc4_\uc81c\uc5b4", + "target": "pages_b06_section_b06_revetment_link_controls_\uc815\ubcf8\uacfc_\uacf5\uc6a9_\ubaa8\ub378", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/B06_revetment_link_controls.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_b06_revetment_link_controls_b06_\uae30\uc2ad\ub9c9\uc774_\uc5f0\ub3d9_\uacbd\uc0ac_\ub2e8\ubcc4_\uc81c\uc5b4", + "target": "pages_b06_section_b06_revetment_link_controls_\ud615\ud0dc\uc640_\uc870\uc815\ucc3d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/backend/B06_Section_Engine_Areas.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_backend_b06_section_engine_areas", + "target": "pages_b06_section_backend_b06_section_engine_areas_b06_section_engine_areas_\ud6a1\ub2e8_\uba74\uc801_\uc801\ubd84_\uc5f0\uc0b0_\uc5d4\uc9c4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/backend/B06_Section_Engine_Areas.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_backend_b06_section_engine_areas_b06_section_engine_areas_\ud6a1\ub2e8_\uba74\uc801_\uc801\ubd84_\uc5f0\uc0b0_\uc5d4\uc9c4", + "target": "pages_b06_section_backend_b06_section_engine_areas_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/backend/B06_Section_Engine_Areas.md", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_backend_b06_section_engine_areas_b06_section_engine_areas_\ud6a1\ub2e8_\uba74\uc801_\uc801\ubd84_\uc5f0\uc0b0_\uc5d4\uc9c4", + "target": "pages_b06_section_backend_b06_section_engine_areas_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/backend/B06_Section_Engine_Areas.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_backend_b06_section_engine_areas_b06_section_engine_areas_\ud6a1\ub2e8_\uba74\uc801_\uc801\ubd84_\uc5f0\uc0b0_\uc5d4\uc9c4", + "target": "pages_b06_section_backend_b06_section_engine_areas_3_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/backend/B06_Section_Router.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_backend_b06_section_router", + "target": "pages_b06_section_backend_b06_section_router_b06_section_router_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/backend/B06_Section_Router.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_backend_b06_section_router_b06_section_router_py", + "target": "pages_b06_section_backend_b06_section_router_\ub77c\uc6b0\ud130_api_\ubc0f_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/backend/B06_Section_Router.md", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_backend_b06_section_router_b06_section_router_py", + "target": "pages_b06_section_backend_b06_section_router_\uc5f0\uad00_\uac1c\ub150_\ubc0f_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/backend/B06_Section_Router_Confirm.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_backend_b06_section_router_confirm", + "target": "pages_b06_section_backend_b06_section_router_confirm_b06_section_router_confirm_\uc784\uc2dc_\uc800\uc7a5_\ubc0f_\ud655\uc815_\ub77c\uc6b0\ud130", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/backend/B06_Section_Router_Confirm.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_backend_b06_section_router_confirm_b06_section_router_confirm_\uc784\uc2dc_\uc800\uc7a5_\ubc0f_\ud655\uc815_\ub77c\uc6b0\ud130", + "target": "pages_b06_section_backend_b06_section_router_confirm_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/backend/B06_Section_Router_Confirm.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_backend_b06_section_router_confirm_b06_section_router_confirm_\uc784\uc2dc_\uc800\uc7a5_\ubc0f_\ud655\uc815_\ub77c\uc6b0\ud130", + "target": "pages_b06_section_backend_b06_section_router_confirm_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/backend/B06_Section_Router_Confirm.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_backend_b06_section_router_confirm_b06_section_router_confirm_\uc784\uc2dc_\uc800\uc7a5_\ubc0f_\ud655\uc815_\ub77c\uc6b0\ud130", + "target": "pages_b06_section_backend_b06_section_router_confirm_3_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_Api_Fetch.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_api_fetch", + "target": "pages_b06_section_frontend_b06_section_api_fetch_b06_section_api_fetch_b06_\ud504\ub860\ud2b8\uc5d4\ub4dc_api_\ud074\ub77c\uc774\uc5b8\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_Api_Fetch.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_api_fetch_b06_section_api_fetch_b06_\ud504\ub860\ud2b8\uc5d4\ub4dc_api_\ud074\ub77c\uc774\uc5b8\ud2b8", + "target": "pages_b06_section_frontend_b06_section_api_fetch_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_Api_Fetch.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_api_fetch_b06_section_api_fetch_b06_\ud504\ub860\ud2b8\uc5d4\ub4dc_api_\ud074\ub77c\uc774\uc5b8\ud2b8", + "target": "pages_b06_section_frontend_b06_section_api_fetch_2_\uc8fc\uc694_\uc5f0\ub3d9_api_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Cross_Areas.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_cross_areas", + "target": "pages_b06_section_frontend_b06_section_ui_cross_areas_b06_section_ui_cross_areas_\ud6a1\ub2e8_\ub2e8\uba74\uc801_\ud45c\uae30_\ubc0f_\ubc34\ub4dc_\ud558\uc774\ub77c\uc774\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Cross_Areas.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_cross_areas_b06_section_ui_cross_areas_\ud6a1\ub2e8_\ub2e8\uba74\uc801_\ud45c\uae30_\ubc0f_\ubc34\ub4dc_\ud558\uc774\ub77c\uc774\ud2b8", + "target": "pages_b06_section_frontend_b06_section_ui_cross_areas_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Cross_Areas.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_cross_areas_b06_section_ui_cross_areas_\ud6a1\ub2e8_\ub2e8\uba74\uc801_\ud45c\uae30_\ubc0f_\ubc34\ub4dc_\ud558\uc774\ub77c\uc774\ud2b8", + "target": "pages_b06_section_frontend_b06_section_ui_cross_areas_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Cross_Areas.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_cross_areas_b06_section_ui_cross_areas_\ud6a1\ub2e8_\ub2e8\uba74\uc801_\ud45c\uae30_\ubc0f_\ubc34\ub4dc_\ud558\uc774\ub77c\uc774\ud2b8", + "target": "pages_b06_section_frontend_b06_section_ui_cross_areas_3_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Cross_Design.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_cross_design", + "target": "pages_b06_section_frontend_b06_section_ui_cross_design_b06_section_ui_cross_design_\ud6a1\ub2e8_\uce21\uc810\ubcc4_\uc138\ubd80_\uc124\uacc4_\ucee8\ud2b8\ub864", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Cross_Design.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_cross_design_b06_section_ui_cross_design_\ud6a1\ub2e8_\uce21\uc810\ubcc4_\uc138\ubd80_\uc124\uacc4_\ucee8\ud2b8\ub864", + "target": "pages_b06_section_frontend_b06_section_ui_cross_design_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Cross_Design.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_cross_design_b06_section_ui_cross_design_\ud6a1\ub2e8_\uce21\uc810\ubcc4_\uc138\ubd80_\uc124\uacc4_\ucee8\ud2b8\ub864", + "target": "pages_b06_section_frontend_b06_section_ui_cross_design_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Cross_Design.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_cross_design_b06_section_ui_cross_design_\ud6a1\ub2e8_\uce21\uc810\ubcc4_\uc138\ubd80_\uc124\uacc4_\ucee8\ud2b8\ub864", + "target": "pages_b06_section_frontend_b06_section_ui_cross_design_3_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_b06_section_ui_masshaul_\uc720\ud1a0\uace1\uc120_\uc801\ubd84_\uacc4\uc0b0_\uc5d4\uc9c4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_b06_section_ui_masshaul_\uc720\ud1a0\uace1\uc120_\uc801\ubd84_\uacc4\uc0b0_\uc5d4\uc9c4", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_b06_section_ui_masshaul_\uc720\ud1a0\uace1\uc120_\uc801\ubd84_\uacc4\uc0b0_\uc5d4\uc9c4", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_b06_section_ui_masshaul_\uc720\ud1a0\uace1\uc120_\uc801\ubd84_\uacc4\uc0b0_\uc5d4\uc9c4", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_3_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_balance", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_b06_section_ui_masshaul_balance_\ud3c9\ud615\uc120_\ubc0f_\uc7a5\ube44_\ub760_\ubd84\ud560_\uc5d4\uc9c4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_b06_section_ui_masshaul_balance_\ud3c9\ud615\uc120_\ubc0f_\uc7a5\ube44_\ub760_\ubd84\ud560_\uc5d4\uc9c4", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_b06_section_ui_masshaul_balance_\ud3c9\ud615\uc120_\ubc0f_\uc7a5\ube44_\ub760_\ubd84\ud560_\uc5d4\uc9c4", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\uc54c\uace0\ub9ac\uc998", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_b06_section_ui_masshaul_balance_\ud3c9\ud615\uc120_\ubc0f_\uc7a5\ube44_\ub760_\ubd84\ud560_\uc5d4\uc9c4", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_3_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance_View.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_view", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_view_b06_section_ui_masshaul_balance_view_\uc6b4\ubc18_\ub760_\uc2dc\uac01\ud654_\ub80c\ub354\ub7ec", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance_View.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_view_b06_section_ui_masshaul_balance_view_\uc6b4\ubc18_\ub760_\uc2dc\uac01\ud654_\ub80c\ub354\ub7ec", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_view_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance_View.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_view_b06_section_ui_masshaul_balance_view_\uc6b4\ubc18_\ub760_\uc2dc\uac01\ud654_\ub80c\ub354\ub7ec", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_view_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ub80c\ub354\ub9c1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance_View.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_view_b06_section_ui_masshaul_balance_view_\uc6b4\ubc18_\ub760_\uc2dc\uac01\ud654_\ub80c\ub354\ub7ec", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_balance_view_3_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balloon.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_balloon", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_balloon_b06_section_ui_masshaul_balloon_\ubb3c\ub7c9_\ub9d0\ud48d\uc120_\ubc30\uce58_\ubc0f_\uc870\uc791", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balloon.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_balloon_b06_section_ui_masshaul_balloon_\ubb3c\ub7c9_\ub9d0\ud48d\uc120_\ubc30\uce58_\ubc0f_\uc870\uc791", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_balloon_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balloon.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_balloon_b06_section_ui_masshaul_balloon_\ubb3c\ub7c9_\ub9d0\ud48d\uc120_\ubc30\uce58_\ubc0f_\uc870\uc791", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_balloon_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\uc54c\uace0\ub9ac\uc998", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balloon.md", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_balloon_b06_section_ui_masshaul_balloon_\ubb3c\ub7c9_\ub9d0\ud48d\uc120_\ubc30\uce58_\ubc0f_\uc870\uc791", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_balloon_3_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Curve.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_curve", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_curve_b06_section_ui_masshaul_curve_\uc720\ud1a0\uace1\uc120_\uada4\uc801_\ubcf4\uac04_\ubc0f_\ub80c\ub354\ub9c1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Curve.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_curve_b06_section_ui_masshaul_curve_\uc720\ud1a0\uace1\uc120_\uada4\uc801_\ubcf4\uac04_\ubc0f_\ub80c\ub354\ub9c1", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_curve_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Curve.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_curve_b06_section_ui_masshaul_curve_\uc720\ud1a0\uace1\uc120_\uada4\uc801_\ubcf4\uac04_\ubc0f_\ub80c\ub354\ub9c1", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_curve_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\uae30\ud558_\uc218\ud559", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Curve.md", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_curve_b06_section_ui_masshaul_curve_\uc720\ud1a0\uace1\uc120_\uada4\uc801_\ubcf4\uac04_\ubc0f_\ub80c\ub354\ub9c1", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_curve_3_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Settle.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_settle", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_settle_b06_section_ui_masshaul_settle_\ud1a0\ub7c9_\uc815\uc0b0_\ubc0f_\uc7a5\uac70\ub9ac_\uc0c1\uc1c4_\uc5d4\uc9c4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Settle.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_settle_b06_section_ui_masshaul_settle_\ud1a0\ub7c9_\uc815\uc0b0_\ubc0f_\uc7a5\uac70\ub9ac_\uc0c1\uc1c4_\uc5d4\uc9c4", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_settle_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Settle.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_settle_b06_section_ui_masshaul_settle_\ud1a0\ub7c9_\uc815\uc0b0_\ubc0f_\uc7a5\uac70\ub9ac_\uc0c1\uc1c4_\uc5d4\uc9c4", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_settle_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ub85c\uc9c1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Settle.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_settle_b06_section_ui_masshaul_settle_\ud1a0\ub7c9_\uc815\uc0b0_\ubc0f_\uc7a5\uac70\ub9ac_\uc0c1\uc1c4_\uc5d4\uc9c4", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_settle_3_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_View.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_view", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_view_b06_section_ui_masshaul_view_\uc720\ud1a0\uace1\uc120_\uc2dc\uac01\ud654_\ub80c\ub354\ub7ec", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_View.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_view_b06_section_ui_masshaul_view_\uc720\ud1a0\uace1\uc120_\uc2dc\uac01\ud654_\ub80c\ub354\ub7ec", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_view_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_View.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_view_b06_section_ui_masshaul_view_\uc720\ud1a0\uace1\uc120_\uc2dc\uac01\ud654_\ub80c\ub354\ub7ec", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_view_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_MassHaul_View.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_masshaul_view_b06_section_ui_masshaul_view_\uc720\ud1a0\uace1\uc120_\uc2dc\uac01\ud654_\ub80c\ub354\ub7ec", + "target": "pages_b06_section_frontend_b06_section_ui_masshaul_view_3_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Page.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_page", + "target": "pages_b06_section_frontend_b06_section_ui_page_b06_section_ui_page_b06_\uba54\uc778_\ud398\uc774\uc9c0_\uc624\ucf00\uc2a4\ud2b8\ub808\uc774\ud130", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Page.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_page_b06_section_ui_page_b06_\uba54\uc778_\ud398\uc774\uc9c0_\uc624\ucf00\uc2a4\ud2b8\ub808\uc774\ud130", + "target": "pages_b06_section_frontend_b06_section_ui_page_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Page.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_page_b06_section_ui_page_b06_\uba54\uc778_\ud398\uc774\uc9c0_\uc624\ucf00\uc2a4\ud2b8\ub808\uc774\ud130", + "target": "pages_b06_section_frontend_b06_section_ui_page_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Page.md", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_page_b06_section_ui_page_b06_\uba54\uc778_\ud398\uc774\uc9c0_\uc624\ucf00\uc2a4\ud2b8\ub808\uc774\ud130", + "target": "pages_b06_section_frontend_b06_section_ui_page_3_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Section_View.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_section_view", + "target": "pages_b06_section_frontend_b06_section_ui_section_view_b06_section_ui_section_view_\uc885_\ud6a1\ub2e8_\ubc0f_\uc720\ud1a0\uace1\uc120_\ubdf0_\uc870\ub9bd", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Section_View.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_section_view_b06_section_ui_section_view_\uc885_\ud6a1\ub2e8_\ubc0f_\uc720\ud1a0\uace1\uc120_\ubdf0_\uc870\ub9bd", + "target": "pages_b06_section_frontend_b06_section_ui_section_view_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Section_View.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_section_view_b06_section_ui_section_view_\uc885_\ud6a1\ub2e8_\ubc0f_\uc720\ud1a0\uace1\uc120_\ubdf0_\uc870\ub9bd", + "target": "pages_b06_section_frontend_b06_section_ui_section_view_2_\uc8fc\uc694_\uae30\ub2a5_\ubc0f_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Section_View.md", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_section_view_b06_section_ui_section_view_\uc885_\ud6a1\ub2e8_\ubc0f_\uc720\ud1a0\uace1\uc120_\ubdf0_\uc870\ub9bd", + "target": "pages_b06_section_frontend_b06_section_ui_section_view_3_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Standard_Diagram.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_standard_diagram", + "target": "pages_b06_section_frontend_b06_section_ui_standard_diagram_b06_section_ui_standard_diagram_\ud45c\uc900\ub2e8\uba74_\ubaa8\uc2dd\ub3c4_\ucef4\ud3ec\ub10c\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Standard_Diagram.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_standard_diagram_b06_section_ui_standard_diagram_\ud45c\uc900\ub2e8\uba74_\ubaa8\uc2dd\ub3c4_\ucef4\ud3ec\ub10c\ud2b8", + "target": "pages_b06_section_frontend_b06_section_ui_standard_diagram_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Standard_Diagram.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_standard_diagram_b06_section_ui_standard_diagram_\ud45c\uc900\ub2e8\uba74_\ubaa8\uc2dd\ub3c4_\ucef4\ud3ec\ub10c\ud2b8", + "target": "pages_b06_section_frontend_b06_section_ui_standard_diagram_2_\uc8fc\uc694_\uae30\ub2a5", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Standard_Panel.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_standard_panel", + "target": "pages_b06_section_frontend_b06_section_ui_standard_panel_b06_section_ui_standard_panel_\ud45c\uc900\ub2e8\uba74_\uc785\ub825_\ubc0f_\uc81c\uc5b4_\ud328\ub110", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Standard_Panel.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_standard_panel_b06_section_ui_standard_panel_\ud45c\uc900\ub2e8\uba74_\uc785\ub825_\ubc0f_\uc81c\uc5b4_\ud328\ub110", + "target": "pages_b06_section_frontend_b06_section_ui_standard_panel_1_\uac1c\uc694_\ubc0f_\uc5ed\ud560", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B06_Section/frontend/B06_Section_UI_Standard_Panel.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b06_section_frontend_b06_section_ui_standard_panel_b06_section_ui_standard_panel_\ud45c\uc900\ub2e8\uba74_\uc785\ub825_\ubc0f_\uc81c\uc5b4_\ud328\ub110", + "target": "pages_b06_section_frontend_b06_section_ui_standard_panel_2_\uc8fc\uc694_\uae30\ub2a5", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B07_DesignDetail/B07_frontend.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b07_designdetail_b07_frontend", + "target": "pages_b07_designdetail_b07_frontend_b07_designdetail_\ud604\uc7ac_\ucc45\uc784", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "weight": 1.0, + "source_file": "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md", + "source_location": "wikilink", + "_origin": "curated", + "source": "pages_b07_designdetail_b07_standard_drawings_2026_09_b07_\uad6c\uc870\ubb3c_\ud45c\uc900\ub3c4_\uc870\uc0ac_\ud569\uc758\uc640_\ud604\uc7ac_\ud1b5\ub85c", + "target": "pages_b07_designdetail_b07_frontend_b07_designdetail_\ud604\uc7ac_\ucc45\uc784" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b07_designdetail_b07_standard_drawings_2026_09", + "target": "pages_b07_designdetail_b07_standard_drawings_2026_09_b07_\uad6c\uc870\ubb3c_\ud45c\uc900\ub3c4_\uc870\uc0ac_\ud569\uc758\uc640_\ud604\uc7ac_\ud1b5\ub85c", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "weight": 1.0, + "source_file": "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md", + "source_location": "wikilink", + "_origin": "curated", + "source": "pages_b07_designdetail_b07_standard_drawings_2026_09_b07_\uad6c\uc870\ubb3c_\ud45c\uc900\ub3c4_\uc870\uc0ac_\ud569\uc758\uc640_\ud604\uc7ac_\ud1b5\ub85c", + "target": "pages_b08_quantity_b08_overview_2026_09_b08_quantity_2026_09_\uc218\ub7c9\uc0b0\ucd9c" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "weight": 1.0, + "source_file": "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md", + "source_location": "wikilink", + "_origin": "curated", + "source": "pages_b07_designdetail_b07_standard_drawings_2026_09_b07_\uad6c\uc870\ubb3c_\ud45c\uc900\ub3c4_\uc870\uc0ac_\ud569\uc758\uc640_\ud604\uc7ac_\ud1b5\ub85c", + "target": "pages_b09_estimation_b09_overview_2026_09_b09_estimation_2026_09_\uc6d0\uac00\uacc4\uc0b0" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b07_designdetail_b07_standard_drawings_2026_09_b07_\uad6c\uc870\ubb3c_\ud45c\uc900\ub3c4_\uc870\uc0ac_\ud569\uc758\uc640_\ud604\uc7ac_\ud1b5\ub85c", + "target": "pages_b07_designdetail_b07_standard_drawings_2026_09_9\uc6d4_9\uc77c_\uad6c\ud604_\uc2e4\uce21_\ubcf4\uac15", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b07_designdetail_b07_standard_drawings_2026_09_b07_\uad6c\uc870\ubb3c_\ud45c\uc900\ub3c4_\uc870\uc0ac_\ud569\uc758\uc640_\ud604\uc7ac_\ud1b5\ub85c", + "target": "pages_b07_designdetail_b07_standard_drawings_2026_09_\uad6c\ud604_\uc9c4\uc785\uc810", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b07_designdetail_b07_standard_drawings_2026_09_b07_\uad6c\uc870\ubb3c_\ud45c\uc900\ub3c4_\uc870\uc0ac_\ud569\uc758\uc640_\ud604\uc7ac_\ud1b5\ub85c", + "target": "pages_b07_designdetail_b07_standard_drawings_2026_09_\uadfc\uac70\uc640_\ub0a8\uc740_\ubd88\ud655\uc2e4\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b07_designdetail_b07_standard_drawings_2026_09_b07_\uad6c\uc870\ubb3c_\ud45c\uc900\ub3c4_\uc870\uc0ac_\ud569\uc758\uc640_\ud604\uc7ac_\ud1b5\ub85c", + "target": "pages_b07_designdetail_b07_standard_drawings_2026_09_\ub370\uc774\ud130_\ud750\ub984", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b07_designdetail_b07_standard_drawings_2026_09_b07_\uad6c\uc870\ubb3c_\ud45c\uc900\ub3c4_\uc870\uc0ac_\ud569\uc758\uc640_\ud604\uc7ac_\ud1b5\ub85c", + "target": "pages_b07_designdetail_b07_standard_drawings_2026_09_\uc870\uc0ac\ub85c_\ud655\uc778\ub41c_\uc124\uacc4_\uc6d0\uce59", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B07_Quantity/B07_backend.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b07_quantity_b07_backend", + "target": "pages_b07_quantity_b07_backend_b07_quantity_backend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B07_Quantity/B07_backend.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b07_quantity_b07_backend_b07_quantity_backend", + "target": "pages_b07_quantity_b07_backend_\uad6c\ud604\ub418\uc9c0_\uc54a\uc740_\ud56d\ubaa9", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B07_Quantity/B07_backend.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b07_quantity_b07_backend_b07_quantity_backend", + "target": "pages_b07_quantity_b07_backend_\uad6c\ud604\ub41c_\ud56d\ubaa9", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B07_Quantity/B07_backend.md", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b07_quantity_b07_backend_b07_quantity_backend", + "target": "pages_b07_quantity_b07_backend_\ucc45\uc784_\uacbd\uacc4_\ubbf8\uacb0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B07_Quantity/B07_db.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b07_quantity_b07_db", + "target": "pages_b07_quantity_b07_db_b07_quantity_db", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B07_Quantity/B07_frontend.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b07_quantity_b07_frontend", + "target": "pages_b07_quantity_b07_frontend_b07_quantity_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B07_Quantity/B07_frontend.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b07_quantity_b07_frontend_b07_quantity_frontend", + "target": "pages_b07_quantity_b07_frontend_\ud604\uc7ac_\uc0ac\uc6a9\uc790_\ub3d9\uc791", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B07_Quantity/backend/B07_Quantity_Router.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b07_quantity_backend_b07_quantity_router", + "target": "pages_b07_quantity_backend_b07_quantity_router_b07_quantity_router_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_blocks.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_blocks", + "target": "pages_b08_designdetail_b08_cad_blocks_b08_cad_\ube14\ub85d_\ub77c\uc774\ube0c\ub7ec\ub9ac_\uc0ac\uc9c4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_blocks.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_blocks_b08_cad_\ube14\ub85d_\ub77c\uc774\ube0c\ub7ec\ub9ac_\uc0ac\uc9c4", + "target": "pages_b08_designdetail_b08_cad_blocks_\uac80\uc99d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_blocks.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_blocks_b08_cad_\ube14\ub85d_\ub77c\uc774\ube0c\ub7ec\ub9ac_\uc0ac\uc9c4", + "target": "pages_b08_designdetail_b08_cad_blocks_\uad6c\ud604", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_blocks.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_blocks_b08_cad_\ube14\ub85d_\ub77c\uc774\ube0c\ub7ec\ub9ac_\uc0ac\uc9c4", + "target": "pages_b08_designdetail_b08_cad_blocks_\ubc94\uc704_\uacb0\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_commands.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_commands", + "target": "pages_b08_designdetail_b08_cad_commands_b08_openwebcad_\uba85\ub839_\uccb4\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_commands.md", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_commands_b08_openwebcad_\uba85\ub839_\uccb4\uacc4", + "target": "pages_b08_designdetail_b08_cad_commands_\uac80\uc99d_\uc81c\ud55c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_commands.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_commands_b08_openwebcad_\uba85\ub839_\uccb4\uacc4", + "target": "pages_b08_designdetail_b08_cad_commands_\uad6c\ud604_\ubc94\uc704", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_commands.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_commands_b08_openwebcad_\uba85\ub839_\uccb4\uacc4", + "target": "pages_b08_designdetail_b08_cad_commands_\ud575\uc2ec_\uad6c\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_interaction.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_interaction", + "target": "pages_b08_designdetail_b08_cad_interaction_b08_cad_\uae30\ubcf8_\uc870\uc791", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_interaction.md", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_interaction_b08_cad_\uae30\ubcf8_\uc870\uc791", + "target": "pages_b08_designdetail_b08_cad_interaction_\uac80\uc99d_\uc81c\uc678", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_interaction.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_interaction_b08_cad_\uae30\ubcf8_\uc870\uc791", + "target": "pages_b08_designdetail_b08_cad_interaction_\uc120\ud0dd_\ud3b8\uc9d1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_interaction.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_interaction_b08_cad_\uae30\ubcf8_\uc870\uc791", + "target": "pages_b08_designdetail_b08_cad_interaction_\uc785\ub825_\uc0c1\ud0dc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_table_entity.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_table_entity", + "target": "pages_b08_designdetail_b08_cad_table_entity_b08_cad_tableentity", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_table_entity.md", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_table_entity_b08_cad_tableentity", + "target": "pages_b08_designdetail_b08_cad_table_entity_\uac80\uc99d_\ud6c4\uc18d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_table_entity.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_table_entity_b08_cad_tableentity", + "target": "pages_b08_designdetail_b08_cad_table_entity_\uae30\ub2a5", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_table_entity.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_table_entity_b08_cad_tableentity", + "target": "pages_b08_designdetail_b08_cad_table_entity_\ubaa8\ub378", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_table_entity.md", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_table_entity_b08_cad_tableentity", + "target": "pages_b08_designdetail_b08_cad_table_entity_\uc774\uad00_\ubc94\uc704", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_title_block.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_title_block", + "target": "pages_b08_designdetail_b08_cad_title_block_b08_cad_\ub3c4\uac01_\ud45c\uc81c\ub780", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_title_block.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_title_block_b08_cad_\ub3c4\uac01_\ud45c\uc81c\ub780", + "target": "pages_b08_designdetail_b08_cad_title_block_\uac12_\uacf5\uae09", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_title_block.md", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_title_block_b08_cad_\ub3c4\uac01_\ud45c\uc81c\ub780", + "target": "pages_b08_designdetail_b08_cad_title_block_\ub3c4\uac01_\ud3b8\uc9d1_\ubcf4\uc874", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_title_block.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_title_block_b08_cad_\ub3c4\uac01_\ud45c\uc81c\ub780", + "target": "pages_b08_designdetail_b08_cad_title_block_\ud68c\uc0ac_\uc790\uc0b0\uacfc_\ub2f4\ub2f9\uc790", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_usability_2026-09-01.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_usability_2026_09_01", + "target": "pages_b08_designdetail_b08_cad_usability_2026_09_01_b08_cad_\uc0ac\uc6a9\uc790_\ud3b8\uc758\uc131_\uc815\ub9ac", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_usability_2026-09-01.md", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_usability_2026_09_01_b08_cad_\uc0ac\uc6a9\uc790_\ud3b8\uc758\uc131_\uc815\ub9ac", + "target": "pages_b08_designdetail_b08_cad_usability_2026_09_01_\uac80\uc99d_\uc0c1\ud0dc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_usability_2026-09-01.md", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_usability_2026_09_01_b08_cad_\uc0ac\uc6a9\uc790_\ud3b8\uc758\uc131_\uc815\ub9ac", + "target": "pages_b08_designdetail_b08_cad_usability_2026_09_01_\uad6c\ud604_\uae30\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_CAD_usability_2026-09-01.md", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_usability_2026_09_01_b08_cad_\uc0ac\uc6a9\uc790_\ud3b8\uc758\uc131_\uc815\ub9ac", + "target": "pages_b08_designdetail_b08_cad_usability_2026_09_01_\uc0ac\uc6a9\uc790_\ud750\ub984", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_api.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_api", + "target": "pages_b08_designdetail_b08_api_b08_designdetail_api", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_api.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_api_b08_designdetail_api", + "target": "pages_b08_designdetail_b08_api_api_\uc5d4\ub4dc\ud3ec\uc778\ud2b8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_backend.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_backend", + "target": "pages_b08_designdetail_b08_backend_b08_designdetail_backend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_backend.md", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_backend_b08_designdetail_backend", + "target": "pages_b08_designdetail_b08_backend_\ub3c4\uac01_\ud15c\ud50c\ub9bf_\ubcc0\ud658_\ubc0f_\uc885\ub2e8\ub3c4_a1_\ub3c4\uac01_\ubcd1\ud569_2026_07_26", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_backend.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_backend_b08_designdetail_backend", + "target": "pages_b08_designdetail_b08_backend_\ub3c4\uba74_\uad00\ub9ac_\uc885\ub2e8_30\uce21\uc810_\ubd84\ud560_cad_\uc218\ub7c9\uc0b0\ucd9c\ud45c_\ubc0f_\ub3c4\uba74_\ud15c\ud50c\ub9bf_\ud30c\uc774\ud504\ub77c\uc778", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_backend.md", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_backend_b08_designdetail_backend", + "target": "pages_b08_designdetail_b08_backend_\uc6cc\ud06c\ud50c\ub85c\uc6b0_\uac8c\uc774\ud305_\uc5f0\ub3d9", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_backend.md", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_backend_b08_designdetail_backend", + "target": "pages_b08_designdetail_b08_backend_\uc885\ub2e8\ub3c4_30\uce21\uc810_n\ubd84\ud560_\ubc0f_\ub0a9\ud488_\uc591\uc2dd_\uce21\uc810_\ud14c\uc774\ube14_2026_07_25_n_1_1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_backend.md", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_backend_b08_designdetail_backend", + "target": "pages_b08_designdetail_b08_backend_\ud604\uc7ac_\ucc45\uc784_\uacbd\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_backend.md", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_backend_b08_designdetail_backend", + "target": "pages_b08_designdetail_b08_backend_\ud6a1\ub2e8\ub3c4_4\uac1c_\uc120\ubcc4_\ub808\uc774\uc5b4_\ubc0f_cad_\uc218\ub7c9\uc0b0\ucd9c\ud45c_2026_07_25_n_1_2_n_1_3", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_cad_delivery_2026_09.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_delivery_2026_09", + "target": "pages_b08_designdetail_b08_cad_delivery_2026_09_b08_cad_\ub0a9\ud488_\ub3c4\uba74_\ud6c4\uc18d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_cad_delivery_2026_09.md", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_delivery_2026_09_b08_cad_\ub0a9\ud488_\ub3c4\uba74_\ud6c4\uc18d", + "target": "pages_b08_designdetail_b08_cad_delivery_2026_09_cad_\ud3b8\uc9d1_\ud655\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_cad_delivery_2026_09.md", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cad_delivery_2026_09_b08_cad_\ub0a9\ud488_\ub3c4\uba74_\ud6c4\uc18d", + "target": "pages_b08_designdetail_b08_cad_delivery_2026_09_\ud1a0\uc801\ub3c4_\uc720\uc5ed\ub3c4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_cross_structure_sheets.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cross_structure_sheets", + "target": "pages_b08_designdetail_b08_cross_structure_sheets_b08_\ud6a1\ub2e8\ub3c4_\uad6c\uc870\ubb3c_\uc7a5_\ubc30\uce58", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_cross_structure_sheets.md", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cross_structure_sheets_b08_\ud6a1\ub2e8\ub3c4_\uad6c\uc870\ubb3c_\uc7a5_\ubc30\uce58", + "target": "pages_b08_designdetail_b08_cross_structure_sheets_\uacb0\uacfc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_cross_structure_sheets.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cross_structure_sheets_b08_\ud6a1\ub2e8\ub3c4_\uad6c\uc870\ubb3c_\uc7a5_\ubc30\uce58", + "target": "pages_b08_designdetail_b08_cross_structure_sheets_\ub370\uc774\ud130_\uad6c\ud604_\ud750\ub984", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_cross_structure_sheets.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cross_structure_sheets_b08_\ud6a1\ub2e8\ub3c4_\uad6c\uc870\ubb3c_\uc7a5_\ubc30\uce58", + "target": "pages_b08_designdetail_b08_cross_structure_sheets_\ubb38\uc81c\uc640_\uacb0\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_cross_structure_sheets.md", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_cross_structure_sheets_b08_\ud6a1\ub2e8\ub3c4_\uad6c\uc870\ubb3c_\uc7a5_\ubc30\uce58", + "target": "pages_b08_designdetail_b08_cross_structure_sheets_\ud55c\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_dependencies.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_dependencies", + "target": "pages_b08_designdetail_b08_dependencies_b08_designdetail_dependencies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_dependencies.md", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_dependencies_b08_designdetail_dependencies", + "target": "pages_b08_designdetail_b08_dependencies_backend_requirements_txt", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_dependencies.md", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_dependencies_b08_designdetail_dependencies", + "target": "pages_b08_designdetail_b08_dependencies_frontend_package_json_tsconfig_json", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_drawing_masshaul_watershed", + "target": "pages_b08_designdetail_b08_drawing_masshaul_watershed_b08_\ud1a0\uc801\ub3c4_\uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_drawing_masshaul_watershed_b08_\ud1a0\uc801\ub3c4_\uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "target": "pages_b08_designdetail_b08_drawing_masshaul_watershed_\uac80\uc99d_\ud55c\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_drawing_masshaul_watershed_b08_\ud1a0\uc801\ub3c4_\uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "target": "pages_b08_designdetail_b08_drawing_masshaul_watershed_\uad6c\ud604_\uac80\uc99d_\uc644\ub8cc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_drawing_masshaul_watershed_b08_\ud1a0\uc801\ub3c4_\uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "target": "pages_b08_designdetail_b08_drawing_masshaul_watershed_\ub0a8\uc740_\uacb0\uc815", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_drawing_masshaul_watershed_b08_\ud1a0\uc801\ub3c4_\uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "target": "pages_b08_designdetail_b08_drawing_masshaul_watershed_\ub370\uc774\ud130_\ud750\ub984", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_drawing_masshaul_watershed_b08_\ud1a0\uc801\ub3c4_\uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "target": "pages_b08_designdetail_b08_drawing_masshaul_watershed_\ub3c4\uba74_\uae30\uc900", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_drawing_masshaul_watershed_b08_\ud1a0\uc801\ub3c4_\uc218\ub9ac\uc9d1\uc218\uba74\uc801\uc720\uc5ed\ub3c4", + "target": "pages_b08_designdetail_b08_drawing_masshaul_watershed_\uc720\uc5ed_\uc815\ubcf4\ud45c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_frontend.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_frontend", + "target": "pages_b08_designdetail_b08_frontend_b08_designdetail_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_frontend.md", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_frontend_b08_designdetail_frontend", + "target": "pages_b08_designdetail_b08_frontend_cad_\uacc4\ud68d\uc120_\ub808\uc774\uc5b4_\uc5f0\ub3d9_\ubc0f_\ud3b8\uc9d1_\uc9c0\uc6d0_2026_07_22", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_frontend.md", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_frontend_b08_designdetail_frontend", + "target": "pages_b08_designdetail_b08_frontend_openwebcad_\ub2e8\uc704_\uc815\ud569_\uc120_\ud2b9\uc131_\ud3f0\ud2b8_ui_\ubc0f_fit_in_all_2026_07_20", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_frontend.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_frontend_b08_designdetail_frontend", + "target": "pages_b08_designdetail_b08_frontend_\ub3c5\ub9bd\ud615_cad_\uc784\ubca0\ub4dc_\ubc0f_\ub370\uc774\ud130_\uc5f0\ub3d9_\uc544\ud0a4\ud14d\ucc98", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_frontend.md", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_frontend_b08_designdetail_frontend", + "target": "pages_b08_designdetail_b08_frontend_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_frontend.md", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_frontend_b08_designdetail_frontend", + "target": "pages_b08_designdetail_b08_frontend_\uc8fc\uc694_\ucef4\ud3ec\ub10c\ud2b8_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/B08_frontend.md", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_b08_frontend_b08_designdetail_frontend", + "target": "pages_b08_designdetail_b08_frontend_\ud30c\uc77c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/backend/B08_DesignDetail_Router.md", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_backend_b08_designdetail_router", + "target": "pages_b08_designdetail_backend_b08_designdetail_router_b08_designdetail_router_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_DesignDetail/backend/B08_DesignDetail_Router.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_designdetail_backend_b08_designdetail_router_b08_designdetail_router_py", + "target": "pages_b08_designdetail_backend_b08_designdetail_router_\uc2e4\uc81c_api", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_Quantity/B08_2026_09_09_completion.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_quantity_b08_2026_09_09_completion", + "target": "pages_b08_quantity_b08_2026_09_09_completion_b08_\uc218\ub7c9\uc0b0\ucd9c_2026_09_09_\uc644\ub8cc_\uadfc\uac70", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_Quantity/B08_2026_09_09_completion.md", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_quantity_b08_2026_09_09_completion_b08_\uc218\ub7c9\uc0b0\ucd9c_2026_09_09_\uc644\ub8cc_\uadfc\uac70", + "target": "pages_b08_quantity_b08_2026_09_09_completion_\uac80\uc99d_\uae30\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_Quantity/B08_2026_09_09_completion.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_quantity_b08_2026_09_09_completion_b08_\uc218\ub7c9\uc0b0\ucd9c_2026_09_09_\uc644\ub8cc_\uadfc\uac70", + "target": "pages_b08_quantity_b08_2026_09_09_completion_\uad6c\uc870\ubb3c_\uc218\ub7c9_\ud45c\uc2dc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_Quantity/B08_2026_09_09_completion.md", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_quantity_b08_2026_09_09_completion_b08_\uc218\ub7c9\uc0b0\ucd9c_2026_09_09_\uc644\ub8cc_\uadfc\uac70", + "target": "pages_b08_quantity_b08_2026_09_09_completion_\ub0a8\uc740_\uacbd\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_Quantity/B08_2026_09_09_completion.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_quantity_b08_2026_09_09_completion_b08_\uc218\ub7c9\uc0b0\ucd9c_2026_09_09_\uc644\ub8cc_\uadfc\uac70", + "target": "pages_b08_quantity_b08_2026_09_09_completion_\ubc11\uc218\uc640_\uc778\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_Quantity/B08_overview_2026_09.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_quantity_b08_overview_2026_09", + "target": "pages_b08_quantity_b08_overview_2026_09_b08_quantity_2026_09_\uc218\ub7c9\uc0b0\ucd9c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_Quantity/B08_overview_2026_09.md", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_quantity_b08_overview_2026_09_b08_quantity_2026_09_\uc218\ub7c9\uc0b0\ucd9c", + "target": "pages_b08_quantity_b08_overview_2026_09_\uac80\uc99d\ub41c_\ud750\ub984", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_Quantity/B08_overview_2026_09.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_quantity_b08_overview_2026_09_b08_quantity_2026_09_\uc218\ub7c9\uc0b0\ucd9c", + "target": "pages_b08_quantity_b08_overview_2026_09_\uad6c\ud604_\uad6c\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B08_Quantity/B08_overview_2026_09.md", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b08_quantity_b08_overview_2026_09_b08_quantity_2026_09_\uc218\ub7c9\uc0b0\ucd9c", + "target": "pages_b08_quantity_b08_overview_2026_09_\uc644\ub8cc_\uc81c\ud55c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B09_Estimation/B09_2026_09_09_completion.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b09_estimation_b09_2026_09_09_completion", + "target": "pages_b09_estimation_b09_2026_09_09_completion_b09_\uc6d0\uac00\uacc4\uc0b0_2026_09_09_\uc644\ub8cc_\uadfc\uac70", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B09_Estimation/B09_2026_09_09_completion.md", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b09_estimation_b09_2026_09_09_completion_b09_\uc6d0\uac00\uacc4\uc0b0_2026_09_09_\uc644\ub8cc_\uadfc\uac70", + "target": "pages_b09_estimation_b09_2026_09_09_completion_\uac00\uaca9_\uc870\uac74_\uc785\ub825", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B09_Estimation/B09_2026_09_09_completion.md", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b09_estimation_b09_2026_09_09_completion_b09_\uc6d0\uac00\uacc4\uc0b0_2026_09_09_\uc644\ub8cc_\uadfc\uac70", + "target": "pages_b09_estimation_b09_2026_09_09_completion_\uac80\uc99d_\uae30\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B09_Estimation/B09_2026_09_09_completion.md", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b09_estimation_b09_2026_09_09_completion_b09_\uc6d0\uac00\uacc4\uc0b0_2026_09_09_\uc644\ub8cc_\uadfc\uac70", + "target": "pages_b09_estimation_b09_2026_09_09_completion_\uae30\uacc4_\uc81c\ube44\uc728_\uc0b0\ucd9c\ubb3c", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B09_Estimation/B09_2026_09_09_completion.md", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b09_estimation_b09_2026_09_09_completion_b09_\uc6d0\uac00\uacc4\uc0b0_2026_09_09_\uc644\ub8cc_\uadfc\uac70", + "target": "pages_b09_estimation_b09_2026_09_09_completion_\ub0a8\uc740_\uacbd\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B09_Estimation/B09_2026_09_09_completion.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b09_estimation_b09_2026_09_09_completion_b09_\uc6d0\uac00\uacc4\uc0b0_2026_09_09_\uc644\ub8cc_\uadfc\uac70", + "target": "pages_b09_estimation_b09_2026_09_09_completion_\ub2e8\uac00_\ubc11\uc218_\uc644\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B09_Estimation/B09_frontend.md", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b09_estimation_b09_frontend", + "target": "pages_b09_estimation_b09_frontend_b09_estimation_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B09_Estimation/B09_frontend.md", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b09_estimation_b09_frontend_b09_estimation_frontend", + "target": "pages_b09_estimation_b09_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B09_Estimation/B09_frontend.md", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b09_estimation_b09_frontend_b09_estimation_frontend", + "target": "pages_b09_estimation_b09_frontend_\ubc31\uc5d4\ub4dc_db_\ubbf8\ucc29\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B09_Estimation/B09_frontend.md", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b09_estimation_b09_frontend_b09_estimation_frontend", + "target": "pages_b09_estimation_b09_frontend_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B09_Estimation/B09_frontend.md", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b09_estimation_b09_frontend_b09_estimation_frontend", + "target": "pages_b09_estimation_b09_frontend_\ucc38\uace0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B09_Estimation/B09_frontend.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b09_estimation_b09_frontend_b09_estimation_frontend", + "target": "pages_b09_estimation_b09_frontend_\ucef4\ud3ec\ub10c\ud2b8_\ud568\uc218", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B09_Estimation/B09_frontend.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b09_estimation_b09_frontend_b09_estimation_frontend", + "target": "pages_b09_estimation_b09_frontend_\ud30c\uc77c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B09_Estimation/B09_overview_2026_09.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b09_estimation_b09_overview_2026_09", + "target": "pages_b09_estimation_b09_overview_2026_09_b09_estimation_2026_09_\uc6d0\uac00\uacc4\uc0b0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B09_Estimation/B09_overview_2026_09.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b09_estimation_b09_overview_2026_09_b09_estimation_2026_09_\uc6d0\uac00\uacc4\uc0b0", + "target": "pages_b09_estimation_b09_overview_2026_09_\uad6c\ud604_\uad6c\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B09_Estimation/B09_overview_2026_09.md", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b09_estimation_b09_overview_2026_09_b09_estimation_2026_09_\uc6d0\uac00\uacc4\uc0b0", + "target": "pages_b09_estimation_b09_overview_2026_09_\ub9c8\uac10_\uae30\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B09_Estimation/B09_overview_2026_09.md", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b09_estimation_b09_overview_2026_09_b09_estimation_2026_09_\uc6d0\uac00\uacc4\uc0b0", + "target": "pages_b09_estimation_b09_overview_2026_09_\uc644\ub8cc_\uacbd\uacc4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B09_Estimation/frontend/B09_Estimation_UI_Page.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b09_estimation_frontend_b09_estimation_ui_page", + "target": "pages_b09_estimation_frontend_b09_estimation_ui_page_b09_estimation_ui_page_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B09_Estimation/frontend/B09_Estimation_UI_Page.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b09_estimation_frontend_b09_estimation_ui_page_b09_estimation_ui_page_ts", + "target": "pages_b09_estimation_frontend_b09_estimation_ui_page_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B10_Payment/B10_frontend.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b10_payment_b10_frontend", + "target": "pages_b10_payment_b10_frontend_b10_payment_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B10_Payment/B10_frontend.md", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b10_payment_b10_frontend_b10_payment_frontend", + "target": "pages_b10_payment_b10_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B10_Payment/B10_frontend.md", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b10_payment_b10_frontend_b10_payment_frontend", + "target": "pages_b10_payment_b10_frontend_\ube44\uc988\ub2c8\uc2a4_\ub85c\uc9c1_\uc804\uc81c_\ubaa9\uc5c5", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B10_Payment/B10_frontend.md", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b10_payment_b10_frontend_b10_payment_frontend", + "target": "pages_b10_payment_b10_frontend_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B10_Payment/B10_frontend.md", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b10_payment_b10_frontend_b10_payment_frontend", + "target": "pages_b10_payment_b10_frontend_\uc8fc\uc694_\ucef4\ud3ec\ub10c\ud2b8_\ubc0f_\ud568\uc218_mockup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B10_Payment/B10_frontend.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b10_payment_b10_frontend_b10_payment_frontend", + "target": "pages_b10_payment_b10_frontend_\ud30c\uc77c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B10_Payment/frontend/B10_Payment_UI_Page.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b10_payment_frontend_b10_payment_ui_page", + "target": "pages_b10_payment_frontend_b10_payment_ui_page_b10_payment_ui_page_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B10_Payment/frontend/B10_Payment_UI_Page.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b10_payment_frontend_b10_payment_ui_page_b10_payment_ui_page_ts", + "target": "pages_b10_payment_frontend_b10_payment_ui_page_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B11_Status/B11_frontend.md", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b11_status_b11_frontend", + "target": "pages_b11_status_b11_frontend_b11_status_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B11_Status/B11_frontend.md", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b11_status_b11_frontend_b11_status_frontend", + "target": "pages_b11_status_b11_frontend_\uacb0\uc7ac_\uc0c1\ud0dc_\ud750\ub984_payment_flow_status", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B11_Status/B11_frontend.md", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b11_status_b11_frontend_b11_status_frontend", + "target": "pages_b11_status_b11_frontend_\ub85c\uceec\ub77c\uc774\uc81c\uc774\uc158", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B11_Status/B11_frontend.md", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b11_status_b11_frontend_b11_status_frontend", + "target": "pages_b11_status_b11_frontend_\uc758\uc874\uc131", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B11_Status/B11_frontend.md", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b11_status_b11_frontend_b11_status_frontend", + "target": "pages_b11_status_b11_frontend_\uc8fc\uc694_\ucef4\ud3ec\ub10c\ud2b8_\ubc0f_\uae30\ub2a5_mockup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B11_Status/B11_frontend.md", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b11_status_b11_frontend_b11_status_frontend", + "target": "pages_b11_status_b11_frontend_\ud30c\uc77c_\uad6c\uc870", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B11_Status/frontend/B11_Status_UI_Page.md", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b11_status_frontend_b11_status_ui_page", + "target": "pages_b11_status_frontend_b11_status_ui_page_b11_status_ui_page_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "pages/B11_Status/frontend/B11_Status_UI_Page.md", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast", + "source": "pages_b11_status_frontend_b11_status_ui_page_b11_status_ui_page_ts", + "target": "pages_b11_status_frontend_b11_status_ui_page_\uc8fc\uc694_\ud568\uc218_\ubaa9\ub85d", + "confidence_score": 1.0 + } + ], + "hyperedges": [ + { + "id": "workflow_b03_b08_integration", + "label": "B03-B08 Workflow Data Flow", + "nodes": [ + "b03_fileinput_route_snapshot_crs", + "b04_preprocess_drainage_compass_crs", + "b05_profile_frontend", + "b06_section_cross_design_ui_2026_09", + "b08_designdetail_frontend" + ], + "relation": "participate_in", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "index.md" + }, + { + "id": "mass_haul_shared_logic", + "label": "Shared Mass Haul Calculation and UI", + "nodes": [ + "b05_profile_masshaul_structure_2026_09", + "b06_section_masshaul_culvert_2026_09", + "b08_designdetail_cad_delivery_2026_09" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 0.85, + "source_file": "pages/B05_Profile/B05_masshaul_structure_2026_09.md" + }, + { + "id": "cad_delivery_system", + "label": "CAD Delivery and Usability Framework", + "nodes": [ + "b08_designdetail_cad_interaction", + "b08_designdetail_cad_title_block", + "b08_designdetail_cad_usability_2026_09_01", + "b08_designdetail_cad_delivery_2026_09" + ], + "relation": "form", + "confidence": "EXTRACTED", + "confidence_score": 0.95, + "source_file": "pages/B08_DesignDetail/B08_cad_delivery_2026_09.md" + }, + { + "id": "las_free_workflow_chain", + "label": "LAS-Free Analysis Workflow", + "nodes": [ + "concepts_las_free_sheet_surface", + "pages_b03_fileinput_backend", + "pages_b04_preprocess_backend" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "concepts/las_free_sheet_surface.md" + }, + { + "id": "b08_drawing_generation_flow", + "label": "B08 Drawing Generation Flow", + "nodes": [ + "b08_designdetail_b08_designdetail_engine_cad_masshaul_py", + "b08_designdetail_b08_designdetail_engine_cad_basin_py", + "common_util_common_util_mass_haul_settle_ts" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 0.9, + "source_file": "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md" + }, + { + "id": "drainage_system_flow", + "label": "Drainage System Workflow", + "nodes": [ + "concepts_drainage_watershed", + "pages_b05_profile_b05_structures", + "pages_b06_section_b06_culvert_set", + "pages_b06_section_b06_culvert_geometry_redesign" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 0.95, + "source_file": "concepts/drainage_watershed.md" + }, + { + "id": "mass_haul_system", + "label": "Mass Haul Diagram System", + "nodes": [ + "concepts_mass_haul_diagram", + "pages_b06_section_b06_frontend", + "pages_b08_designdetail_b08_drawing_masshaul_watershed" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 0.9, + "source_file": "concepts/mass_haul_diagram.md" + }, + { + "id": "corridor_3d_generation", + "label": "3D Corridor Generation Flow", + "nodes": [ + "pages_b05_profile_b05_corridor_surface", + "pages_b05_profile_b05_corridor_plan_curves", + "pages_b05_profile_b05_corridor_cut_fill", + "pages_b05_profile_b05_corridor_patch_finish" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 0.9, + "source_file": "pages/B05_Profile/B05_corridor_surface.md" + }, + { + "id": "workflow_late_stages", + "label": "Late Workflow Stages (B07-B09)", + "nodes": [ + "pages_b07_quantity_b07_frontend", + "pages_b08_designdetail_b08_frontend", + "pages_b09_estimation_b09_frontend" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 1.0 + } + ], + "built_at_commit": "e49e4d8526c0c6fc08d488546cda8445dbea1a31" +} \ No newline at end of file diff --git a/docs/wiki/graphify-out/2026-09-12/manifest.json b/docs/wiki/graphify-out/2026-09-12/manifest.json new file mode 100644 index 00000000..d6205d55 --- /dev/null +++ b/docs/wiki/graphify-out/2026-09-12/manifest.json @@ -0,0 +1,1077 @@ +{ + "AGENTS.md": { + "mtime": 1786880751.6641867, + "ast_hash": "8c14c5a30d4d9389a046a086add3d0af", + "semantic_hash": "8c14c5a30d4d9389a046a086add3d0af" + }, + "CLAUDE.md": { + "mtime": 1786880752.3813233, + "ast_hash": "8c14c5a30d4d9389a046a086add3d0af", + "semantic_hash": "8c14c5a30d4d9389a046a086add3d0af" + }, + "architecture/project_map.md": { + "mtime": 1789128566.0330584, + "ast_hash": "556476458393d44feffa512e450b479e", + "semantic_hash": "" + }, + "architecture/public_admin_map.md": { + "mtime": 1789128566.034232, + "ast_hash": "2447c32a67951819086761e51d6d5102", + "semantic_hash": "" + }, + "architecture/shared_resources.md": { + "mtime": 1789128566.0356302, + "ast_hash": "cdeed43bee12484ec7cfac72071a7b0a", + "semantic_hash": "" + }, + "architecture/workflow_data_flow.md": { + "mtime": 1789128566.0356302, + "ast_hash": "1b92d912c7e8e0f22e23148f2ef687cb", + "semantic_hash": "" + }, + "concepts/a00_app_shell_framework.md": { + "mtime": 1789128566.0366566, + "ast_hash": "95fc25921a9b093d5f36d4fb6349288b", + "semantic_hash": "" + }, + "concepts/a00_app_shell_framework_scaffold.md": { + "mtime": 1789128566.0377986, + "ast_hash": "dbdb757e2c768a7113287507b57b18b0", + "semantic_hash": "" + }, + "concepts/api_common.md": { + "mtime": 1789128566.0388083, + "ast_hash": "171549ac76cc4b6b3519a63fe415b56e", + "semantic_hash": "" + }, + "concepts/auth_rbac.md": { + "mtime": 1789128566.0398786, + "ast_hash": "075229c640d39ac3fc1259be1db52215", + "semantic_hash": "" + }, + "concepts/b07_external_webcad_demos.md": { + "mtime": 1789128566.0408757, + "ast_hash": "7d7092662d0cf393ad2cc0d0554266fe", + "semantic_hash": "" + }, + "concepts/common_util.md": { + "mtime": 1789128566.1206372, + "ast_hash": "bb48aa43cb6fadf2e4301fcbad6c5fa6", + "semantic_hash": "" + }, + "concepts/common_util/common_util_project_delete.md": { + "mtime": 1789128566.121634, + "ast_hash": "620a44fb84ccb212cea2712e1b7f084b", + "semantic_hash": "" + }, + "concepts/common_util/common_util_storage.md": { + "mtime": 1789128566.12285, + "ast_hash": "79cc1feaede8179e4c864b9a23a0a57a", + "semantic_hash": "" + }, + "concepts/common_util/common_util_workflow_state.md": { + "mtime": 1789128566.12285, + "ast_hash": "9d9f0d554b0fbdc2eddb9e6d8d589d28", + "semantic_hash": "" + }, + "concepts/crs_metadata.md": { + "mtime": 1789128566.1300607, + "ast_hash": "032f1f7737a80af043bd2566d74c52b7", + "semantic_hash": "" + }, + "concepts/db_schema/files_surface.md": { + "mtime": 1789128566.131064, + "ast_hash": "a9ab97a793f6b3384f6674513ffc81c4", + "semantic_hash": "" + }, + "concepts/db_schema/logs_monitoring.md": { + "mtime": 1789128566.1321313, + "ast_hash": "483c75e4cc63ee236ed5624906f65e2a", + "semantic_hash": "" + }, + "concepts/db_schema/overview.md": { + "mtime": 1789128566.1321313, + "ast_hash": "465734d377e1c3419162c7fd5843b267", + "semantic_hash": "" + }, + "concepts/db_schema/projects.md": { + "mtime": 1789128566.1336615, + "ast_hash": "d461dae8f46a9cbca107a08d23f34bf0", + "semantic_hash": "" + }, + "concepts/db_schema/route_profile.md": { + "mtime": 1789128566.1336615, + "ast_hash": "07a31167bc60a798f5f7133f7a7ad26f", + "semantic_hash": "" + }, + "concepts/db_schema/route_profile/longitudinal_alignment.md": { + "mtime": 1789128566.136254, + "ast_hash": "5b909c2f3029fadf5a33de6563437a1d", + "semantic_hash": "" + }, + "concepts/db_schema/structure_output.md": { + "mtime": 1789128566.1373663, + "ast_hash": "6eb1b8feb2b81006ccb50360ea3f1062", + "semantic_hash": "" + }, + "concepts/db_schema/unconfirmed/README.md": { + "mtime": 1789128566.1383636, + "ast_hash": "3ed0f883b27f3d7ea52aaf20f40b8f1a", + "semantic_hash": "" + }, + "concepts/db_schema/users_auth.md": { + "mtime": 1789128566.1394808, + "ast_hash": "77b34c3f175a1fe9e71aca5f178ab5b0", + "semantic_hash": "" + }, + "concepts/dependencies.md": { + "mtime": 1789128566.1394808, + "ast_hash": "a3396fdb66d38d4a73ca521d5a18f1b2", + "semantic_hash": "" + }, + "concepts/design.md": { + "mtime": 1789128566.1405194, + "ast_hash": "dc63c2d93bbfa77bee9387a068c98640", + "semantic_hash": "" + }, + "concepts/drainage_watershed.md": { + "mtime": 1789128566.141651, + "ast_hash": "43a403e9b54273b65d5c34c3861c501c", + "semantic_hash": "" + }, + "concepts/law_source_quality.md": { + "mtime": 1789128566.1426482, + "ast_hash": "c52d09989d899c7a895c478efc34041a", + "semantic_hash": "" + }, + "concepts/mass_haul_diagram.md": { + "mtime": 1789128566.1437485, + "ast_hash": "a92a1232a2a992e546787cb6a5298a8d", + "semantic_hash": "" + }, + "concepts/schema_common.md": { + "mtime": 1789128566.1459785, + "ast_hash": "9e6cf4ff97b652234f9c3b84d05b9fdf", + "semantic_hash": "" + }, + "concepts/storage_paths.md": { + "mtime": 1789128566.1483488, + "ast_hash": "7dd43770b71fd5e3cc8170f6f5046097", + "semantic_hash": "" + }, + "concepts/temp_upload.md": { + "mtime": 1789128566.1493528, + "ast_hash": "da65faea55cfd3ba3278a6a76bb363ad", + "semantic_hash": "" + }, + "concepts/ui_templates.md": { + "mtime": 1789128566.1507905, + "ast_hash": "731ff804f065adeba7ca77a94bdad77b", + "semantic_hash": "" + }, + "concepts/workflow_state.md": { + "mtime": 1789128566.151879, + "ast_hash": "b16b89ab0947a7f22c6563816c2d7a64", + "semantic_hash": "" + }, + "index.md": { + "mtime": 1789132135.2547836, + "ast_hash": "07f8a8513e83d93de0bf992e1fc4e501", + "semantic_hash": "" + }, + "ingest/index.md": { + "mtime": 1786880981.4434, + "ast_hash": "e8b3c3d26ba092de3aedde1f46dd60f8", + "semantic_hash": "e8b3c3d26ba092de3aedde1f46dd60f8" + }, + "ingest/plan_2026_07.md": { + "mtime": 1786880981.419769, + "ast_hash": "ece97b7cfa1eac6b908f90e9101ecca7", + "semantic_hash": "ece97b7cfa1eac6b908f90e9101ecca7" + }, + "ingest/plan_2026_08.md": { + "mtime": 1786880981.4207659, + "ast_hash": "02c8befd6598478fd00387c309b17f08", + "semantic_hash": "02c8befd6598478fd00387c309b17f08" + }, + "ingest/plan_undated.md": { + "mtime": 1786880981.4217622, + "ast_hash": "a3ad1c0ba0fd76411040506899b2e813", + "semantic_hash": "a3ad1c0ba0fd76411040506899b2e813" + }, + "ingest/verification_2026_07.md": { + "mtime": 1786880981.4237561, + "ast_hash": "497f8801e69d22503224cc0b172ed0be", + "semantic_hash": "497f8801e69d22503224cc0b172ed0be" + }, + "ingest/verification_2026_08.md": { + "mtime": 1786880981.4247527, + "ast_hash": "a602400bb7ce84048c5d781e44111865", + "semantic_hash": "a602400bb7ce84048c5d781e44111865" + }, + "log.md": { + "mtime": 1786881299.4302566, + "ast_hash": "95e0f5f93abefcafc03cfb81ca629fa9", + "semantic_hash": "95e0f5f93abefcafc03cfb81ca629fa9" + }, + "pages/A00_Common/A00_Common.md": { + "mtime": 1789128566.8804462, + "ast_hash": "2ab3890901eeb5ffe678fa27fa3861c0", + "semantic_hash": "" + }, + "pages/A00_Common/frontend/A00_Common_AppShell.md": { + "mtime": 1789128566.882205, + "ast_hash": "a041f556de2ce40ed050fd4ab59f8532", + "semantic_hash": "" + }, + "pages/A00_Common/frontend/A00_Common_Router.md": { + "mtime": 1789128566.882205, + "ast_hash": "cef9f5f94d267e113da4b1dcf9152a9c", + "semantic_hash": "" + }, + "pages/A01_Home/A01_components.md": { + "mtime": 1789128566.883238, + "ast_hash": "d9ad46a928aa0f5117fe6039daf9ca31", + "semantic_hash": "" + }, + "pages/A01_Home/A01_frontend.md": { + "mtime": 1789128566.8842337, + "ast_hash": "623e409084424236968c6acbd4914108", + "semantic_hash": "" + }, + "pages/A01_Home/frontend/A01_Home_UI_Page.md": { + "mtime": 1789128566.8842337, + "ast_hash": "d0f1616b1ef6297bcb84cacc684ec902", + "semantic_hash": "" + }, + "pages/A02_ProgDetail/A02_components.md": { + "mtime": 1789128566.886198, + "ast_hash": "5c5bd6b0af702819b5ff6b2a6cb1339f", + "semantic_hash": "" + }, + "pages/A02_ProgDetail/A02_frontend.md": { + "mtime": 1789128566.8872313, + "ast_hash": "2f9844d58386d5dd6e9a0eb7188e9fa8", + "semantic_hash": "" + }, + "pages/A02_ProgDetail/frontend/A02_ProgDetail_UI_Page.md": { + "mtime": 1789128566.8882287, + "ast_hash": "d9f42bce9ca5aae43942650c4afdddda", + "semantic_hash": "" + }, + "pages/A03_CompDetail/A03_frontend.md": { + "mtime": 1789128566.8887608, + "ast_hash": "dad3aa0aa50b5f2707b349a020494ee3", + "semantic_hash": "" + }, + "pages/A04_NewsHistory/A04_frontend.md": { + "mtime": 1789128566.8897903, + "ast_hash": "0f18979b25fd7e002827b03883702798", + "semantic_hash": "" + }, + "pages/A05_EduDetail/A05_frontend.md": { + "mtime": 1789128566.8908274, + "ast_hash": "07b546c7cf59811a8c3bbbd46a8f4cbd", + "semantic_hash": "" + }, + "pages/A06_Login/A06_backend.md": { + "mtime": 1789128566.8931077, + "ast_hash": "f3f0b8a5e738fb1f44993f7ae468dd47", + "semantic_hash": "" + }, + "pages/A06_Login/A06_frontend.md": { + "mtime": 1789128566.894197, + "ast_hash": "ec2f570016c9117fb40e66b1607fc4cd", + "semantic_hash": "" + }, + "pages/A06_Login/backend/A06_Login_Router.md": { + "mtime": 1789128566.8952265, + "ast_hash": "99da12b382fbe1f0821c078f7a6aae7c", + "semantic_hash": "" + }, + "pages/A07_Register/A07_backend.md": { + "mtime": 1789128566.8962512, + "ast_hash": "92a7892eb9565cd7b01acf37aef2f568", + "semantic_hash": "" + }, + "pages/A07_Register/A07_frontend.md": { + "mtime": 1789128566.8962512, + "ast_hash": "5ffaea054363fa85a6bd0934e9c61aea", + "semantic_hash": "" + }, + "pages/A07_Register/backend/A07_Register_Router.md": { + "mtime": 1789128566.8972814, + "ast_hash": "632cd0718771c89b51c4b414e565ef34", + "semantic_hash": "" + }, + "pages/A08_Support/A08_backend.md": { + "mtime": 1789128566.8984466, + "ast_hash": "68598d433fbf69cfa14aff3599285db1", + "semantic_hash": "" + }, + "pages/A08_Support/A08_frontend.md": { + "mtime": 1789128566.8994758, + "ast_hash": "138ecc14ea2a5225e76444011821937d", + "semantic_hash": "" + }, + "pages/A08_Support/backend/A08_Support_Router.md": { + "mtime": 1789128566.9005065, + "ast_hash": "3a74550b70be24659ea268e7edfa4b91", + "semantic_hash": "" + }, + "pages/A09_Security/A09_backend.md": { + "mtime": 1789128566.9005065, + "ast_hash": "13a6df75b7593a805d7ae63949be1db8", + "semantic_hash": "" + }, + "pages/A09_Security/A09_frontend.md": { + "mtime": 1789128566.901871, + "ast_hash": "e6e961fb2aece3948754b9d373ad7074", + "semantic_hash": "" + }, + "pages/A09_Security/backend/A09_Security_Router.md": { + "mtime": 1789128566.9032304, + "ast_hash": "7e9f6455dd265a7cec867d6a767b5bff", + "semantic_hash": "" + }, + "pages/B01_Dashboard/B01_api.md": { + "mtime": 1789128566.9042604, + "ast_hash": "8dbbb4bf6ce733ccba9baddc63182827", + "semantic_hash": "" + }, + "pages/B01_Dashboard/B01_backend.md": { + "mtime": 1789128566.9042604, + "ast_hash": "e4b4238b22495c5fead0ae01d8bf82b9", + "semantic_hash": "" + }, + "pages/B01_Dashboard/B01_db.md": { + "mtime": 1789128566.9052906, + "ast_hash": "2a01ad9cd3120ee0a15c799f46f88482", + "semantic_hash": "" + }, + "pages/B01_Dashboard/B01_dependencies.md": { + "mtime": 1789128566.906322, + "ast_hash": "ad3827744464d69084b0dd2313acc929", + "semantic_hash": "" + }, + "pages/B01_Dashboard/B01_frontend.md": { + "mtime": 1789128566.906322, + "ast_hash": "656e77f2ce3f494ecb7da6cd4b07bcad", + "semantic_hash": "" + }, + "pages/B01_Dashboard/backend/B01_Dashboard_Router.md": { + "mtime": 1789128566.907354, + "ast_hash": "bf66149cd28dbe909b8c09021c317822", + "semantic_hash": "" + }, + "pages/B01_Dashboard/frontend/B01_Dashboard_UI_Page.md": { + "mtime": 1789128566.9095776, + "ast_hash": "2474b511d02c55094fc632b7d358a36c", + "semantic_hash": "" + }, + "pages/B02_ProjRegister/B02_backend.md": { + "mtime": 1789128566.9106069, + "ast_hash": "bcdc0c49f83922b62d10a89ebe5c43cd", + "semantic_hash": "" + }, + "pages/B02_ProjRegister/B02_db.md": { + "mtime": 1789128566.9106069, + "ast_hash": "a235253f5f15efb35d067c9f9c33090c", + "semantic_hash": "" + }, + "pages/B02_ProjRegister/B02_frontend.md": { + "mtime": 1789128566.9116426, + "ast_hash": "e7fbc2dc9a93648a5257b13116443d67", + "semantic_hash": "" + }, + "pages/B02_ProjRegister/backend/B02_ProjRegister_Router.md": { + "mtime": 1789128566.9126716, + "ast_hash": "d706994f57c209989fd67802b9e20665", + "semantic_hash": "" + }, + "pages/B03_FileInput/B03_api.md": { + "mtime": 1789128566.9147072, + "ast_hash": "dcce30661366d6d337ee7eb5f13ccfb3", + "semantic_hash": "" + }, + "pages/B03_FileInput/B03_backend.md": { + "mtime": 1789128566.9147072, + "ast_hash": "09f9f905961ed71afbfc9171760c6cd3", + "semantic_hash": "" + }, + "pages/B03_FileInput/B03_db.md": { + "mtime": 1789128566.9157364, + "ast_hash": "b9a93148547ab081ddcab04c5cb45917", + "semantic_hash": "" + }, + "pages/B03_FileInput/B03_dependencies.md": { + "mtime": 1789128566.9167657, + "ast_hash": "4f52854d54cc3093db4f98ccbec119ab", + "semantic_hash": "" + }, + "pages/B03_FileInput/B03_frontend.md": { + "mtime": 1789128566.9178221, + "ast_hash": "057f6a0ed3fa7d0a301f39a400bd5fa2", + "semantic_hash": "" + }, + "pages/B03_FileInput/backend/B03_FileInput_Router.md": { + "mtime": 1789128566.91939, + "ast_hash": "a01bb338bbb43f5f753abf3300463f31", + "semantic_hash": "" + }, + "pages/B04_PreProcess/B04_api.md": { + "mtime": 1789128566.9210112, + "ast_hash": "4bc2f848ae6d73f1ae63bf735e231f28", + "semantic_hash": "" + }, + "pages/B04_PreProcess/B04_backend.md": { + "mtime": 1789128566.922044, + "ast_hash": "eaca55917c4db8061521367d5c6092bd", + "semantic_hash": "" + }, + "pages/B04_PreProcess/B04_db.md": { + "mtime": 1789128566.9230742, + "ast_hash": "0a6239371cb6d0cd27cab87b917d8cab", + "semantic_hash": "" + }, + "pages/B04_PreProcess/B04_dependencies.md": { + "mtime": 1789128566.9230742, + "ast_hash": "f64d8f377023a8a69a30c4eb64d49d68", + "semantic_hash": "" + }, + "pages/B04_PreProcess/B04_frontend.md": { + "mtime": 1789128566.926253, + "ast_hash": "8305038e8f67b45f2540aabf5c52729b", + "semantic_hash": "" + }, + "pages/B04_PreProcess/backend/B04_PreProcess_Router.md": { + "mtime": 1789128566.926253, + "ast_hash": "214f958dcbfc43bee90543a72af0726d", + "semantic_hash": "" + }, + "pages/B05_Profile/B05_api.md": { + "mtime": 1789128566.929742, + "ast_hash": "8dd7da3b7c1bfa2e62ef78f17ef5f4c9", + "semantic_hash": "" + }, + "pages/B05_Profile/B05_backend.md": { + "mtime": 1789128566.929742, + "ast_hash": "90866d9f1be3ff6d046483549fb8eb1b", + "semantic_hash": "" + }, + "pages/B05_Profile/B05_db.md": { + "mtime": 1789128566.9358027, + "ast_hash": "9f46099c2f4a7875cfd406ab4afbe0b6", + "semantic_hash": "" + }, + "pages/B05_Profile/B05_dependencies.md": { + "mtime": 1789128566.9368322, + "ast_hash": "dd15b073981102040a28812d13592cf3", + "semantic_hash": "" + }, + "pages/B05_Profile/B05_frontend.md": { + "mtime": 1789128566.9368322, + "ast_hash": "ef06bb5899a70164e3f156cc3dadd4cd", + "semantic_hash": "" + }, + "pages/B05_Profile/B05_frontend_alignment.md": { + "mtime": 1789128566.9378617, + "ast_hash": "32b80449cb3cd67368fb4f69179ec4a2", + "semantic_hash": "" + }, + "pages/B05_Profile/B05_frontend_viewer.md": { + "mtime": 1789128566.938891, + "ast_hash": "40775b0f7a22c56e3f0e6358d21855ba", + "semantic_hash": "" + }, + "pages/B05_Profile/backend/B05_Profile_Engine_Grade.md": { + "mtime": 1789128566.9429348, + "ast_hash": "72a0565b76780144688b1bab11fc09c8", + "semantic_hash": "" + }, + "pages/B05_Profile/backend/B05_Profile_Engine_Sections.md": { + "mtime": 1789128566.9429348, + "ast_hash": "6fe528c12cf5a4be018afa459882da17", + "semantic_hash": "" + }, + "pages/B05_Profile/backend/B05_Profile_Engine_Solver.md": { + "mtime": 1789128566.9444456, + "ast_hash": "af2449cd314f670a9914d2b6f8f45316", + "semantic_hash": "" + }, + "pages/B05_Profile/backend/B05_Profile_Repository.md": { + "mtime": 1789128566.9444456, + "ast_hash": "43663b53987979dd1d81f66010229e08", + "semantic_hash": "" + }, + "pages/B05_Profile/backend/B05_Profile_Router.md": { + "mtime": 1789128566.9460983, + "ast_hash": "00dd21c88d6c0324f96df0f6b9a7d084", + "semantic_hash": "" + }, + "pages/B05_Profile/backend/B05_Profile_Router_Confirm.md": { + "mtime": 1789128566.9460983, + "ast_hash": "2a956ae11073eefb131e2a79de919141", + "semantic_hash": "" + }, + "pages/B05_Profile/backend/B05_Profile_Schema.md": { + "mtime": 1789128566.9474218, + "ast_hash": "1826639b9fd3c2f5d02c12019e3e1c12", + "semantic_hash": "" + }, + "pages/B05_Profile/frontend/B05_Profile_Api_Fetch.md": { + "mtime": 1789128566.9485497, + "ast_hash": "9f394566aa409a86eb324bdf5e79a5ec", + "semantic_hash": "" + }, + "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Panel.md": { + "mtime": 1789128566.9485497, + "ast_hash": "8356d99797f057b428525202055ea13d", + "semantic_hash": "" + }, + "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Parts.md": { + "mtime": 1789128566.9498687, + "ast_hash": "ee98fcb82a232162bce5b33405ff651d", + "semantic_hash": "" + }, + "pages/B05_Profile/frontend/B05_Profile_UI_Drainage_Pipes.md": { + "mtime": 1789128566.9498687, + "ast_hash": "733b5c1d6dbb0fe2aef0c5cf535fda0e", + "semantic_hash": "" + }, + "pages/B05_Profile/frontend/B05_Profile_UI_IrregularStations.md": { + "mtime": 1789128566.9517138, + "ast_hash": "713a82973b6a9ef871f111aa4a3dbbfc", + "semantic_hash": "" + }, + "pages/B05_Profile/frontend/B05_Profile_UI_Page.md": { + "mtime": 1789128566.9517138, + "ast_hash": "2babbfa4485a3671a57f087781a6b0d7", + "semantic_hash": "" + }, + "pages/B05_Profile/frontend/B05_Profile_UI_Panel.md": { + "mtime": 1789128566.9527416, + "ast_hash": "9d9296fc53e90b1980dd29f73444d2f1", + "semantic_hash": "" + }, + "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Alignment.md": { + "mtime": 1789128566.9537709, + "ast_hash": "56e8f60166bdb4313f4364e4141d693b", + "semantic_hash": "" + }, + "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Panel.md": { + "mtime": 1789128566.9537709, + "ast_hash": "653e90ca70da5e2cf2d5eed4c52a3eec", + "semantic_hash": "" + }, + "pages/B05_Profile/frontend/B05_Profile_UI_Profile_Table.md": { + "mtime": 1789128566.954801, + "ast_hash": "a155d5251d7706b88470cf41722b5631", + "semantic_hash": "" + }, + "pages/B05_Profile/frontend/B05_Profile_UI_Viewer.md": { + "mtime": 1789128566.954801, + "ast_hash": "f7c23f168db9ba637c21a2a3186542b8", + "semantic_hash": "" + }, + "pages/B05_Profile/frontend/_UI_Drainage_Render.md": { + "mtime": 1789128566.9563303, + "ast_hash": "30bc6a3980a1c680efeaa57bec1b2d58", + "semantic_hash": "" + }, + "pages/B05_Profile/frontend/_UI_Profile_Structures.md": { + "mtime": 1789128566.9563303, + "ast_hash": "2244de8d5b823842e819c5c81277a99a", + "semantic_hash": "" + }, + "pages/B05_Profile/frontend/_UI_Selection.md": { + "mtime": 1789128566.9563303, + "ast_hash": "d0b8ce4096aa69359dc1eaa403a40885", + "semantic_hash": "" + }, + "pages/B06_Section/B06_api.md": { + "mtime": 1789128566.9591234, + "ast_hash": "162e2c5818225cd09cd1f83560d4df57", + "semantic_hash": "" + }, + "pages/B06_Section/B06_backend.md": { + "mtime": 1789128566.9591234, + "ast_hash": "e7ad7db499c848cecb8d26fdde5a9b0c", + "semantic_hash": "" + }, + "pages/B06_Section/B06_db.md": { + "mtime": 1789128566.9650776, + "ast_hash": "8d323cb3f7e0f0e77f1795a048443f0c", + "semantic_hash": "" + }, + "pages/B06_Section/B06_dependencies.md": { + "mtime": 1789128566.9650776, + "ast_hash": "48fe89c8994726ef652caca047c81972", + "semantic_hash": "" + }, + "pages/B06_Section/B06_frontend.md": { + "mtime": 1789128566.9661217, + "ast_hash": "80d30b59115f60e34fc8567d8df06034", + "semantic_hash": "" + }, + "pages/B06_Section/backend/B06_Section_Engine_Areas.md": { + "mtime": 1789128566.9695668, + "ast_hash": "ee35d20c5555247061e0c2d5336313c5", + "semantic_hash": "" + }, + "pages/B06_Section/backend/B06_Section_Router.md": { + "mtime": 1789128566.9695668, + "ast_hash": "613b07a4510075787ae9b016842341e6", + "semantic_hash": "" + }, + "pages/B06_Section/backend/B06_Section_Router_Confirm.md": { + "mtime": 1789128566.9705968, + "ast_hash": "00014f0349db1a8fb783aaaad0d68c9e", + "semantic_hash": "" + }, + "pages/B06_Section/frontend/B06_Section_Api_Fetch.md": { + "mtime": 1789128566.9716263, + "ast_hash": "4c32a1d0dcfe1b090995bb36494f9b12", + "semantic_hash": "" + }, + "pages/B06_Section/frontend/B06_Section_UI_Cross_Areas.md": { + "mtime": 1789128566.972881, + "ast_hash": "8c8949f1137f72a001fd53a891d90ccc", + "semantic_hash": "" + }, + "pages/B06_Section/frontend/B06_Section_UI_Cross_Design.md": { + "mtime": 1789128566.972881, + "ast_hash": "e6571abc6f6474f25533c39246907ae8", + "semantic_hash": "" + }, + "pages/B06_Section/frontend/B06_Section_UI_MassHaul.md": { + "mtime": 1789128566.9739103, + "ast_hash": "790cf0dd68ffdb97b83d9510e71961ee", + "semantic_hash": "" + }, + "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance.md": { + "mtime": 1789128566.9751294, + "ast_hash": "0d762cbabf338f63a5ee31e839363f87", + "semantic_hash": "" + }, + "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balance_View.md": { + "mtime": 1789128566.9751294, + "ast_hash": "e57b0e3d780c8347f42ba99ad08e65a6", + "semantic_hash": "" + }, + "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Balloon.md": { + "mtime": 1789128566.9761593, + "ast_hash": "e0529db307ddb7ab030f7afefe3e6769", + "semantic_hash": "" + }, + "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Curve.md": { + "mtime": 1789128566.9761593, + "ast_hash": "f46c53039b0eb5e166d7141d861f808e", + "semantic_hash": "" + }, + "pages/B06_Section/frontend/B06_Section_UI_MassHaul_Settle.md": { + "mtime": 1789128566.9777, + "ast_hash": "4a4f56b719c74469f75078a94aceb1fd", + "semantic_hash": "" + }, + "pages/B06_Section/frontend/B06_Section_UI_MassHaul_View.md": { + "mtime": 1789128566.9777, + "ast_hash": "c741040837a40f681299d797c43ac264", + "semantic_hash": "" + }, + "pages/B06_Section/frontend/B06_Section_UI_Page.md": { + "mtime": 1789128566.9787335, + "ast_hash": "bda68e406ae303ef51c42709ce1e8693", + "semantic_hash": "" + }, + "pages/B06_Section/frontend/B06_Section_UI_Section_View.md": { + "mtime": 1789128566.9797654, + "ast_hash": "fda0e89969fe56af394ff9c93c133fda", + "semantic_hash": "" + }, + "pages/B06_Section/frontend/B06_Section_UI_Standard_Diagram.md": { + "mtime": 1789128566.9797654, + "ast_hash": "01311a8a96f936eee996ed66c6e5418d", + "semantic_hash": "" + }, + "pages/B06_Section/frontend/B06_Section_UI_Standard_Panel.md": { + "mtime": 1789128566.980803, + "ast_hash": "5cb970fa935a895f092d7a58aac8dec3", + "semantic_hash": "" + }, + "pages/B07_Quantity/B07_backend.md": { + "mtime": 1789128566.9833684, + "ast_hash": "ef914dcacd4706d85a8194c5cd6ee53b", + "semantic_hash": "" + }, + "pages/B07_Quantity/B07_db.md": { + "mtime": 1789128566.9843976, + "ast_hash": "1c7a6551fd32362cf31b2744cf5df882", + "semantic_hash": "" + }, + "pages/B07_Quantity/B07_frontend.md": { + "mtime": 1789128566.9843976, + "ast_hash": "cf6d51de0255223633d9682cbfe509f2", + "semantic_hash": "" + }, + "pages/B07_Quantity/backend/B07_Quantity_Router.md": { + "mtime": 1789128566.985431, + "ast_hash": "52baff29f347e331a62e87d08f4b5c3f", + "semantic_hash": "" + }, + "pages/B08_DesignDetail/B08_api.md": { + "mtime": 1789128566.990934, + "ast_hash": "c16c3df1ed047b7cbb2719c0f6aaf97f", + "semantic_hash": "" + }, + "pages/B08_DesignDetail/B08_backend.md": { + "mtime": 1789128566.9920056, + "ast_hash": "890ff75b5cbedf2c60badee792fb1120", + "semantic_hash": "" + }, + "pages/B08_DesignDetail/B08_dependencies.md": { + "mtime": 1789128566.9940667, + "ast_hash": "a9a509c01674a3ed682c3d19f7c79186", + "semantic_hash": "" + }, + "pages/B08_DesignDetail/B08_frontend.md": { + "mtime": 1789128566.9950993, + "ast_hash": "af29b90c6a47b40d9ef1fc9fbfadb73b", + "semantic_hash": "" + }, + "pages/B08_DesignDetail/backend/B08_DesignDetail_Router.md": { + "mtime": 1789128566.9961362, + "ast_hash": "500adff1cd1cdd5b17e70120fe70fefa", + "semantic_hash": "" + }, + "pages/B09_Estimation/B09_frontend.md": { + "mtime": 1789128566.9992309, + "ast_hash": "1f8442c69032a84e823c2dd883d58c05", + "semantic_hash": "" + }, + "pages/B09_Estimation/frontend/B09_Estimation_UI_Page.md": { + "mtime": 1789128567.0007586, + "ast_hash": "4271e2ac1a5497447cd0816eb28c3525", + "semantic_hash": "" + }, + "pages/B10_Payment/B10_frontend.md": { + "mtime": 1789128567.0018797, + "ast_hash": "9f05bb56ff1bfb69f8e5bcd3472b2b8b", + "semantic_hash": "" + }, + "pages/B10_Payment/frontend/B10_Payment_UI_Page.md": { + "mtime": 1789128567.00291, + "ast_hash": "fa1707215d5877fdcca75a66f01eff79", + "semantic_hash": "" + }, + "pages/B11_Status/B11_frontend.md": { + "mtime": 1789128567.00428, + "ast_hash": "add177612157e453315b739b5cf2d3d7", + "semantic_hash": "" + }, + "pages/B11_Status/frontend/B11_Status_UI_Page.md": { + "mtime": 1789128567.00428, + "ast_hash": "ff8c8cd2314dd6c4f99a28f59aca4ded", + "semantic_hash": "" + }, + "architecture/implementation_status.md": { + "mtime": 1789128566.0320876, + "ast_hash": "9ce18141b3eacedbae4027237bb20e3d", + "semantic_hash": "" + }, + "pages/B05_Profile/B05_structures.md": { + "mtime": 1789128566.941089, + "ast_hash": "8fab371726a9a36bbc2383e6f07cff78", + "semantic_hash": "" + }, + "pages/B03_FileInput/B03_FileInput_plan_lidar_multi_file.md": { + "mtime": 1789128566.9136775, + "ast_hash": "198df123415a00be0736da2d19878e58", + "semantic_hash": "" + }, + "pages/B05_Profile/B05_Profile_plan_2026-08-18.md": { + "mtime": 1789128566.9274814, + "ast_hash": "0f88733e35bd472679b103474738ad61", + "semantic_hash": "" + }, + "pages/B05_Profile/B05_Profile_plan_2026-08-19.md": { + "mtime": 1789128566.9287126, + "ast_hash": "e84251fd2b45d24ea643fb37ecb028a6", + "semantic_hash": "" + }, + "pages/B06_Section/B06_culvert_set.md": { + "mtime": 1789128566.9640477, + "ast_hash": "dcaa2893fec0b2de4a7e5b7551e485ff", + "semantic_hash": "" + }, + "pages/B06_Section/B06_culvert_geometry_redesign.md": { + "mtime": 1789128566.963012, + "ast_hash": "5af32c8d294ca253451aeb4e9fe8402d", + "semantic_hash": "" + }, + "graphify-out/memory/query_20260821_070423_\ubc30\uc218\uad00_\ub9e4\uc124\uc2dc_\uac01\ub3c4\uc758_\uc81c\uc57d\uc870\uac74\uc774_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918__\uc784\ub3c4\uc5d0\uc11c.md": { + "mtime": 1789128566.8670497, + "ast_hash": "e073125b483de8cb64457554656f9b14", + "semantic_hash": "e073125b483de8cb64457554656f9b14" + }, + "graphify-out/memory/query_20260821_101018_\uc784\ub3c4_\uae30\uc220\uc815\ubcf4db\uc5d0\uc11c_\uc9d1\uc218\uc815\uc758_\ud615\ud0dc\uc815\ubcf4\ub294_\uc5b4\ub5a4\uac8c_\uc788\ub294\uc9c0_\ud655\uc778\ud574\uc918.md": { + "mtime": 1789128566.8685374, + "ast_hash": "ca308dce69cb1df8564e78562e1510da", + "semantic_hash": "ca308dce69cb1df8564e78562e1510da" + }, + "pages/B05_Profile/B05_completed_followups.md": { + "mtime": 1789128566.9307716, + "ast_hash": "3d3799d16a35f95eb6b6fe3e1e604e41", + "semantic_hash": "" + }, + "pages/B05_Profile/B05_corridor_cut_fill.md": { + "mtime": 1789128566.9321947, + "ast_hash": "6d2ee90b638c062bd60f790dedbc2469", + "semantic_hash": "" + }, + "pages/B05_Profile/B05_corridor_followup_decisions.md": { + "mtime": 1789128566.9321947, + "ast_hash": "494ccef2702bb10c1cb139278b5d0e0d", + "semantic_hash": "" + }, + "pages/B05_Profile/B05_corridor_patch_finish.md": { + "mtime": 1789128566.9332204, + "ast_hash": "f7ff542106b9b30ac9faa583e431478e", + "semantic_hash": "" + }, + "pages/B05_Profile/B05_corridor_plan_curves.md": { + "mtime": 1789128566.9342268, + "ast_hash": "88f541c819fe255e0623e1ccd3b9db39", + "semantic_hash": "" + }, + "pages/B05_Profile/B05_corridor_surface.md": { + "mtime": 1789128566.9347615, + "ast_hash": "d2d170015b3ba40dae79ccf701b0370b", + "semantic_hash": "" + }, + "pages/B05_Profile/B05_corridor_turn_correction_plan.md": { + "mtime": 1789128566.9347615, + "ast_hash": "4d2c4f8ca4631c7342460463f8c9bb9d", + "semantic_hash": "" + }, + "pages/B05_Profile/B05_structure_stations.md": { + "mtime": 1789128566.941089, + "ast_hash": "3f386a3989774ea8c4305daba155c4de", + "semantic_hash": "" + }, + "pages/B06_Section/B06_culvert_basin_multitier.md": { + "mtime": 1789128566.961233, + "ast_hash": "4b952cdbb8a242fee7a88e556067a6d0", + "semantic_hash": "" + }, + "pages/B06_Section/B06_culvert_controls.md": { + "mtime": 1789128566.961233, + "ast_hash": "458355e8c172d70b30b74a62b3f84ca6", + "semantic_hash": "" + }, + "pages/B06_Section/B06_culvert_link_trim.md": { + "mtime": 1789128566.963012, + "ast_hash": "5e2a8139b5266d10768bdf799d66bb58", + "semantic_hash": "" + }, + "pages/B06_Section/B06_pavement_revetment.md": { + "mtime": 1789128566.9671514, + "ast_hash": "7126b32d1e2b072011468d09db28314a", + "semantic_hash": "" + }, + "pages/B06_Section/B06_revetment_link_controls.md": { + "mtime": 1789128566.9685347, + "ast_hash": "b9de21f38709ecf26ad470077f8581bc", + "semantic_hash": "" + }, + "concepts/completed_2026-08-29.md": { + "mtime": 1789128566.123925, + "ast_hash": "49b7d6e68f7ead9f380d939d430dd4f3", + "semantic_hash": "" + }, + "pages/B08_DesignDetail/B08_CAD_commands.md": { + "mtime": 1789128566.9874978, + "ast_hash": "bada18cf4a30d79bccad214b4c0060f5", + "semantic_hash": "" + }, + "pages/B08_DesignDetail/B08_drawing_masshaul_watershed.md": { + "mtime": 1789128566.9940667, + "ast_hash": "3865c6a1704d9f14e37e94efa3f3f808", + "semantic_hash": "" + }, + "concepts/las_free_sheet_surface.md": { + "mtime": 1789128566.1426482, + "ast_hash": "2283d81ef85b6df8ddd49e6fa4015d37", + "semantic_hash": "" + }, + "pages/B08_DesignDetail/B08_CAD_blocks.md": { + "mtime": 1789128566.9864652, + "ast_hash": "96baa5233f674a8c063b181950a03bd4", + "semantic_hash": "" + }, + "pages/B08_DesignDetail/B08_CAD_interaction.md": { + "mtime": 1789128566.9874978, + "ast_hash": "a82f2edd469f871964307eb3400ece3a", + "semantic_hash": "" + }, + "pages/B08_DesignDetail/B08_CAD_table_entity.md": { + "mtime": 1789128566.988696, + "ast_hash": "e3683457d155656960abf4a83fddc59e", + "semantic_hash": "" + }, + "pages/B08_DesignDetail/B08_cross_structure_sheets.md": { + "mtime": 1789128566.9930353, + "ast_hash": "0097119b6cbf93f33d384ec1a2718b79", + "semantic_hash": "" + }, + "concepts/completed_2026-09-01.md": { + "mtime": 1789128566.1251893, + "ast_hash": "f604000f6a1cb351275f7d329ffe89c7", + "semantic_hash": "" + }, + "concepts/completed_2026-09-01_followups.md": { + "mtime": 1789128566.1251893, + "ast_hash": "e9fa4b8e6a30f0d44dc12e9a617360e6", + "semantic_hash": "" + }, + "pages/B08_DesignDetail/B08_CAD_usability_2026-09-01.md": { + "mtime": 1789128566.990934, + "ast_hash": "0f66282ce4a6af117bd4a12e986fc647", + "semantic_hash": "" + }, + "concepts/completed_2026-09-02.md": { + "mtime": 1789128566.1262252, + "ast_hash": "c7a47d32737bc041a8251a0a834fc2d3", + "semantic_hash": "" + }, + "pages/B08_DesignDetail/B08_CAD_title_block.md": { + "mtime": 1789128566.9897254, + "ast_hash": "585c9f4ff152d7153d589ef0d9b8b0fa", + "semantic_hash": "" + }, + "concepts/completed_2026-09-03.md": { + "mtime": 1789128566.1262252, + "ast_hash": "cdf69a63e6573417d27b653c3e31f52b", + "semantic_hash": "" + }, + "pages/B03_FileInput/B03_route_snapshot_crs.md": { + "mtime": 1789128566.9178221, + "ast_hash": "1f1e720215f07fc1918e52668d4884ef", + "semantic_hash": "" + }, + "pages/B04_PreProcess/B04_drainage_compass_crs.md": { + "mtime": 1789128566.9252558, + "ast_hash": "2d76a3f82e3de673d25f4a1e1eff8c76", + "semantic_hash": "" + }, + "pages/B05_Profile/B05_masshaul_structure_2026_09.md": { + "mtime": 1789128566.938891, + "ast_hash": "4efb11fb6395d21d86ab3c900d84fc24", + "semantic_hash": "" + }, + "pages/B06_Section/B06_masshaul_culvert_2026_09.md": { + "mtime": 1789128566.9671514, + "ast_hash": "5528e84861136e396670d53f5d4295d9", + "semantic_hash": "" + }, + "pages/B08_DesignDetail/B08_cad_delivery_2026_09.md": { + "mtime": 1789128566.9930353, + "ast_hash": "3255b756581c88b5ef639bb78d73883c", + "semantic_hash": "" + }, + "concepts/completed_2026-09-03_additional.md": { + "mtime": 1789128566.127406, + "ast_hash": "25cc66160abf072e06660050049c545f", + "semantic_hash": "" + }, + "pages/B03_FileInput/B03_upload_ui_2026_09.md": { + "mtime": 1789128566.9188557, + "ast_hash": "f726e03c0d232e8f376c9d8da5f4a945", + "semantic_hash": "" + }, + "pages/B04_PreProcess/B04_compass_crs_2026_09.md": { + "mtime": 1789128566.922044, + "ast_hash": "1c9969bae3bebc20f9741ca946d18410", + "semantic_hash": "" + }, + "pages/B05_Profile/B05_profile_interaction_2026_09.md": { + "mtime": 1789128566.939921, + "ast_hash": "999b84114b0adfed77c8d39240057578", + "semantic_hash": "" + }, + "pages/B06_Section/B06_cross_design_ui_2026_09.md": { + "mtime": 1789128566.9602034, + "ast_hash": "8529f3805489094c18e05d12cf55cc6c", + "semantic_hash": "" + }, + "concepts/completed_2026-09-04.md": { + "mtime": 1789128566.1285784, + "ast_hash": "643e2b9ca48385f108b05d36ea259cbe", + "semantic_hash": "" + }, + "concepts/completed_2026-09-07.md": { + "mtime": 1789128566.1285784, + "ast_hash": "8902ae1824084f8d3d4cc5f3b8d81ab3", + "semantic_hash": "" + }, + "concepts/completed_2026-09-09.md": { + "mtime": 1789128566.1285784, + "ast_hash": "f1055d50fd7a3ce08c254eb7e13edd08", + "semantic_hash": "" + }, + "concepts/design_data_lifecycle.md": { + "mtime": 1789128566.1405194, + "ast_hash": "5971e0e95bf4d125905af264f41f7f40", + "semantic_hash": "" + }, + "concepts/multi_environment_safety.md": { + "mtime": 1789132131.6764865, + "ast_hash": "1667aa4c657a4f529de42bcaac3fcd44", + "semantic_hash": "" + }, + "concepts/quantity_cost_contract.md": { + "mtime": 1789128566.1449418, + "ast_hash": "225d4b0e265a18b6088464f6878df6c3", + "semantic_hash": "" + }, + "concepts/standard_drawing_cost_inputs.md": { + "mtime": 1789128566.1459785, + "ast_hash": "3b41ac6dd9b031b28500806d47e7e490", + "semantic_hash": "" + }, + "concepts/standard_quantity_open_2026-09-09.md": { + "mtime": 1789128566.1472788, + "ast_hash": "2d13db7fee47d39a655adbc7618970a0", + "semantic_hash": "" + }, + "pages/B07_DesignDetail/B07_frontend.md": { + "mtime": 1789128566.981803, + "ast_hash": "d93f58aec363dcfb8d0bfe6b02813926", + "semantic_hash": "" + }, + "pages/B07_DesignDetail/B07_standard_drawings_2026_09.md": { + "mtime": 1789128566.9823377, + "ast_hash": "509e4bc263279f543640c2167b62d9a2", + "semantic_hash": "" + }, + "pages/B08_Quantity/B08_2026_09_09_completion.md": { + "mtime": 1789128566.997166, + "ast_hash": "ca460948d336f2c68e8f88b0b93be2f4", + "semantic_hash": "" + }, + "pages/B08_Quantity/B08_overview_2026_09.md": { + "mtime": 1789128566.997166, + "ast_hash": "f9d8cc08d2a8b80778193734568c745d", + "semantic_hash": "" + }, + "pages/B09_Estimation/B09_2026_09_09_completion.md": { + "mtime": 1789128566.9981973, + "ast_hash": "371ba3ddd76781abd9afbf088abd0c8b", + "semantic_hash": "" + }, + "pages/B09_Estimation/B09_overview_2026_09.md": { + "mtime": 1789128567.000224, + "ast_hash": "0b98a093e67d58c91f57ab12971c3da0", + "semantic_hash": "" + } +} \ No newline at end of file diff --git a/docs/wiki/graphify-out/GRAPH_REPORT.md b/docs/wiki/graphify-out/GRAPH_REPORT.md index b800b319..c0dbf84b 100644 --- a/docs/wiki/graphify-out/GRAPH_REPORT.md +++ b/docs/wiki/graphify-out/GRAPH_REPORT.md @@ -1,16 +1,16 @@ -# Graph Report - wiki (2026-09-11) +# Graph Report - wiki (2026-09-12) ## Corpus Check -- 206 files · ~57,686 words +- 207 files · ~58,032 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 1170 nodes · 996 edges · 189 communities (155 shown, 34 thin omitted) +- 1176 nodes · 1003 edges · 196 communities (162 shown, 34 thin omitted) - Extraction: 100% EXTRACTED · 0% INFERRED · 0% AMBIGUOUS - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `e49e4d85` +- Built from commit: `d6e45bb4` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -187,14 +187,21 @@ - B08_DesignDetail_Engine_Cad_Basin.py - B08_DesignDetail_Engine_Cad_MassHaul.py - B08 CAD·납품 도면 후속 +- 2026-09-04 완료 항목 +- multi_environment_safety.md +- Workflow 상태 관리 +- DB 스키마 개요 - OpenWebCAD Core - common_util_mass_haul_settle.ts - Drainage Watershed (유역도) - Mass Haul Diagram (토적도) +- 다중 환경 저장소·공용 DB 안전 +- 저장 경로 규칙 (Workflow-based Folder Structure) - 2026-09-02 완료 항목 - 2026-09-03 완료 — 입력·배수·종횡단·CAD - 2026-09-03 추가 완료 — 화면·종단·횡단 - Query: 임도 집수정 형태정보 +- 설계 데이터 생명주기 - B03 File Input Backend - B03 File Input Frontend - B04 PreProcess Backend @@ -229,9 +236,6 @@ - None detected. ## Hyperedges (group relationships) -- **B03-B08 Workflow Data Flow** — b03_fileinput_route_snapshot_crs, b04_preprocess_drainage_compass_crs, b05_profile_frontend, b06_section_cross_design_ui_2026_09, b08_designdetail_frontend [INFERRED 0.90] -- **Shared Mass Haul Calculation and UI** — b05_profile_masshaul_structure_2026_09, b06_section_masshaul_culvert_2026_09, b08_designdetail_cad_delivery_2026_09 [EXTRACTED 0.85] -- **CAD Delivery and Usability Framework** — b08_designdetail_cad_interaction, b08_designdetail_cad_title_block, b08_designdetail_cad_usability_2026_09_01, b08_designdetail_cad_delivery_2026_09 [EXTRACTED 0.95] - **LAS-Free Analysis Workflow** — concepts_las_free_sheet_surface, pages_b03_fileinput_backend, pages_b04_preprocess_backend [EXTRACTED 1.00] - **B08 Drawing Generation Flow** — b08_designdetail_b08_designdetail_engine_cad_masshaul_py, b08_designdetail_b08_designdetail_engine_cad_basin_py, common_util_common_util_mass_haul_settle_ts [EXTRACTED 0.90] - **Drainage System Workflow** — concepts_drainage_watershed, pages_b05_profile_b05_structures, pages_b06_section_b06_culvert_set, pages_b06_section_b06_culvert_geometry_redesign [EXTRACTED 0.95] @@ -239,23 +243,23 @@ - **3D Corridor Generation Flow** — pages_b05_profile_b05_corridor_surface, pages_b05_profile_b05_corridor_plan_curves, pages_b05_profile_b05_corridor_cut_fill, pages_b05_profile_b05_corridor_patch_finish [EXTRACTED 0.90] - **Late Workflow Stages (B07-B09)** — pages_b07_quantity_b07_frontend, pages_b08_designdetail_b08_frontend, pages_b09_estimation_b09_frontend [EXTRACTED 1.00] -## Communities (189 total, 34 thin omitted) +## Communities (196 total, 34 thin omitted) ### Community 0 - "UI Templates — Localization & Components" -Cohesion: 0.05 -Nodes (38): 2026-09-04 완료 항목, 700줄 제한 분리, 보존된 미완료 범위, 상시계획서 추가 완료 범위, 완료 범위, 추가 완료 범위, 디자인 시스템 (Design System), 레이아웃 및 둥근 테두리 (Radius & Spacing) (+30 more) +Cohesion: 0.10 +Nodes (18): 디자인 시스템 (Design System), 레이아웃 및 둥근 테두리 (Radius & Spacing), 비주얼 테마, 전역 스크롤바 디자인 (Scrollbars), 타이포그래피 (Typography), 핵심 색상 토큰 (Colors), theme.css (스타일 변수), ui_template_elements.ts (공통 엘리먼트 템플릿) (+10 more) ### Community 1 - "인증 / RBAC" -Cohesion: 0.06 -Nodes (31): OTP / 비밀번호 및 디바이스 신뢰, 권한 검증 헬퍼 (B01_Dashboard), 라우팅 가드 (frontend.md 5.2), 사용자 상태 생명주기, 사용처 (역참조), 세션 인증 (backend.md 6.3), 역할 (users.role), 인증 / RBAC (+23 more) +Cohesion: 0.11 +Nodes (17): OTP / 비밀번호 및 디바이스 신뢰, 권한 검증 헬퍼 (B01_Dashboard), 라우팅 가드 (frontend.md 5.2), 사용자 상태 생명주기, 사용처 (역참조), 세션 인증 (backend.md 6.3), 역할 (users.role), 인증 / RBAC (+9 more) ### Community 2 - "A00_Common — App Shell Framework" Cohesion: 0.08 Nodes (22): A00_Common — App Shell Framework, app_shell 구성요소, router 라우팅 테이블, A00_Common — 스캐폴드·CSS·종속성, b_page_scaffold, CSS 인젝션, 사용처, 종속성 (+14 more) ### Community 3 - "2026-09-04 완료 항목" -Cohesion: 0.07 -Nodes (25): API 공통 (여러 페이지가 공유하는 엔드포인트), 공통 오류 응답 포맷 (전 라우터), 워크플로우 상태 조회, 폴링 패턴 (legacy workflow.json 설계; 현재 구현은 workflow-state API 사용), 계산 구현 원칙, 계획노선 규칙, 설계 데이터 생명주기, 정본 세 벌 (+17 more) +Cohesion: 0.22 +Nodes (7): API 공통 (여러 페이지가 공유하는 엔드포인트), 공통 오류 응답 포맷 (전 라우터), 워크플로우 상태 조회, 폴링 패턴 (legacy workflow.json 설계; 현재 구현은 workflow-state API 사용), 검증 원칙 (backend.md 4절), 공통 스키마 (Pydantic 요청/응답 규칙), 명명 규칙 ### Community 4 - "배수유역 해석 및 세부설계 (Drainage Watershed)" Cohesion: 0.25 @@ -270,8 +274,8 @@ Cohesion: 0.17 Nodes (11): A09_Security — Backend, API 엔드포인트, DB 저장 (activity_logs), 권한 헬퍼, 마스터(회사 관리자) 전용 — `require_master`, 시스템 관리자 전용 — `require_system_admin`, 요청 스키마 (Pydantic), 의존성 (공통 유틸) (+3 more) ### Community 7 - "2026-08-29 완료 반영" -Cohesion: 0.10 -Nodes (17): 2026-08-29 완료 반영, B03 재업로드·B05 최신 조회, B05/B06 구조물 UI 통합, B07↔B08 순서, B07 CAD 고정 척도·횡단 장 배치, B07 CAD 테마, B07 CAD 확대·팬, 배수시설 추천 기준 (+9 more) +Cohesion: 0.06 +Nodes (31): 2026-08-29 완료 반영, B03 재업로드·B05 최신 조회, B05/B06 구조물 UI 통합, B07↔B08 순서, B07 CAD 고정 척도·횡단 장 배치, B07 CAD 테마, B07 CAD 확대·팬, 배수시설 추천 기준 (+23 more) ### Community 8 - "DB: 파일/지표면분석 테이블" Cohesion: 0.18 @@ -849,6 +853,30 @@ Nodes (3): B06 횡단 계산 미러·카드 표기, 프론트 계산 미러, 횡 Cohesion: 0.50 Nodes (3): B08 CAD·납품 도면 후속, CAD 편집·확정, 토적도·유역도 +### Community 172 - "2026-09-04 완료 항목" +Cohesion: 0.18 +Nodes (9): 공통 유틸 (common_util/), 리소스 모니터링 (common_util_resource_monitor.py), 이메일 발송 (common_util_email.py), 2026-09-04 완료 항목, 700줄 제한 분리, 보존된 미완료 범위, 상시계획서 추가 완료 범위, 완료 범위 (+1 more) + +### Community 173 - "multi_environment_safety.md" +Cohesion: 0.32 +Nodes (4): 공용 브라우저 시동과 조작, 기본 선택, 변경 종류별 반영, 화면 검증 브라우저 운용 + +### Community 174 - "Workflow 상태 관리" +Cohesion: 0.25 +Nodes (8): R1 워크플로우 단계 재편 (2026-08-08 반영), SSOT: `project_workflow_stages` 테이블 (실 DB 확인), Workflow 상태 관리, 공통 유틸 `common_util/common_util_workflow_state.py`, 무효화의 실제 범위, 백그라운드 자동 계산 체인 및 사용자 설정 이월, 조회 API, 프론트엔드 게이팅 및 스텝바 연동 + +### Community 175 - "DB 스키마 개요" +Cohesion: 0.29 +Nodes (5): DB 스키마 개요, 설계 원칙, 테이블 관계 (핵심 흐름), 테이블 그룹 (9개), 파일 경로 추적 컬럼 (DB에 경로만 기록, 실 파일은 파일시스템) + +### Community 180 - "다중 환경 저장소·공용 DB 안전" +Cohesion: 0.29 +Nodes (7): Git 한 바퀴, 다중 환경 저장소·공용 DB 안전, 여섯 워크트리 운영 확정판, 완료 판정, 운영 규칙, 재계산 영향, 확인된 위험 + +### Community 181 - "저장 경로 규칙 (Workflow-based Folder Structure)" +Cohesion: 0.33 +Nodes (6): DB 컬럼 ↔ 실제 경로 매핑, 경로 패턴, 원칙 (backend.md 3절), 저장 경로 규칙 (Workflow-based Folder Structure), 코드 감사 주의사항, 파일명 규칙 (structure.md 1절) + ### Community 182 - "2026-09-02 완료 항목" Cohesion: 0.25 Nodes (7): 2026-09-02 완료 항목, B05 구조물 3D, B05 종단 편집 후속, CAD, 노선·지표면, 작업 환경, 회귀 상태 @@ -861,8 +889,12 @@ Nodes (3): 2026-09-03 완료 — 입력·배수·종횡단·CAD, 공통 결정, Cohesion: 0.50 Nodes (3): 2026-09-03 추가 완료 — 화면·종단·횡단, 완료 범위, 최신 결정 +### Community 186 - "설계 데이터 생명주기" +Cohesion: 0.50 +Nodes (4): 계산 구현 원칙, 계획노선 규칙, 설계 데이터 생명주기, 정본 세 벌 + ## Knowledge Gaps -- **756 isolated node(s):** `단계별 판정`, `비워크플로 영역 판정`, `구현 상태 용어`, `반드시 유지할 구분`, `미결 설계` (+751 more) +- **760 isolated node(s):** `단계별 판정`, `비워크플로 영역 판정`, `구현 상태 용어`, `반드시 유지할 구분`, `미결 설계` (+755 more) These have ≤1 connection - possible missing edges or undocumented components. - **34 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. @@ -875,17 +907,17 @@ Nodes (3): 2026-09-03 추가 완료 — 화면·종단·횡단, 완료 범위, ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ +- **Why does `B07 구조물 표준도 — 조사·합의와 현재 통로` connect `임도기술교본 원문 md 추출 품질 결함` to `현재 구현 현황 — 소스 읽기 감사`, `유토곡선 (Mass Haul Diagram) 계산 명세`?** + _High betweenness centrality (0.003) - this node is a cross-community bridge._ - **What connects `단계별 판정`, `비워크플로 영역 판정`, `구현 상태 용어` to the rest of the system?** - _756 weakly-connected nodes found - possible documentation gaps or missing edges._ + _760 weakly-connected nodes found - possible documentation gaps or missing edges._ - **Should `UI Templates — Localization & Components` be split into smaller, more focused modules?** - _Cohesion score 0.046511627906976744 - nodes in this community are weakly interconnected._ + _Cohesion score 0.1 - nodes in this community are weakly interconnected._ - **Should `인증 / RBAC` be split into smaller, more focused modules?** - _Cohesion score 0.05555555555555555 - nodes in this community are weakly interconnected._ + _Cohesion score 0.10526315789473684 - nodes in this community are weakly interconnected._ - **Should `A00_Common — App Shell Framework` be split into smaller, more focused modules?** _Cohesion score 0.07692307692307693 - nodes in this community are weakly interconnected._ -- **Should `2026-09-04 완료 항목` be split into smaller, more focused modules?** - _Cohesion score 0.06896551724137931 - nodes in this community are weakly interconnected._ - **Should `2026-08-29 완료 반영` be split into smaller, more focused modules?** - _Cohesion score 0.1 - nodes in this community are weakly interconnected._ + _Cohesion score 0.05555555555555555 - nodes in this community are weakly interconnected._ - **Should `현재 구현 현황 — 소스 읽기 감사` be split into smaller, more focused modules?** _Cohesion score 0.058823529411764705 - nodes in this community are weakly interconnected._ \ No newline at end of file diff --git a/docs/wiki/graphify-out/graph.html b/docs/wiki/graphify-out/graph.html index b5a54c10..2bf5c320 100644 --- a/docs/wiki/graphify-out/graph.html +++ b/docs/wiki/graphify-out/graph.html @@ -63,12 +63,12 @@
-
1170 nodes · 996 edges · 189 communities
+
1176 nodes · 1003 edges · 196 communities