인계 — 아트조이 상세페이지 편집기 P3 → P5 «코디 직접» (ssh) · P2 끝난 뒤
26.9.24(목) 21:40 KST · [코디] 세션 릴레이(컨텍스트 84%) · 이 문서 하나로 시작한다. 앞 인계문 =
relay-2026-09-24-block-editor-takeover.md(규칙 · 절차는 그대로 유효 — 첫 일감 1~4 는 P2 로 끝났다).
▶ 첫 일감 (순서대로 · 묻지 말고 시작)
- P3 서버 쪽은 로컬 사본에 이미 절반 써 두었다(아직 안 올림) —
C:\dev\_work\artjoy-block-editor\work\tools\server\editor-block-store.js: -listBlocks=ids=b-1,b-2조회(배지용) ·tab=archived(보관함) 추가 -createBlock=meta.asset있으면category·source_json저장 - 새 함수blockUses(key)(D2 · 쓰는 곳 목록) ·exportBlocks(params)+zipStore(store zip ·zlib.crc32) · exports 에 추가 - ⏳남은 서버 일 =tools\static_server.js에 경로 2개:GET /api/editor/blocks/:id/uses→blockUses·GET /api/editor/export?ids=→ zip 응답(Content-Type: application/zip·Content-Disposition: attachment; filename=…). 작업 사본 =C:\dev\_work\artjoy-block-editor\work\(코드만 · 저쪽 최신 = 커밋f744fb9). - P3 화면 — web-designer 상담은 이미 받음(아래 처방 요약). 만들 것:
-
bridge.js= 금칙어banned(text)(CSVblock-editor/assets/banned-words.csv42행 · 판정 차단/경고 · 따옴표 있는 CSV) · 「블록에서 넣기」 버튼(editButton에data-be-pick· 아이콘bi-collection· 아이콘만 32px) ·afterApply(D2: 다른 곳 N곳 쓰면 팝오버 [여기만 바꾸기 = 주][전부 바꾸기]) ·decorate(card, inspector)(사진 자리 버튼 우상단 8px--warn점 = 새 버전 · 누르면 [여기만(주)][전부][그대로]) ·pruneRefs에 blockRefurl로 옮겨간 사진 다시 짝짓기(P1 한계:imgs.N순서). -panel.js다시 짜기 = 모드 2개 — 고르기(pick· 카드 전체가 버튼 · 클릭 = 즉시 넣기 · P2 임시.bp-pick버튼 삭제 · hover outline--accent) / 관리(manage· 카드 아래 아이콘 줄: 편집(새 버전) · 보관 · 체크(내보내기) · ★ 우상단 그대로 · 이름 = 두 번 누르기). 탭 = ★ · 최근 · 에셋 · (관리) 보관함. 에셋 탭 =block-editor/assets/index.json(28분류 1,280개) 연결 — 썸네일 contain(지금 CSS 그대로) · 자체 제작은 흰 바탕 · 누르면 편집기가 그 에셋으로 열림 → 「적용」 = 내 블록(복사본 · meta.asset = {cat, file, title, source, license}). 출처 · 라이선스 표시. 선택 막대(N개 선택됨 [내보내기][보관][취소]). -editor.js=open({asset})→ SVG 받아 소독(script · on · 외부 href · foreignObject 제거) →F.loadSVGFromString→ 글자는IText로(편집 가능) · 폰트 이름을 불러온 폰트로 맞춤 · 작은 배지 글자 기본 크기 보정*(가장 작은 글자가 860 기준 36px 되게 캔버스 확대 — 정리 일감 ④) · 글자 패널에 금칙어 표시(차단 =bi-x-octagon-fill· 경고 =--warn+bi-exclamation-triangle-fill· 「대신 쓸 표현」 칩 누르면 치환) · 「적용」 때 차단 있으면 막음, 경고면 확인. -layout/place.js= 글자 요소 입력칸에도 같은 금칙어 표시 + 경고 목록 kindbanned. -index.html=data-be-pick처리(HDBlock.openPanel({pick:true})→ 자리 주소 +blockRefs) ·editSlot끝에HDBlock.afterApply(...)·renderInsp끝에HDBlock.decorate(c, insp)· init 에getCur. -block-editor/standalone.html새로 = 머리줄 52px(「‹ 생성기로」 · 제목 「블록 만들기」 · 오른쪽 「새 블록」 주 버튼) + 패널을 모달 없이 본문에(open({standalone:true, manage:true})분기 —.bp-back안 씀). - ⚠--err토큰이theme.css에 실제로 있는지 먼저 확인(P2 place.css 는var(--err,#a8443a)로 씀 · 없으면 폴백값 그대로 두고 새 색 만들지 않는다). - 검사 = 새
block-editor/tools/check-blocks.js(npmblocks:check· 포트 8840 · 운영 DB 복사본 · layout:check 틀 재사용): 블록 창 3탭+보관 · 에셋 탭 1,280 · 에셋 → 편집기 → 적용 = 사용자 블록(category · source) · 다른 작업본에 넣기(블록에서 넣기 → blockRefs) · D2 여기만/전부(두 작업본 · 전부 = 다른 작업본 새 버전 저장 · 옛 JPG · 옛 버전 무변경) · 새 버전 배지 · 내보내기 zip(목록 · 레시피 · 파일 · 폰트 · CRC 맞음) · 단독 페이지 200 + 새 블록 · 금칙어 차단/경고 · 13px 하한 · 운영 DB 무변경. + 회귀 =layout:check --baseline C:\cody\jobs\block-editor-p2\baseline.json·editor:check -- --no-ml·detail:check·generator:check(아래 ⚠). - 올리기 · 서버 · 커밋 · devplan · 보관 = P2 와 같다 —
bash C:/dev/_work/artjoy-block-editor/job/upload.sh 20260924-p3 <상대경로…>(.bak+ sha256) → 검사 → 8820 재시작(pid =netstat -ano | findstr :8820→taskkill /PID→schtasks /run /tn "\Cody\HaedaliServer"→/200 ·Get-ScheduledTaskInfo결과 0) → 커밋(메시지 UTF-8 파일git commit -F· 이름 지정 add) → 저쪽 devplanC:\dev\devplan\block-editor.html(#p3 절 · 단계 표 · 맨 위 시각) + 허브 카드(devplan\index.html12번 카드) →python mirror.py p3→ 우리C:\dev\devplan\artjoy-photo-editor.html(상태 · #phase · #todo) →python build_hub.py→ 텔레그램. - P3 에 끼울 정리 일감(저쪽): ①
C:\dev\design-refs\tabler-icons-3.48.0\가 두 번 사라진 원인(정리 스크립트가 design-refs 를 건드리는지 — 찾기만 · 지우지 말 것) ②저쪽C:\dev\seedchain\projects\haedali-detail-generator\handoff.md35k → archive 이관(원문 그대로 · 대조) ③block-editor\assets\_gen\_reset_to_n.py→_attic\로 이동(삭제 금지) ④작은 배지 = 위 editor 보정. - 그 다음 P5 보정 · 확장(지우개 · 마스크 · 복제 도장 · 부분 흐림 · 배경 확장 · 목업 합성) — 같은 절차(상담 → 코드 → 검사 → 올리기 …).
P2 에서 끝난 것 (26.9.24 21:25)
- 저쪽 커밋
f744fb9· layout:check 30/30(꼬리표 없는 작업본 4개 JPG 해시 = 배포 전) · editor 28/28 · detail ok · 8820 재시작 21:15 · 저쪽 devplan #p2 · 보관mirror\p2\· 보고서C:\dev\_work\artjoy-block-editor\review\report2.md· 설계 = 저쪽block-editor\DESIGN.md§10-2. - ⚠generator:check 1항목 실패 = 기존 드리프트(「화면 미리보기 ↔ 저장 JPG 점 대조」 1.28/1 · 0.76%/0.5 · P2 전 index.html 로 A/B 해도 같은 값 · 저장 JPG =
outputs\jewel-lug-sample\jewel-lug-sample.jpg26.9.15 판 · P1 끝 19:52 엔 통과). 원인 조사는 P3 중 시간이 나면 — 고치려면--mutation(운영 저장) 이 아니라 원인(그 사이 바뀐 파일)을 찾는다.
확정 규약 (바꾸지 않는다)
- 🔴아트조이 제품 사진 · DB · 작업본을 우리 쪽에 남기지 않는다(검수로 본 캡처는 보고 나서 이름으로 지운다) · 귀속 · 회수 · 「우리 자산」 단어는 저쪽 파일 · devplan · 커밋에 금지 · 화면 작업 전 web-designer 상담(P3 는 받음) · 원격 파일
.bak후 올리고 sha256 대조 · push 금지 ·git add -A금지. - web-designer P3 처방 전문 요지 = 위 첫 일감 2번에 다 넣었다(추가: 에셋 검색 0건이면 「전체에서 찾기」 안내 · 금칙어는 입력 중 실시간 표시(150ms)).
- 계획 원본 =
C:\dev\_work\artjoy-block-editor\PLAN.md· SPEC =job\pack\SPEC.md§4-1 · §4-5 · §5 P3 행 · 결정 D2(블록을 고치면 이미 쓴 곳은 버전 고정 + 「새 버전 있음」 → «여기만 · 전부 · 그대로» · 이미 뽑은 JPG · 과거 작업본 버전은 건드리지 않는다).
보고 마커
- 매 답변 끝 = 3단계 보고 · 시드 한 줄 · 컨텍스트 % · 텔레그램
notify.py done. 질문은 채팅으로만. - 시드 =
C:\dev\seedchain\projects\artjoy\handoff.mdNOW 🎨 절(지금 16.8k자 · 캡 20k) + 로컬 커밋.