Files
AriWeb-Suite/Ariweb-Suitle_Dev-Order_v0.2.0.md

6.7 KiB

Ariweb Suite 개발 지시 — 작성자: Neo · v0.2.0

작성자: Neo 작성일: 2026-10-28 이전 버전: v0.1.1(최초 통합 개발 지시, Hera) · v0.1.4(미반영 오류 수정·HAL AI 대시보드·다중 AI 공동 작업창 지시, Neo) 이번 개정: 도입 모듈 Webmaker 에 직접 편집(시각 편집기) 사용자 기능을 더한다. 새 사용자 기능이므로 가운데 버전 번호를 하나 올린다 — Suite 0.1.x → 0.2.0, Webmaker 1.7.3 → 1.8.0. v0.1.1 의 모든 기준과 v0.1.4 의 지시는 그대로 유효하며, 이 문서는 추가 요구만 적는다(v0.1.4 항목은 이번 구현 범위가 아니다).

개정 이력

  • v0.1.1 · Hera · 2026-10-26: 최초 통합 개발 지시, Webmaker·AriMail 재사용 원칙, 사용량 경고 70·80·90·95%.
  • v0.1.4 · Neo · 2026-10-27: patch 자동 증가 규칙, 미반영 오류 수정 전수 반영, HAL AI 대시보드, 다중 AI 공동 작업창.
  • v0.2.0 · Neo · 2026-10-28: Webmaker 직접 편집(끌어다 놓기 시각 편집기) — Suite modules/webmaker 와 기존 Webmaker 저장소 양쪽에 반영. 엄격한 TDD, 격리 작업 트리, 커밋·push·병합·배포는 Neo 가 별도 검토 뒤 수행.

1. 사용자 요구(약화 금지)

Webmaker 가 초안을 만들어 보이는 페이지가 생긴 뒤, 직접 시각 편집 모드를 더한다. Wix·아임웹 방식의 끌어다 놓기를 적용한다. 변경은 Suite 의 modules/webmaker 와 기존 Webmaker 저장소 양쪽에 반영한다.

2. 필수 동작(계약)

  1. 오른쪽 미리보기 도구 줄의 분명한 직접 편집 전환. 사이트와 HTML 페이지가 골라져 있을 때만 켜진다. 기존 소스 편집기는 유지한다.
  2. 시각 모드: 캔버스에서 보이는 글을 바로 편집, 보이는 요소 선택, 기존 블록 끌어 순서 바꾸기, 팔레트 구성 요소를 올바른 자리에 끌어다 놓기. 구성 요소 최소: 섹션/컨테이너·제목·문단·버튼/링크·이미지·구분선·여백.
  3. 선택 요소 조작: 이동·복제·삭제·요소에 맞는 기본 속성(글·링크 주소·이미지 주소/대체 글·정렬·색·배경·여백). Wix 전체 기능을 흉내 내지 않는 일관되고 안전한 첫 릴리스.
  4. 저장 상태(저장되지 않음/저장 중/저장됨/오류) 표시, 저장, 실행 취소/다시 실행, 버리기/다시 불러오기. Ctrl/Cmd+S 저장. 페이지·사이트 전환·화면 이동·창 닫기 전 저장하지 않은 작업 보호. 저장은 실제 선택 HTML 파일을 갱신하고 기존 Webmaker git/버전 이력에 남기며 미리보기·소스 편집기를 갱신하고 상대 경로 자원이 계속 동작한다. 직접 편집은 AI 캐시를 쓰지 않고 AI 수정으로 세지 않는다.
  5. 시각 모드에서 페이지 스크립트는 실행되지 않는다. 캔버스는 빌더 쿠키·저장소·API 와 격리된다. 보낸 창·출처·세션을 검사하는 한정된 postMessage 규약만 쓰고, 임의 메시지나 HTML 속성을 권한으로 믿지 않는다. 저장 전에 편집기 표식을 제거하고 원본 doctype/head/styles/scripts 를 보존하며 편집하지 않은 코드를 조용히 지우지 않는다.
  6. 거절(한국어 안내): HTML 아닌 파일, 너무 큰 내용, 경로 탈출, 다른 사용자 사이트, 진행 중 AI 작업, 오래된 동시 저장, 잘못된 payload, javascript:/data:text/html 링크, 시각 구성 요소로 들어오는 인라인 이벤트 핸들러, 금지 요소/주소. 임의 HTML 실행 API 를 만들지 않는다.
  7. 기존 테넌트 격리·CSRF/출처 검사·sandbox·소스 편집기·모바일 미리보기·버전/복원·배포·가져오기·다국어·모듈·SEO·Site Brief 동작 보존. Suite 의 저장본 rev 동시 편집 충돌(§9.3)도 직접 편집 저장에 적용한다.
  8. 반응형: 팔레트·속성 창이 캔버스를 가리지 않음, 키보드 사용자용 포커스 가능한 조작과 보이는 선택 표시, 끌어다 놓기의 버튼/키보드 대안.
  9. 새 모듈·눈에 띄지 않는 함수에 한국어 상세 주석.

