perf(계측): 재확정 체인 병목 추적용 단계 마크 추가
PLAN 0-10. 8000 에서 1회 실측 결과 재확정 체인 292.9s 중 배수유역 분석이 285.0s(97%)로 나와, 그 안쪽을 가르기 위한 마크만 추가. 로직 불변. - B06 확정: 조회 / 기본설계 계산 / 확정 저장 / 서버 재계산 / 측구 역반영 - 서버 재계산 내부: 상세+DB 병렬 조회 / 포장·세월교 보정 / Node 번들 / 정본 저장 - 배수유역 분석 내부: _prepare(도엽 읽기·좌표변환) / preview_stages / 응답 만들기·저장 - preview_stages: 1차 영역 / 격자 확장·흐름 판정 / 흐름 강도 / 외곽선·기본 관·화살표 `_log_steps` 는 체인 모듈 것을 그대로 씀(지연 임포트로 순환 회피). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -11,6 +11,7 @@ import asyncio
|
||||
import json
|
||||
import logging
|
||||
import math
|
||||
import time
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
from uuid import UUID
|
||||
@@ -389,9 +390,13 @@ async def get_primary_region(
|
||||
logger.info("배수유역: 저장된 분석 결과를 그대로 돌려줍니다 (%s).", stored_path)
|
||||
return {**saved, "from_cache": True}
|
||||
|
||||
from B03_FileInput.B03_FileInput_Service_Chain import _log_steps
|
||||
|
||||
marks = [("시작", time.perf_counter())]
|
||||
prepared = await _prepare(project_id)
|
||||
if isinstance(prepared, JSONResponse):
|
||||
return prepared
|
||||
marks.append(("_prepare(도엽 읽기·좌표변환)", time.perf_counter()))
|
||||
preview = await asyncio.to_thread(
|
||||
preview_stages,
|
||||
prepared["vertices"],
|
||||
@@ -403,6 +408,7 @@ async def get_primary_region(
|
||||
status_code=400,
|
||||
content={"status": "error", "message": "1차 배수유역을 정할 등고선이 없습니다."},
|
||||
)
|
||||
marks.append(("preview_stages(유역 산정)", time.perf_counter()))
|
||||
region = preview.region
|
||||
to_lonlat = prepared["to_lonlat"]
|
||||
# 확장을 거치면 격자·해석 영역이 1차 영역보다 커진다. 최종본을 써야 화면과 어긋나지 않는다.
|
||||
@@ -516,5 +522,7 @@ async def get_primary_region(
|
||||
_write_stage_arrays(prepared["stored_path"], preview, domain, spec)
|
||||
_write_road_routing(prepared["stored_path"], preview, spec, prepared["route_line"], to_lonlat)
|
||||
# 응답 자체를 캐시로 남긴다 — 다음 조회는 배열을 재조립하지 않고 이 파일을 그대로 준다.
|
||||
marks.append(("응답 만들기·저장", time.perf_counter()))
|
||||
_log_steps("배수유역 분석 내부", marks)
|
||||
_save_response(prepared["stored_path"], payload)
|
||||
return payload
|
||||
|
||||
Reference in New Issue
Block a user