Files
Pier_v1/Code/교각모델링앱/tools/patches/2026-10-20_manual_v0213.py
T
ahnyongjooandClaude Sonnet 5.5 964a841de1 chore(rebar): Pier_T_rebar 작업 폴더 초기 구성 및 외부 의존 파일 통합
- Code\rebar_pipeline, review_pipeline, pier-program을 정션에서 실제 폴더로 전환
- Code\rhino_mcp 및 CLAUDE_rhino배경.md 추가, .mcp.json은 PYTHONPATH로 새 위치 사용
- pier-program 내부 .git 제거(이력은 backup\pier-program_20261028.bundle에 보관)
- worktree 가이드 반영(CLAUDE.local.md, HANDOFF.md)
- D:\Rhino-MCP 경로 참조를 새 위치로 치환

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-28 11:20:18 +09:00

50 lines
6.3 KiB
Python

"""Manual v0.2.12 -> v0.2.13 (2026-10-20): app improvements #34-2/3/4/6 (C9 params<->expected consistency, C3b field-level 'still the creation value',
point-list rule, table-cell anchors). The v0.2.12 file moves to backup/ after this writes v0.2.13."""
import shutil
from pathlib import Path
DOC = Path(__file__).resolve().parents[4] / "DOC" / "04_실행"
SRC = DOC / "실행_T형교각모델링앱사용설명서_2026-10-19_v0.2.12.md"
DST = DOC / "실행_T형교각모델링앱사용설명서_2026-10-20_v0.2.13.md"
s = SRC.read_text(encoding="utf-8")
def rep(a, b):
global s
assert s.count(a) == 1, a[:70]
s = s.replace(a, b)
i = s.index("| v0.2.12 | 2026-10-19 |")
j = s.index("\n", i)
s = s[:j + 1] + "| v0.2.13 | 2026-10-20 | 심영표 | 앱 확인 검사 2종 추가(C9 params↔expected 일관성, C3b 필드 단위 원본 잔존)와 점 좌표 목록 검사, 표 칸 하나에서만 따라간 표 밖 치수 후보를 C등급으로 내림: 4 화면 구성, 5.3, 5.4, 6.1, 8, 9, 부록 B | OPEN #34 ②③④⑥ |\n" + s[j + 1:]
rep("| 근거 보기 | 묶음 표의 [근거 보기] | 앱 확인 8종 검사별 결과·비교한 내용·도면 위치, 사유와 함께 **확정** |",
"| 근거 보기 | 묶음 표의 [근거 보기] | 앱 확인 검사별 결과(C1~C9, C3b)·비교한 내용·도면 위치, 사유와 함께 **확정** |")
rep("앱 확인 8종(C1 출처·C2 표 대조·C2b 표 밖 치수·C3 템플릿 원본·C4 수량·C5 params 독립·C6 범위·C7 고정 항목·C8 재생성)",
"앱 확인 검사(C1 출처·C2 표 대조·C2b 표 밖 치수·C3 템플릿 원본·C3b 필드 단위 원본 잔존·C4 수량·C5 params 독립·C6 범위·C7 고정 항목·C8 재생성·C9 params↔expected 일관성)")
rep("| 근거 보기 | 앱 확인 8종 검사의 결과와 비교 내용을 보는 화면 |", "| 근거 보기 | 앱 확인 검사(C1~C9, C3b)의 결과와 비교 내용을 보는 화면 |\n| C9 일관성 | 같은 양을 나타내는 params 값과 expected 값이 서로 같은지 보는 검사. 게이트를 돌리기 전에 \"한쪽만 바뀌고 다른 쪽은 옛 값\"을 찾는다. 같은 도면 읽기에서 나온 값이면 서로 같은 것이 당연하므로 독립 근거는 아니다 |\n| C3b 필드 단위 원본 잔존 | 교각을 만들 때의 값 기록(origin_values.json)과 비교해, 바뀐 묶음 안에서 높이로 보이는 값 몇 개가 옛 값 그대로 남았는지 알려 주는 검사(주의) |")
# 5.4 after the check table note
rep("'일치'는 \"독립 근거와 같다\"는 뜻이지 \"도면이 맞다\"는 보증이 아닙니다. 철근 위치·좌표와 표 밖 치수는 아직 앱이 대조하지 못하는 부분이 많습니다.",
"'일치'는 \"독립 근거와 같다\"는 뜻이지 \"도면이 맞다\"는 보증이 아닙니다. 철근 위치·좌표와 표 밖 치수는 아직 앱이 대조하지 못하는 부분이 많습니다.\n\n"
"**검사 2종 추가 (2026-10-20)**\n"
"- **C9 params↔expected 일관성**: 새 도면 값을 넣다가 params만 고치고 expected는 옛 값으로 남기는 실수를 게이트 실행 전에 찾습니다(예: 코핑 윗면 단 높이, 받침 피치, 말뚝 피치·길이, 후프 사슬, 기초 철근 개수와 격자). 다르면 해당 묶음이 **불일치**가 되고 근거 보기에 \"params … = ○ ≠ expected … = ○\"가 나옵니다. 점 좌표로 대상을 지정하는 목록(`coping_rebar.c14.hooks_up`)이 실제 점(`c14.points`)과 맞는지도 같은 검사에서 봅니다. 새재1교·옥성교 같은 다른 형식은 해당하는 규칙만 적용됩니다.\n"
"- **C3b 필드 단위 원본 잔존**: 교각을 만들 때 기록한 값(`origin_values.json`)과 비교해, 이미 바뀐 묶음 안에서 높이로 보이는 값 중 옛 값 그대로 남은 것이 있으면 **주의**로 알려 줍니다(예: 새 도면의 높이로 바꾼 뒤에도 옛 좌표가 남은 점 목록). 이 기록이 없는 교각(앱이 기록을 만들기 전에 만든 교각)은 해당 없음이고, 필요하면 `python tools\\make_origin_values.py <교각> <백업 폴더>`로 초기 백업에서 만들 수 있습니다.")
# 5.3 anchors
rep("**[선택한 후보 반영]**은 선택한 줄에만 적용되고",
"재료표 칸 **하나**에서만 따라간 후보는 재료표 행이 밀려 거짓 후보가 되기 쉬워서(운곡교 P3·P4에서 재료표의 길이 칸 \"3.800\"을 철근 사슬 끝으로 오인) 자동으로 C등급으로 내립니다(운곡교 P3·P4 확인값 기준 B등급 오답 10/65 → 2/39). **[선택한 후보 반영]**은 선택한 줄에만 적용되고")
# 6.1 files
rep("| `anchors.json` | 표 밖 치수 앵커(원본 교각이 값을 읽은 도면 문자 위치). 템플릿에서 복사 |",
"| `anchors.json` | 표 밖 치수 앵커(원본 교각이 값을 읽은 도면 문자 위치). 템플릿에서 복사 |\n| `origin_values.json` | 교각을 만들 때의 params·expected 값 기록(C3b). 교각을 만들 때 앱이 자동으로 쓰며, 이전 교각은 `tools\\make_origin_values.py`로 초기 백업에서 만든다(\"reconstructed\"로 표시) |")
# 8 troubleshooting
rep("| 도면 치수 사슬 경고 | 도면의 `개수@간격=합계`가 맞지 않음 | 도면 자체의 오류일 수 있으니 [도면 보기]로 확인하고 설계자에게 문의 |",
"| 도면 치수 사슬 경고 | 도면의 `개수@간격=합계`가 맞지 않음 | 도면 자체의 오류일 수 있으니 [도면 보기]로 확인하고 설계자에게 문의 |\n"
"| 근거 보기에 \"C9 … params … ≠ expected …\" | 같은 양을 나타내는 두 파일 값이 다름 | 어느 쪽이 도면 값인지 확인하고 다른 쪽을 고침(묶음 편집). 고친 묶음은 다시 확정 |\n"
"| \"C3b … 생성 시점 값 그대로\" 주의 | 바뀐 묶음 안에서 높이 값 몇 개가 옛 값 그대로 | 해당 값이 새 도면에서도 같은 값이 맞는지 도면과 대조. 맞다면 사유를 적고 확정 |")
# 9 limits
rep("- **표 밖 치수 후보의 한계**:", "- **C9의 한계**: 두 파일의 값이 같다는 것만 확인합니다. 같은 도면 읽기에서 두 파일을 채웠다면 틀린 값도 서로 같을 수 있습니다.\n- **표 밖 치수 후보의 한계**:")
DST.write_text(s, encoding="utf-8")
(DOC / "backup").mkdir(exist_ok=True)
shutil.copy2(SRC, DOC / "backup" / SRC.name)
SRC.unlink()
print("written", DST.name)