- 운반계획 밑수 칸(암 갈래 세트·구성비·시공법·계수·도쟈 한계거리)이 바뀐 저장만 B06 [저장]과 같은 서버 재계산을 부름 · 다른 칸 저장은 안 부름 · 못 하면 저장은 살리고 haul_plan_recomputed 거짓 - 종전엔 B06 을 다시 저장하기 전까지 토적표(새 계수) ↔ 운반표(옛 계획)가 갈렸음 — 계수 고르기 칸의 옛 틈도 함께 닫힘 - 936be972 화면에서 연암 60 리핑/보통암 40 발파 [저장](2.0초) → 유토곡선 깎기 6,296.8 = 토적표 6,296.81 · 토취 7,259.84 → 7,053.83 · 되돌림(설정 파일 · 재계산 원래 값) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
41 lines
1.7 KiB
Python
41 lines
1.7 KiB
Python
"""산출 조건 [저장] 뒤 **운반계획 다시 세우기** — 2026-09-14 브레인 ②(지침 5장).
|
|
|
|
구성비·시공법·계수·도쟈 한계거리는 B06 유토곡선(운반계획)의 밑수다. B08 [저장]이 계획을 다시 안 세우면
|
|
B06 을 다시 저장하기 전까지 토적표(새 계수) ↔ 운반표(옛 계획)가 갈린다(계수 칸은 전부터 같은 틈).
|
|
⇒ 그 칸이 **바뀐 저장**만 B06 [저장]과 같은 서버 재계산을 부른다(무거워서 다른 칸 저장은 안 부름).
|
|
본 라우터(`B08_Quantity_Router_Earthwork.py`)가 700줄에 닿아 이 파일로 뗌.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
from uuid import UUID
|
|
|
|
from B06_Section.B06_Section_Repository import get_workflow_route_context
|
|
from config.config_db import run_with_connection
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
#: 운반계획의 밑수가 되는 산출 조건 칸.
|
|
HAUL_PLAN_KEYS = (
|
|
"rock_class_set",
|
|
"rock_classes",
|
|
"rock_ratios_pct",
|
|
"rock_methods",
|
|
"conversion_factors_override",
|
|
"dozer_haul_limit_m",
|
|
)
|
|
|
|
|
|
async def recompute_haul_plan(project_id: UUID) -> bool:
|
|
"""B06 [저장]과 같은 서버 재계산 — 못 하면 저장은 살리고 거짓(화면이 옛 계획임을 앎)."""
|
|
from B06_Section.B06_Section_Server_Calc_Prebuild import recompute_server_side
|
|
|
|
try:
|
|
context = await run_with_connection(get_workflow_route_context, project_id)
|
|
route_id = int((context or {}).get("route_id") or 0)
|
|
return bool(route_id) and await recompute_server_side(project_id, route_id) >= 0
|
|
except Exception:
|
|
logger.exception("B08 저장 뒤 운반계획 재계산 실패: project_id=%s", project_id)
|
|
return False
|