⚠ **뿌리** — `tmp/` 는 창 사이에 안 건너감(실측 확인: 상대 창이 놓은 `tmp/_sync_probe.txt` 가 시간을 두고 두 번 봐도 안 보임). 그래서 **정본(등록부 스키마)만 건너가고 그것을 읽는 시험은 안 건너가** 오늘 두 번, 같은 시험이 **연 창은 통과·받은 창은 실패**가 됐음. - `tmp/tests/*` 를 `resources/tester/` 로 **복사**(127 파일). 내용은 **한 줄도 안 고침** - `tmp/tests` 는 **남겨 둠** — 되돌릴 자리(사용자 지시) - 실행: `./venv/Scripts/python.exe -m pytest resources/tester/ -q` 옮기기 전과 **같은 수**: 617 통과 / 22 건너뜀 / 실패 0 ⇒ 이제 시험·예외·까닭이 **정본과 함께** 움직임. 오늘 세운 「예외는 정본 스키마에」와 짝임. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
67 lines
3.5 KiB
Python
67 lines
3.5 KiB
Python
"""절토 경사 — **법정 기울기 판정을 두지 않는다**(2026-09-07 사용자 확정으로 폐기).
|
|
|
|
원래 이 시험은 별표2(경암 1:0.3~0.8 …) 범위 밖이면 카드에 경고를 띄우는 기능을 지켰다.
|
|
그 기능은 폐기됐다. 사용자 원문:
|
|
|
|
「연암과 경암 / 발파암과 리핑암 선택은 횡단도에서 선택 안함. 사유는 향후 설계내역에서
|
|
설계자가 직접 비율로 지정하기로 함. 암반 지정과 범위 애매모호한 경우가 있어.
|
|
실무자는 그렇게 하기로 판단함. 대신 경고부분은 삭제해주고 대신 각도를 사용자가
|
|
넣을수 있게 반영.」
|
|
|
|
왜 폐기인가 — **암반 지정·범위가 실무에서 애매하다.** 측점마다 암질(연암·경암)을 못 박아야
|
|
판정이 서는데, 그 못 박음 자체가 틀린 전제다. 암 비율은 **설계내역 단계에서 설계자가
|
|
비율로** 넣는다. 판정 기준이 없으니 경고도 없다.
|
|
|
|
그래서 이 파일은 **되살아나지 않게 막는 시험**으로 남긴다. 하루 사이에
|
|
「굴착 공법으로 암질 유추」 → 「암질 선택 버튼」 → 「아예 안 고름」으로 좁혀진 건이라,
|
|
누가 「왜 만들다 말았나」로 다시 꺼내면 여기서 걸린다.
|
|
|
|
⚠ `cut_slope_segments`(구간별 경사)는 **지우지 않는다** — 소단 기하가 그 위에 서 있고
|
|
구간 경사를 아는 값이라 뒤에 쓸 자리가 있다(2026-09-07 계획 창 지시).
|
|
"""
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
PROJECT_ROOT = Path(__file__).resolve().parents[2]
|
|
if str(PROJECT_ROOT) not in sys.path:
|
|
sys.path.insert(0, str(PROJECT_ROOT))
|
|
|
|
_B06 = PROJECT_ROOT / "B06_Section"
|
|
_CONFIG = PROJECT_ROOT / "config" / "config_system_design.py"
|
|
_CHROME = _B06 / "B06_Section_UI_Cross_Card_Chrome.ts"
|
|
_PANEL = _B06 / "B06_Section_UI_Standard_Panel.ts"
|
|
|
|
|
|
def _sources() -> dict[str, str]:
|
|
files = [_CONFIG, _CHROME, _PANEL, _B06 / "B06_Section_Schema.py", _B06 / "B06_Section_Router.py"]
|
|
return {path.name: path.read_text(encoding="utf-8") for path in files}
|
|
|
|
|
|
def test_법정_기울기_검사가_없다():
|
|
"""판정 모듈 자체가 없어야 한다 — 파일이 되살아나면 여기서 걸린다."""
|
|
assert not (_B06 / "B06_Section_Cut_Slope_Check.ts").exists(), "폐기한 판정 모듈이 되살아났음"
|
|
|
|
|
|
def test_카드에_절토_경사_경고가_없다():
|
|
"""카드 경고는 성토사면 길이·미폐합만 남는다."""
|
|
chrome = _CHROME.read_text(encoding="utf-8")
|
|
assert "violationsOf" not in chrome, "폐기한 경고 배지가 카드에 다시 붙었음"
|
|
|
|
|
|
def test_암질을_고르는_자리가_없다():
|
|
"""암질(연암·경암)은 횡단도에서 고르지 않는다 — 설계내역에서 비율로 넣는다."""
|
|
for name, source in _sources().items():
|
|
assert "rock_quality" not in source, f"{name} 에 암질 선택이 남아 있음"
|
|
assert "soft_rock" not in source, f"{name} 에 별표2 암질 구분이 남아 있음"
|
|
|
|
|
|
def test_구간별_경사값은_남긴다():
|
|
"""⚠ 판정은 지웠지만 `cut_slope_segments` 는 지우지 않는다 — 소단이 그 위에 선다."""
|
|
geometry = (PROJECT_ROOT / "common_util" / "common_util_cross_design_geometry.ts").read_text(
|
|
encoding="utf-8"
|
|
)
|
|
engine = (_B06 / "B06_Section_Engine_Design.py").read_text(encoding="utf-8")
|
|
assert "cutSlopeSegments" in geometry, "구간별 경사 계산이 사라졌음"
|
|
assert "cut_slope_segments" in engine, "구간별 경사가 서버 결과에서 사라졌음"
|