From a3c2350be6bab7b380aab64af7e9923a245efdc6 Mon Sep 17 00:00:00 2001 From: ahnyongjoo Date: Wed, 28 Oct 2026 11:21:41 +0900 Subject: [PATCH] =?UTF-8?q?docs(rebar):=20=EA=B4=80=EB=A6=AC=EB=A6=AC?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=97=91=EC=85=80=C2=B7Gitea=20=EC=9A=B4?= =?UTF-8?q?=EC=98=81=20=EA=B7=9C=EC=B9=99=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 5.5 --- CLAUDE.md | 7 ++++ Code/tools/make_change_log_xlsx.py | 35 ++++++++++++++++++ .../실행_관리리스트_2026-10-28_v0.1.00.xlsx | Bin 0 -> 8182 bytes HANDOFF.md | 2 + 4 files changed, 44 insertions(+) create mode 100644 Code/tools/make_change_log_xlsx.py create mode 100644 DOC/04_실행/실행_관리리스트_2026-10-28_v0.1.00.xlsx diff --git a/CLAUDE.md b/CLAUDE.md index 9e0ddc9..5daa602 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -13,3 +13,10 @@ - 세션 시작 시 `CLAUDE.local.md`(담당 범위)와 `HANDOFF.md`(인수인계)를 읽고 현재 상태를 짧게 보고한다. 작업 요청이 없으면 구현을 시작하지 않는다. - 담당 범위 밖 파일을 임의로 수정하지 않는다. 기존 변경의 작성자·목적을 추정하지 않고, 확인되지 않은 변경은 삭제·덮어쓰지 않는다. - 실제로 실행한 검증과 실행하지 못한 검증을 구분해 기록한다. 종료 전에 `HANDOFF.md`를 갱신한다. + +## 파일 관리·Gitea 규칙 (2026-10-28 사용자 지시) +- 최종 파일은 모두 이 폴더(Pier_T_rebar)에서 관리한다. 외부(D:\Rhino-MCP 등)에서 필요한 것은 복사해 오고, 원본은 사용자 확인 없이 삭제·수정하지 않는다. +- 이전·이동·경로 치환·삭제 등 구조를 바꾸는 작업은 `DOC\04_실행\실행_관리리스트_*.xlsx`에 날짜별로 한 줄씩 기록한다(이전/이후 위치, 되돌리는 방법 포함). 기록 스크립트: `Code\tools\make_change_log_xlsx.py`. +- Git: 이 폴더가 저장소이고 작업 브랜치는 `rebar`, 원격은 `origin` = https://gitea.hmac.kr/ypshim/Pier_v1 이다. 원격 `main`·`master`는 다른 프로젝트 내용이므로 푸시·수정하지 않는다. +- 작업이 끝나면 커밋하고 `origin rebar`로 푸시한다. 커밋은 한 가지 변경 단위로, 경로를 지정해 스테이징하며(`git add -A` 대신) 대용량 모델(*.3dm, *.3dmbak, *.pkl, *.zip)은 올리지 않는다. 메시지 형식은 `type(scope): summary`. +- 위 `상위 pier_v1\CLAUDE.md`의 vitest 커밋 규칙은 이 폴더에 적용하지 않는다. diff --git a/Code/tools/make_change_log_xlsx.py b/Code/tools/make_change_log_xlsx.py new file mode 100644 index 0000000..3fa4492 --- /dev/null +++ b/Code/tools/make_change_log_xlsx.py @@ -0,0 +1,35 @@ +"""날짜별 관리리스트(변경·이전 기록) 엑셀 생성. 사용: python make_change_log_xlsx.py <출력 xlsx>""" +import json, sys +from openpyxl import Workbook +from openpyxl.styles import Font, PatternFill, Alignment + +root, chg, out = sys.argv[1], sys.argv[2], sys.argv[3] +R = root.rstrip("\\") +rows = [ + (r"2026-10-28",r"폴더",r"작업 폴더 변경",r"Pier_T → pier_v1\Pier_T_rebar",r"D:\★Pier 자료\프로그램\Pier_T",R,r"새 폴더만 사용. 옛 폴더는 건드리지 않음",r"완료"), + (r"2026-10-28",r"대화기록",r"이전 대화 기록 복사",r"프로젝트 기록 3개 세션+메모리",r"C:\Users\User\.claude\projects\D---Pier---------Pier-T",r"C:\Users\User\.claude\projects\D---Pier----pier-v1-Pier-T-rebar",r"새 위치 폴더 삭제(원본 유지)",r"완료"), + (r"2026-10-28",r"지침",r"worktree 가이드 반영",r"CLAUDE.local.md, HANDOFF.md 신설, CLAUDE.md·.gitignore 추가",R+"\worktree-human-ai-guide.md",R,r"추가한 파일/줄을 삭제",r"완료"), + (r"2026-10-28",r"이전",r"정션 3개를 실제 폴더로 복사",r"rebar_pipeline(16), review_pipeline(123), pier-program(126)",r"D:\Rhino-MCP\rhino-mcp-main\*, D:\Rhino-MCP\pier-program",R+"\Code\*",r"원본은 그대로 있음. 사본 삭제 후 정션 재생성",r"완료(파일 수·용량 일치)"), + (r"2026-10-28",r"이전",r"rhino_mcp 서버 코드 복사",r"Code\rhino_mcp",r"D:\Rhino-MCP\rhino-mcp-main\rhino_mcp",R+"\Code\rhino_mcp",r"사본 삭제",r"완료"), + (r"2026-10-28",r"이전",r"Rhino 작업 배경 지침 복사",r"CLAUDE_rhino배경.md; CLAUDE.md의 @가져오기 변경",r"D:\Rhino-MCP\rhino-mcp-main\CLAUDE.md",R+"\CLAUDE_rhino배경.md",r"CLAUDE.md 가져오기 줄을 옛 경로로 되돌림",r"완료"), + (r"2026-10-28",r"설정",r"MCP 서버가 새 사본 사용",r"PYTHONPATH로 새 Code\rhino_mcp 우선 로드",r"conda 환경(rhino_mcp)은 D:\Rhino-MCP 가리킴(수정 안 함)",R+"\.mcp.json",r"env 항목 삭제",r"완료(import 확인)"), + (r"2026-10-28",r"Git",r"pier-program 내부 .git 제거",r"이력은 번들로 보관",r"Code\pier-program\.git",r"backup\pier-program_20261028.bundle (원본 저장소는 D:\Rhino-MCP\pier-program에 그대로)",r"번들 또는 원본에서 이력 복원",r"완료"), + (r"2026-10-28",r"경로",r"D:\Rhino-MCP 경로 문구 치환",rf"{len(json.load(open(chg,encoding='utf-8')))}개 파일(시트 '경로치환 파일')",r"D:\Rhino-MCP\...",r"Pier_T_rebar\Code\...",r"backup\경로치환_20261028\ 의 원본으로 덮어쓰기",r"완료"), + (r"2026-10-28",r"보류",r"Rhino_MCP_연결실행.bat 경로 유지",r"Rhino /runscript가 한글·공백 경로를 못 읽는다는 주석 때문",r"D:\Rhino-MCP\...\rhino_mcp_client.py",r"(변경 없음)",r"-",r"보류: 사용자 판단 필요"), + (r"2026-10-28",r"보류",r"메모리 사본 내 옛 경로 문구",r"context-migration\memory (원본과 어긋남 방지)",r"-",r"(변경 없음)",r"-",r"보류"), + (r"2026-10-28",r"Git",r"저장소 초기화 및 첫 커밋",r"브랜치 rebar, 3,979개 파일, 3dm·3dmbak·pkl·zip 제외",r"-",r"커밋 964a841",r"git reset 또는 .git 삭제",r"완료"), + (r"2026-10-28",r"Gitea",r"원격 연결 및 푸시",r"https://gitea.hmac.kr/ypshim/Pier_v1 의 rebar 브랜치(main/master는 건드리지 않음)",r"-",r"origin/rebar",r"원격 브랜치 rebar 삭제",r"푸시 후 갱신"), +] +wb = Workbook(); ws = wb.active; ws.title = "날짜별 관리리스트" +hdr = ["날짜","구분","작업","내용","이전(원본) 위치","이후(새) 위치","되돌리는 방법","상태"] +ws.append(hdr) +for r in rows: ws.append(r) +ws2 = wb.create_sheet("경로치환 파일"); ws2.append(["파일(Pier_T_rebar 기준)","치환 횟수","치환 전 원본 보관"]) +for c in json.load(open(chg,encoding="utf-8")): ws2.append([c["file"],c["count"],"backup\경로치환_20261028\\"+c["file"]]) +for w,widths in ((ws,[12,9,30,48,52,52,40,22]),(ws2,[70,10,80])): + for i,x in enumerate(widths): w.column_dimensions[chr(65+i)].width = x + for c in w[1]: c.font=Font(bold=True,color="FFFFFF"); c.fill=PatternFill("solid",fgColor="305496") + w.freeze_panes="A2" + for row in w.iter_rows(min_row=2): + for c in row: c.alignment=Alignment(wrap_text=True,vertical="top") +wb.save(out) diff --git a/DOC/04_실행/실행_관리리스트_2026-10-28_v0.1.00.xlsx b/DOC/04_실행/실행_관리리스트_2026-10-28_v0.1.00.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..7194ea150109d4bfaaeaa416a5c5c270dc0d3d51 GIT binary patch literal 8182 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