19 checks: 6-sheet common values, 3-sheet temperature-exempt detail, 9 pattern groups vs report rows, R1 6.982 vs 03-001 raw texts, thickness arithmetic, output naming and version, meta content, no writes into RAG. Report fix found by the check: SD400 label was missing; added. Decision recorded: R1 = 6.982 m kept (user, 2026-10-21). Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A5Cun3RHQKna9qxE6ybZ4A
61 lines
4.5 KiB
Python
61 lines
4.5 KiB
Python
#!/usr/bin/env python3
|
||
"""Render the lining-reinforcement reference report (DOC/03_설계) from
|
||
data/lining_spec.json written by extract_lining_spec.py. Values are read from
|
||
the JSON, not typed. Usage: make_lining_doc.py <lining_spec.json> <out.md>"""
|
||
import json
|
||
import sys
|
||
|
||
SRC, OUT = sys.argv[1], sys.argv[2]
|
||
d = json.load(open(SRC, encoding="utf-8"))
|
||
S = d["sheets"]
|
||
note5 = S[0]["note5"]
|
||
conc = S[0]["concrete"][0].split("=")[-1]
|
||
rebar = S[0]["rebar_grade"][0].split("=")[-1]
|
||
agg = S[0]["aggregate"][0].split("Ø")[-1]
|
||
r1_drawn = next(x for x in S[0]["radius_dims"] if x.startswith("R1="))
|
||
r1_mm = float(r1_drawn.split("=")[1])
|
||
lines = ["# 콘크리트 라이닝 구조도 판독 및 재료 사양 (초안)\n",
|
||
"| 버전 | 일자 | 변경 내용 |", "|---|---|---|",
|
||
"| v0.1.00 | 2026-10-21 | 최초 작성. 콘크리트라이닝구조도 C0060304-004~009 판독 (HITL 검토 대상) |\n",
|
||
"## 1. 개요",
|
||
"- 6장은 **지보패턴 입출구부 취약구간**의 철근 상세와 공통 사양이다. 도면에 측점(STA) 표기가 없어 어느 측점 구간에 적용되는지는 판독되지 않았다 ([미확정]).",
|
||
"- 적용 범위(주기 5, 원문): " + note5 + "\n",
|
||
"## 2. 시트별 패턴군",
|
||
"| 도면 | 패턴군 | 상세 종류 | 철근 라벨(H13~H29 개수) |",
|
||
"|---|---|---|---|"]
|
||
for r in S:
|
||
bars = ", ".join(f"{k} {v}" for k, v in r["rebar_sizes_label_count"].items())
|
||
for i, g in enumerate(r["pattern_details"]):
|
||
lab = bars if i == 0 else ""
|
||
lines.append(f"| {r['file'][:14]} | {g['group']} | {g['kind']} | {lab} |")
|
||
lines += ["",
|
||
"- 철근 라벨 개수는 도면 시트 단위 합계다 (패턴군별 분리 불가). 첫 행에만 표기했다.\n",
|
||
"## 3. 공통 재료 사양 (6장 동일)",
|
||
f"- 콘크리트: {conc} ({S[0]['concrete'][0]})",
|
||
f"- 철근: {rebar}, 도면 표기 SD400 ({S[0]['rebar_grade'][0]})",
|
||
f"- 굵은골재 최대치수: Ø{agg} mm",
|
||
"- 설계방법: 강도설계법, 피복두께 6 cm 이상 확보 (주기 1)",
|
||
"- 이음장 600 mm (도면 치수), 겹침이음 1 cycle (도면 상세)",
|
||
"- 라이닝 뒷면 주입재 강도 1.0 MPa 기대 (주기 11)",
|
||
"- 천정부 방수쉬트 부착형 앵커, 철근처짐방지 앵커 적용 (주기 4, 12)\n",
|
||
"## 4. 기준선과 치수",
|
||
f"- 도면 표기 R1 = {r1_drawn} (6장 모두 동일 표기)",
|
||
"- 표준단면 치수표(설계_표준단면치수표) R1 = 6,982 mm, 골격 모델은 6,982 mm 사용",
|
||
f"- 라이닝 외면 R 7.282 m 에서 내면 R 6.982 m 를 빼면 두께 0.300 m, 표기 6.892 m 를 쓰면 0.390 m 이다. 표준단면 두께 300 mm 와 맞는 값은 6.982 m 이다.",
|
||
"- R2 = 3,712 mm, R2′ = 3,910 mm (도면 표기, 표준단면 치수표와 일치)",
|
||
"- EL. 0.000 = 노면 기준 (계획고 F = 0.000 과 일치 기록)",
|
||
"- EL. -0.367 = 아치 중심 높이 (골격의 중심 c = -0.367 m 와 일치)\n",
|
||
"## 5. 충돌·미확정",
|
||
"- [확정 2026-10-21, 사용자 결정] R1 = 6.982 m 유지. 도면의 6.892 m 표기는 확인 대상 오기로 기록한다.",
|
||
"- [미확정] 시트별 패턴군이 어느 측점 구간인지 (도면에 측점 없음)",
|
||
"- [확인 필요] 라이닝 패턴군(A~C-2, D-1~2, E-1~2, WL-1~4, RP-1~2, P-2~3)과 굴착 순서도 패턴명(NP-4AD-1-D-2 등)의 대응. 사용자는 파일명에 기록되어 있다고 답했다. 예시 풀이(NP-5BE-1-WL-4 = NP-5B 의 D-1·D-2)는 파일명 속 WL-4 및 시트 패턴군(WL-3~4)과 맞지 않아 재확인이 필요하다.",
|
||
"- 재료표 수량(총 중량)은 이번 판독에서 추출하지 않았다. 필요하면 재료표 추출을 별도 Task로 한다.",
|
||
"- 철근 배치는 골격 LOD 범위 밖이라 모델에 넣지 않았다 (사용자 승인 3D 상세 수준: 축선·표준단면 스윕 골격).",
|
||
"- 설계 조건과 상이하면 구조해석 검토 후 철근 보강 가능 (주기 5, 시공 중 판단 대상)\n",
|
||
"## 6. 확인 요청 (HITL)",
|
||
"1. NP-5BE-1-WL-4 의 D-1·D-2 풀이가 맞는지, 아니면 WL-4 가 어느 라이닝 패턴군인지",
|
||
"2. 측점별 지보패턴 구간표가 확보되면 그 값으로 placeholder 구간을 교체할지",
|
||
""]
|
||
open(OUT, "w", encoding="utf-8").write("\n".join(lines))
|
||
print("written", OUT, len(lines), "lines")
|