feat(511-B B-2 서버 측점 생성 = 같은 TS): build_sections(B03 체인 · 노선 저장 · 재생성 · 넓힘 · 추천 초기 종단) = DTM 이면 늘 떠 있는 Node stations.sections(buildStations · sectionsGround · 측점 열쇠 key 더함 · 파이썬은 머리만) · DTM 아닌 지표면 · Node 못 돌림 = 파이썬 generate_sections · stations.list(측점 목록 · 열쇠) · /calc 창구는 stations.sections 안 받음(서버 경로 입력) · 등록부 R5 R6 R7 = node:stations.list · G4 = node:stations.sections · round6 = 십진 반올림(파이썬 round 꼴) · 추천 저장본 지문에 TS 더함 · 고정 자료 Node 길 = 파이썬 길 0 차(다섯 갈래) · golden 그대로 — 요구 320-4

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-22 14:22:25 +09:00
co-authored by Claude Opus 5.5
parent f6abe881a2
commit f7e9751b81
18 changed files with 688 additions and 63 deletions
+3 -1
View File
@@ -16,7 +16,7 @@ from uuid import UUID
from fastapi import APIRouter, Request
from fastapi.responses import JSONResponse
from common_util.common_util_calc_runner import run_calc_served
from common_util.common_util_calc_runner import SERVER_ONLY_IDS, run_calc_served
router = APIRouter(prefix="/api/projects", tags=["B06 Calc Server"])
@@ -48,6 +48,8 @@ async def run_calc_endpoint(project_id: UUID, request: Request) -> dict | JSONRe
return _error(400, "run = id 목록")
if not isinstance(inputs, dict):
return _error(400, "inputs = 객체")
if SERVER_ONLY_IDS.intersection(run):
return _error(400, "서버 측점 생성은 창구 밖")
try:
answer = await asyncio.to_thread(run_calc_served, run, inputs)
except ValueError as exc: