Files
Aislo/resources/tester/test_b06_cut_slope_legal_check.py
T
eomsangdonandClaude Opus 5 0ef32b5279 chore(tester): 시험을 resources/tester/ 로 옮김 — 창끼리 건너가게
⚠ **뿌리** — `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>
2026-09-09 17:12:30 +09:00

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, "구간별 경사가 서버 결과에서 사라졌음"