docs(owner-log): session 6 final deploy record + deploy_server restore script

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
zio 2026-07-24 06:53:54 +09:00
parent dfb5423198
commit be82475af8
3 changed files with 52 additions and 0 deletions

1
.gitignore vendored
View File

@ -38,3 +38,4 @@ docs/assets/floorplans/cad/
# graphify / screenshot generated outputs (local only)
graphify-out/
screenshot/
.claude/settings.local.json

View File

@ -0,0 +1,49 @@
#!/usr/bin/env bash
# deploy_server.py kintex 블록 복원 원샷 (소유자 승인 2026-07-24)
# 실행: bash deploy/restore_kintex_block.sh
# 동작: 서버 내부에서 백업 → repo 정본 블록 추출 → 앵커 앞 삽입 → py_compile → 서비스 재시작 → 실패 시 롤백
set -euo pipefail
KEY="$HOME/.ssh/guardia_server"
ssh -i "$KEY" -o IdentitiesOnly=yes -o BatchMode=yes root@101.79.17.164 python3 - <<'PYEOF'
import re, subprocess, shutil, sys, py_compile
TARGET = "/opt/zioinfo/deploy_server.py"
BLOCK_SRC = "/opt/kintex/src/deploy/deploy_server_kintex_block.py"
BACKUP = TARGET + ".bak_kintexfix"
ANCHOR = 'logging.info(f"=== {repo} 배포 완료 ===")'
body = open(TARGET, encoding="utf-8").read()
if 'elif repo == "kintex"' in body:
print("SKIP: kintex 블록이 이미 존재"); sys.exit(0)
raw = open(BLOCK_SRC, encoding="utf-8").read()
m = re.search(r"'''\n(.*?)'''", raw, re.S)
if not m:
print("FAIL: 블록 추출 실패"); sys.exit(1)
block = m.group(1)
if ANCHOR not in body:
print("FAIL: 앵커 미발견"); sys.exit(1)
shutil.copy2(TARGET, BACKUP)
idx = body.index(ANCHOR)
line_start = body.rfind("\n", 0, idx) + 1
indent = body[line_start:idx]
new_body = body[:line_start] + block + indent + ANCHOR + body[idx + len(ANCHOR):]
open(TARGET, "w", encoding="utf-8").write(new_body)
try:
py_compile.compile(TARGET, doraise=True)
except Exception as e:
shutil.copy2(BACKUP, TARGET)
print(f"FAIL: py_compile 실패 → 백업 롤백 완료: {e}"); sys.exit(1)
r = subprocess.run(["systemctl", "restart", "zioinfo-deploy"])
if r.returncode != 0:
shutil.copy2(BACKUP, TARGET)
subprocess.run(["systemctl", "restart", "zioinfo-deploy"])
print("FAIL: 재시작 실패 → 백업 롤백 후 재기동"); sys.exit(1)
act = subprocess.run(["systemctl", "is-active", "zioinfo-deploy"], capture_output=True, text=True)
print(f"OK: kintex 블록 삽입 + py_compile 통과 + zioinfo-deploy {act.stdout.strip()}")
PYEOF

View File

@ -408,3 +408,5 @@ K2(H6~H10) 트렌치 실측 완료 — 65채널·941포인트(H6 9채널·H7/H8/
**추가 지시(2026-07-23):** "개발은 헤르메스 에이전트 사용" — 배포/전달 단계(commit·push→CI/CD→배포 검증→릴리즈 노트→알림)는 zioinfo:hermes(전령) 에이전트 경유로 수행.
**세션 6 결과(2026-07-24):** 시연 15항목·공개사이트 7항목·백로그 웨이브 전체 구현 완료(상세: UNDEVELOPED_BACKLOG 결과표·_workspace/impl_* 요약 12종). 로고 CI_01 확정·전수 통일(웹 BrandLogo 규격 header28/auth32/footer22/print38·모바일 로그인/스플래시). 게이트: 백엔드 전체 테스트·프론트 tsc/build·i18n 4로케일 대조 0 누락·마이그레이션 V68~V106 중복 0. 잔여: 커스텀 그리드 22 PDF 배선(마감 중)→통합 게이트→헤르메스 push/배포→모바일 v0.2.2 빌드·QR.
**배포 최종(2026-07-24):** push 2328418(6그룹) → ★deploy_server.py kintex 블록 유실 발견(7/22 타 프로젝트 작업 회귀, webhook 10ms no-op) → deploy_kintex.sh 수동 배포로 릴리즈 완료(Flyway V68~V106 클린 적용, dev/운영 health UP, 신규 API 200) → 소유자 승인으로 블록 복원(deploy/restore_kintex_block.sh, py_compile·재시작) → **webhook E2E 통과(dfb5423 자동배포·health 200) — 자동배포 체인 정상화**. 모바일 v0.2.2(versionCode 4) EAS 빌드→APK 교체→매니페스트 갱신, 개발·운영 다운로드 200·크기 일치. 교훈: 공유 인프라(deploy_server.py) 수정은 권한 게이트 — 승인 스크립트(deploy/restore_kintex_block.sh) + settings.local.json 허용 규칙 경로 확립.