3. TDD·검증 요구

  • 조각마다 실패하는 테스트를 먼저 쓰고 실행해 RED 를 확인한 뒤 최소 구현으로 GREEN. RED→GREEN 증거를 두 저장소의 docs/verification/ 에 실제 출력으로 남긴다(조작 금지).
  • 권한, CSRF, 허용 페이지, 낙관적 동시성/오래된 저장 거절, 안전한 정화/규약, 스크립트 비실행 계약, 저장이 버전 이력을 만드는 것, 실행 취소/다시 실행 핵심, 끌어 옮기기/구성 요소 삽입 핵심, 저장 상태/이동 보호, 필수 접근성 조작을 모두 다룬다. 편집 문서·규약·상태 로직은 순수 모듈로 뽑아 Node 테스트가 동작을 검사하게 한다. 큰 프레임워크·런타임 의존성을 더하지 않는다.
  • 두 저장소에서 집중 테스트 뒤 전체 묶음을 실행한다.

4. 버전·이력·출처 요구

  • Webmaker: package/runtime/릴리스 표기 1.8.0, CHANGELOG.md·ERRORS.md·README.md·Dev_Order_v1.8.0.md.
  • Suite: 루트 package/runtime/릴리스 표기 0.2.0. modules/webmaker 의 도입 버전/upstream 메타데이터는 Webmaker 1.8.0 을 나타내되 Suite 전용 연결 변경을 잃지 않는다. VERSION_HISTORY.md 에 작성자 Neo·이전 버전·재사용 함수와 수정 함수·고객/운영자 화면·직접 편집·끌어다 놓기·저장·버전·보안 동작·도입 소스 출처(원본 저장소·불변 기준 커밋·원본/대상 경로·수정 여부·라이선스 검토)·테스트·알려진 제한·미확정 정책값. 릴리스/카탈로그/manifest 는 도구가 요구하는 범위에서 일관되게(IMPORTED_SOURCES, scripts/release.mjs 는 package.json 버전을 따른다).
  • 비밀번호·키·토큰·개인 정보·비밀값은 어디에도 넣지 않는다.

5. 저장소 규율

  • 독립 Webmaker 와 Suite modules/webmaker 의 모든 차이를 확인하고 보존한다. Suite 전용 HAL/포털/연동 변경을 upstream 파일로 통째로 덮어쓰지 않는다.
  • 지정된 두 작업 트리 밖(dirty main 체크아웃·Ariweb-suite-mail-hal·Hera 세션/작업 트리)은 건드리지 않는다.
  • 커밋·push·병합·배포·운영 접근을 하지 않는다. Neo 가 독립 검토 뒤 수행한다.

6. 완료 조건(이번 구현의 인도 기준)

두 저장소의 변경 파일 목록, RED·GREEN 명령과 결과, 전체 묶음 결과, 버전, 보안 결정, 알려진 제한, 막힌 항목을 보고한다. 구현 결과와 증거: Webmaker CHANGELOG.md 1.8.0 절·docs/verification/visual-editor-1.8.0-tdd.md, Suite VERSION_HISTORY.md 0.2.0 절·docs/verification/webmaker-visual-editor-0.2.0.md.