# 최신 인수인계 · 2026-10-30

현재 작업은 **feat/complete-core-20261030** 브랜치다. main과 기존 운영 사이트는 이전 0.7.0이며 새 기능이 배포됐다고 해석하지 않는다. [현재 핵심 기능·미완료·사용자 작업](FEATURE-STATUS-2026-10-30.md), [실행·비밀·복원 절차](STANDALONE-0.8.md), [팀 역할 계약](TEAM-0.8.md)을 먼저 읽는다. 전체 검증·공개 배포 상태는 receipts/completion-0.8.json에 있다.

Cloudflare Workers + 공유 Supabase rigoon-studio의 제품 영역을 구현했고 SQL 3개를 원격 적용했다. 새 도메인 공개 배포/main 병합과 실제 계정·Storage E2E, 기존 데이터 이전은 대기다. 새 clone 검증은 해당 영수증의 실제 실행 결과만 따른다. GitHub 소스와 별개로 비밀·로컬 자료·실행 런타임은 E 복원 목차의 최신 체크포인트를 사용한다. Supabase 운영 자료와 파일은 소스 백업에 자동 포함되지 않는다.

아래 문서는 당시 이력이며 최신 기능 판정으로 사용하지 않는다.

---

# 과거 인수인계 · 2026-10-27

회사 컴퓨터에서는 **[HANDOFF-2026-10-27.md](HANDOFF-2026-10-27.md)**부터 시작한다. 새 clone 실행 방법, Git에 없는 자료의 복원, 실제 구현 범위, 최신 서버·도메인 방침과 다음 작업을 정리했다.

현재 코드의 배포 구조는 아직 Sites/D1/R2이며 **이전 미완료**다. 앞으로는 Cloudflare Workers + Supabase `rigoon-studio`를 사용하고, 예약된 `level.rigoonstudio.com`으로 옮긴다. 이번 커밋은 인수인계 문서와 생성 문서만 갱신하며, 운영 데이터·인증·공개 배포를 변경하지 않는다.

아래 2026-10-26 이하 기록은 당시의 구현·검증 이력이다. 당시 `scripts/build-site.mjs`는 이 PC의 외부 Sites 플러그인 도구였으며 저장소에 포함된 실행 파일이 아니다. 회사 PC의 정본 검증 명령은 **`npm ci`, `npm test`, `npm run check`, `npm run build`**다. Sites 플러그인을 설치하거나 해당 외부 스크립트를 실행할 필요가 없다.

---

# 0.7 인계 이력 — 생산 UI·새 clone 확인, E 영수증 별도 관리

2026-10-26 (Asia/Seoul). 제품명은 레벨 스튜디오(Level Studio), 정본은 `web/`이다. 내부 예약·시각 편집·저장 리포트·할인/세금/반복 청구 초안·내부 대화함을 확장했다. **최종 통합 시험 214/214, `npm run check`, 공식 `scripts/build-site.mjs` 빌드를 통과했다. 로컬·생산 브라우저 QA와 143ea41 fresh clone 검증도 완료했다. E 체크포인트·복원 결과는 [E 복원 목차](E:/RIGOON_STUDIO/README.md)의 최신 레벨 스튜디오 영수증에서 별도로 관리한다.** 상세는 [RELEASE-0.7.md](RELEASE-0.7.md), 자체 업무 계약은 [BUSINESS-0.7.md](BUSINESS-0.7.md), 원본 선택 분석 한계는 [REA-0.7.md](REA-0.7.md)를 따른다. 아래 0.6.1 이하 기록은 당시 이력으로 보존한다.

- 예약: 자원·캘린더 생성 → 실제 슬롯 선택 → 예약 생성 → 새로고침을 확인했다. 17:00~17:30 예약 후 중첩 슬롯 16:45·17:00·17:15가 제외됐다. 실제 Node 서버를 종료·재시작하고 같은 SQLite를 열어도 예약이 유지됐다. IANA 시간대·시간표/예외·완충/준비·기간·순환·정원·멱등·정책 이력·ICS는 자동 시험 범위다. 자원은 실제 팀 계정이 아니며 순환은 HighLevel 월별 균등 분배와 다른 자체 정책이다.
- 편집: 실제 사이트 생성 후 제목·본문·메타 설명, 가운데 정렬·padding 40·radius 16 저장 → 새로고침 → 편집기 readback을 확인했다. drag·복제·undo/redo, 허용 스타일·메타, 게시 snapshot 불변·HTML/CSS escaping·잘못된 부분 입력 원자성은 독립 `tests/visual-builder.test.mjs` **10/10 통과**에도 포함한다. 생산 UI 저장·새로고침 후에도 center·padding 40·radius 16이 유지됐다. 실제 모바일 기기 QA로 확장해 말하지 않는다.
- 리포트: 일정/상태 조건 저장 → 새로고침 → 조건 재적용 후 실제 **1건·30분**, CSV 다운로드를 확인했다. 고객·기회·일정·청구서 조회/그룹/CSV 계약을 유지한다.
- 청구·대화함: 할인 후 세금·정수 KRW 반올림, 월 단위 반복 **내부 draft**·생성 이력, 내부 메모·템플릿·고정/담당/읽음/보관을 지원한다. 반복 초안은 서버 조회/tick와 인증된 MCP runner의 원자 저장 경로에 연결·시험했다. 기존 매시간 일정의 생산 실행으로 새 초안이 생성됐다는 확인은 아직 대기다. 실제 외부 발송/돈 이동이 아니다.
- 기존 계정별 저장·revision CAS·파일 원본·암호화 키·owner-private 접근을 유지한다. JSON 백업에 파일 본문은 없으므로 온라인 DB snapshot/업로드 객체를 E에 따로 보관한다. 새 E 체크포인트·복원 결과는 소스 동결 후 별도 실행 영수증과 [E 복원 목차](E:/RIGOON_STUDIO/README.md)의 레벨 스튜디오 최신 manifest와 후속 영수증으로 확인한다.

코드 **143ea41** 배포 **appgdep_6adefb72a0a4819185ea54f75cd01fa4** 성공. 기존 URL·환경1·MCP 활성·owner-private 1소유자/0그룹과 enabled 매시간 일정을 유지했다. 생산 UI에서도 예약·편집기·리포트의 D1 저장/새로고침을 확인했고, 리포트 실제 1건·30분과 CSV를 확인했다. `receipts/verification-0.7.json` 독립 비교에서 이전 고객2/jobs2/runs2의 각 전체 record 보존을 확인했다(현재 고객3). MCP 수동 실행은 **2026-10-26 07:08:35 UTC idle·revision23·healthy**이며 생산 반복 청구 초안 생성을 확인했다는 뜻은 아니다. fresh clone은 정확한 143ea41에서 npm ci/check/214 tests/build 통과·74자산 SHA 일치·C 절대경로 의존 없음을 확인했다. 문서 후속 발행 commit과 E manifest는 root의 최종 영수증을 따른다.

원본 HighLevel 로그인 후 UI/서버 동등성은 미검증이다. 예약 일별 상한·원본 전체 builder 계층/widget·고급 퀴즈/과정 전용 리포트는 현 계약으로 완료했다고 쓰지 않는다. 외부 연결·실결제/발송·익명 고객/독립 학생·실제 팀 공유 권한은 별도 범위다. 기존 매시간 MCP cloud 실행과 접속 시 복구를 구분하고 실시간/5분 주기 성공을 보장하지 않는다. Google 전용 프로젝트 증액 신청은 승인 대기이며 기존 프로젝트는 변경하지 않는다.

---

# 0.6.1 현재 이름과 정본

제품명은 레벨 스튜디오(Level Studio), GitHub는 brownrigoon-commits/rigoon-level-studio, 사이트는 https://rigoon-level-studio.brown-rigoon.chatgpt.site 입니다. 같은 Site·계정 저장소·암호화 키·일정 연결을 유지합니다. C 정본은 outputs/level-studio, E 현재 백업은 E:\RIGOON_STUDIO\레벨 스튜디오 입니다. 과거 이름의 원본·manifest는 보존합니다. 자세한 대응은 [RENAMING-0.6.1.md](RENAMING-0.6.1.md)를 따르며, 아래는 이전 검증 이력입니다. Google 전용 프로젝트 증액 신청은 접수했고 승인 대기 상태입니다.

# 0.6 현재 인계

2026-10-26 Asia/Seoul. Google 직접 OAuth(readonly 2서비스), 암호화된 per-owner 설정/refresh token, PKCE·브라우저 state·만료/일회 소비, 상태 조회와 재연결, /mcp 인증된 내부 대기 작업 runner 및 별도 영수증/heartbeat를 추가했습니다. 구현과 실제 연결 성공은 구분합니다. 현재 검증과 외부 설정 경계는 [INTEGRATIONS-0.6.md](INTEGRATIONS-0.6.md)를 우선합니다. 원본 전체 동일성 또는 외부 메일 발송을 검증한 것으로 해석하지 않습니다.

# 0.5 현재 인계

기준일: 2026-10-26 (Asia/Seoul). `web/`이 정본이며 현재 계약은 이 절과 `PRODUCTS-0.5.md`를 우선한다. 아래 0.4 이하 내용은 당시의 기능/미완료/검증 이력으로 그대로 보존한다. 0.4의 단일 페이지·조건부 폼·퀴즈/수료증·사용자 객체/동적 목록 제한 중 아래 명시된 내부 기능은 0.5에서 구현했다. 원본 전체 복원 완료를 뜻하지 않는다.

## 0.5 실제 추가 기능

| 영역 | 현재 처리 | 접근·계약 경계 |
|---|---|---|
| 다중 페이지/퍼널 단계 | 사이트당 1~50페이지, 페이지 ID/slug·제목·블록·순서, 페이지별 게시 경로·내비게이션·이전/다음 단계, 초안과 게시본 분리 | 기존 소유자 인증 범위에서 렌더한다. 페이지 단계가 있다는 사실과 외부 결제/유입 전환 측정은 별개다. |
| 조건부 폼 | 기본값·다른 필드의 equals/not_equals/checked 조건, 종속 표시·순환/잘못된 참조 거절, 숨긴 값과 필수 검사 제외, 게시본 기준 서버 검증·실제 접수/CRM 연결 | 원본의 모든 설문 분기·리디렉션·리드 제외 기능을 동일하게 복구한 것은 아니다. |
| 강의 퀴즈·수료증 | 단일 선택 문제·정답·통과 점수, 제출 ID 멱등·채점·응시 원본, 현재 퀴즈 통과 제약·진도 반영, 전체 차시 완료 후 번호/스냅샷 수료증·인쇄 경로 | 관리자용 비공개 응시 화면이다. 별도 학생 secure portal/독립 로그인·공인 인증은 제공하지 않는다. |
| 데이터 관리 | 타입 CRM 사용자 필드·값, 사업 객체/레코드·고객 관계·보관/복원, CSV 열 매핑·전행 원자 가져오기·ID upsert, 다중 AND 동적 고객 목록·CSV | 관계 타입은 고객 참조다. 정의 없는 값·잘못된 타입/관계·데이터를 깨뜨리는 스키마 변경은 거절한다. |

기존 계정별 D1/SQLite 저장·revision CAS·HTTP mutation 멱등·실제 파일 R2/디스크, CRM/CSV/기회/일정/할 일, 수동 수납 원장, 캠페인 준비/동의, 수동 평판, 내부 이벤트/영속 대기 자동화는 유지한다. 최초 schemaVersion 1 JSON 백업은 새 구조를 결정적으로 보강해 읽으며 클라우드 정본을 브라우저 샘플로 대체하지 않는다.

## 0.5 검증 기록

- **통합 자동 시험 126개 통과**를 확인했다. 고급 페이지/조건/퀴즈/수료증 검증과 DataHub 10개 시험을 포함한다.
- 실제 로컬 API/UI에서 페이지별 게시 경로·페이지 내비게이션과 단계 이동을 확인했다. 초안 변경으로 기존 게시본이 바뀌지 않는 경계를 유지한다.
- 조건에 따라 보이거나 숨는 필드를 발행하고 실제 폼을 접수해 서버 검증·접수 결과를 확인했다. 표시되지 않는 필드의 임의 값이나 필수 여부를 클라이언트 표시만으로 신뢰하지 않는다.
- 강의의 관리자용 비공개 퀴즈/진도와 수료 조건, 발급 수료증을 여는 인쇄 경로를 확인했다. 별도 수강생 로그인 검증으로 해석하지 않는다.
- 고객 병합의 원본 스냅샷·퀴즈 시도/수료증 연결 일관성을 검사한다. `dataHubMergeHistory` 전체는 일반 참조 재배선에서 보존한다. 병합 tombstone의 옛 사용자 필드 값이 명시적으로 삭제한 기준 고객 값에 재주입되던 결함은 이관 이력 guard로 수정했으며 후속 병합까지 회귀 시험을 통과했다.
- CSV 가져오기의 한 행 오류가 전체 변경을 거절함, 같은 ID의 반복 upsert가 중복 레코드를 만들지 않음, 다중 AND UI의 `false` 값 보존, 안전한 문자열 출력/CSV를 확인했다.

이 시점의 126개 결과는 자체 구현의 검증이다. 최종 버전 bump 후 생산 빌드·GitHub/Sites push·배포·새 clone·E 체크포인트/설치 패키지/복원은 각각 실제 완료 영수증을 따른다. 문서 작성 시 아직 그 후속 단계까지 완료됐다고 확정하지 않는다.

## 현재 남은 외부·접근·실행 경계

- 원본 HighLevel의 로그인 후 UI와 실제 서버 동작/권한/외부 공급자 계약의 동등성은 미검증이다. 공개 artifact의 partial/no-match를 원본 기능 부재로 해석하지 않는다. 근거는 `REA-0.5.md`와 앞선 REA 문서에 구분했다.
- 실제 이메일/SMS/전화·소셜 발송, 실결제/환불/구독, AI 호출, Google/Outlook·외부 리뷰의 인증/연결은 없다. 내부 기록·준비 명단·수동 수납을 외부 전달·돈 이동으로 표시하지 않는다.
- 현재 도구 목록에 Sites 연결 적격성 확인 도구가 없어 기존 ChatGPT Gmail 연결이 배포 사이트의 발송 권한을 제공한다고 확인할 수 없다. 연결 확인 불가를 관리자 deny로 단정하지 않는다.
- 기존 owner-private Sites audience를 유지한다. 익명 외부 고객 폼과 독립 학습자 로그인은 없다. 강의 player·수료증·게시 페이지·폼도 인증된 소유자 범위를 따른다.
- 자동화 due 상태는 실제 저장하지만 접속 중 약 25초 tick과 API/다음 접속 복구로 진행한다. 사이트를 모두 닫은 동안 정시에 실행할 상주 시계/cron은 없다.

Node **24.22.1 x64**, `Start.cmd`/`npm start`, `LABEL_STUDIO_PORT`/`LABEL_STUDIO_DATA`, D1/R2 binding과 온라인 SQLite snapshot/원본 파일 별도 보관 절차는 동일하다. JSON 백업에는 업로드 파일 본문이 없다. 최종 GitHub/Sites commit과 E manifest·hash·복원 시험의 위치는 최종 영수증으로 인계한다.

---

# 0.4 과거 인계

기준일: 2026-10-26 (Asia/Seoul). `web/`이 정본이다. 아래 0.3/0.2 기록은 당시 검증 이력으로 보존한다. 현재 범위는 이 절과 `PRODUCTS-0.4.md`를 우선한다. 코드·의존성·마이그레이션의 최종 commit과 원격 배포·E 체크포인트는 최종 검증 영수증으로 확정한다.

## 0.4 실제 통합 범위

| 영역 | 실제 처리 | 남은 경계 |
|---|---|---|
| 기존 CRM·저장 | 사용자별 D1/SQLite, CAS·멱등, 고객/병합/할 일/CSV/파이프라인/예약, 원본 파일 R2/디스크 | 팀/공유 사업장/세부 역할, 원본 전체 객체 |
| 사이트 | 단일 페이지 블록 편집·초안·게시 스냅샷·발행 slug 렌더, 초안 수정 후 게시본 유지 | 다중 페이지/다중 step 퍼널, 도메인 관리, 익명 공개 |
| 폼 | 필드·게시 버전·실제 POST·타입/필수 검증·중복 접수 방지·응답 이력·CRM 연결 | 익명 외부 접수, 원본의 모든 조건부/설문 분석 |
| 과정 | 모듈/차시·원본 미디어·등록/해제·진도 관리 | 별도 수강생 로그인·자기주도 포털·결제/구독 접근 |
| 청구 | 항목·수량·단가·발행 스냅샷·부분/전액 수납·반전·무효의 실제 원장 | 카드/은행 이동·자동 환불·세금/할인·정기 청구 |
| 캠페인 | 텍스트 초안·동의·태그/유입 필터·개인화·고정 준비 명단·CSV/text | 이메일/SMS 전송·소셜 게시·공급자 전달/성과 |
| 평판 | 수동 기록·답변 초안·보관/복원·출처/별점/검색·가중 집계·CSV | Google 등 동기화/게시·요청 발송·AI 감정 |
| 자동화 | 발행/활성·내부 이벤트·태그/할 일/영업·조건·중복 방지·영속 대기·취소·로그·태그 연쇄 순환 방지 | 상주 cron·외부 메시지/AI/결제 도구·원본 전체 분기/대기 |
| 미디어 재생 | 계정 소유 원본 스트리밍·Range, 외부 소유 거절·SVG 실행 거절 | 파일 변환·외부 영상 플랫폼·orphan 정리 |

### 자동화 실행 방식

접속 중 약 25초 tick, API 처리 및 다음 접속 복구로 due 작업을 진행한다. 사이트를 닫은 동안에도 due 시각은 DB에 남지만, 그 순간에 실행하는 상주 worker/cron은 없다. 대기 저장·복구가 실제 동작한다는 사실과 무인 정시 실행을 구분한다. 외부 발송은 blocked로 남기며 전달 성공을 만들지 않는다.

발행 버전의 실행 단계 스냅샷을 보존하는 것은 자체 설계다. 원본 공식 문서의 ‘기존 Wait는 유지하되 앞으로의 동작 편집을 따라갈 수 있음’과 완전히 같은 계약이 아니다.

### 접근 범위

기존 owner-private Sites audience를 유지한다. 게시 페이지·폼·원본 재생도 사용자 인증과 소유 범위를 따른다. ‘게시’는 현재 사용자 작업공간의 게시 경로를 뜻하며 익명 인터넷 공개와 동일하지 않다. 수강 진도는 owner가 고객별로 관리하며 수강생 독립 로그인은 없다.

## 0.4 확인한 검증과 남은 검증

- 실제 로컬 UI에서 사이트 생성→제목 수정→저장→게시를 확인했다.
- 게시된 폼을 실제 POST해 accepted=true·성공 메시지·응답 1건·CRM 고객 생성을 확인했다.
- 폼 응답 화면에서도 해당 1건의 CRM 연결 표시를 확인했다.
- 실제 청구 UI에서 10,000원 청구 생성→발행→4,000원 수동 수납→6,000원 잔액/부분 수납 상태를 확인했다. 이는 실제 카드/은행 결제가 아닌 수동 원장 처리다.
- 실제 자동화 UI에서 신규 초안(고객 등록 트리거+태그 추가)→v1 발행/활성→지금 실행→선택 고객→서버 실행 완료 기록을 확인했다.
- 제품 서버 통합 시험 4개가 통과했다: 게시 slug/본문의 초안 불변 및 인증·소유권, 폼→CRM→workflow 중복 실행 방지, 짧은 영속 대기 재개와 선택 수동 실행 재시도 멱등, 소유 영상의 정확한 Range/외부 소유 거절/SVG 거절.
- 자동화 내부 태그 연쇄 실행과 순환 제한 시험을 통과했다. engagement 7개 시험은 수신 동의·제외·개인화 스냅샷·수동 리뷰 집계·안전한 UI/CSV를 확인했다.
- **현재 0.4 통합 자동 시험 96개가 통과했다.** 최종 버전 bump 이후 생산 빌드·원격 배포·새 clone·E 복원 QA는 아직 완료로 기록하지 않는다. 각 최종 실행 결과가 나오면 영수증과 함께 갱신한다.

REA는 기존 공개 artifact의 정확한 9개 추가 모듈을 선택해 분석했다. 141개 미선택, semantic unknown 6,022개, partial graph다. 일부 seed no-match는 원문/기능 부재를 뜻하지 않는다. 공식 문서와 자체 테스트를 병행했으며 원본 로그인 후 서버·DB·외부 도구의 실행 동등성은 미검증이다. 자세한 Evidence와 파일 hash는 `rea-product-verification-0.4.md`를 따른다.

## 현재 남은 항목

실제 이메일/SMS·소셜·카드/은행/환불·AI·외부 리뷰·외부 캘린더 연결, 무인 상주 스케줄러, 익명 접수/외부 수강생 로그인, 다중 step 퍼널, 팀/사업장 권한, 원본의 고급 커스텀 오브젝트·상세 분석·SaaS 재판매는 미완료다. 외부 키나 계정·공급자 승인이 필요한 기능을 UI 성공 문구로 대체하지 않는다. 큰 상태·실행 이력/파일 quota와 orphan 정리, 클라우드 데이터·파일 동시점 복원도 운영 후속 범위다.

Node 24.22.1, `Start.cmd`/`npm start`, `LABEL_STUDIO_PORT`/`LABEL_STUDIO_DATA`, DB 온라인 snapshot과 원본 파일 별도 보관 방식은 유지한다. JSON 백업에는 업로드 원본 bytes가 들어 있지 않다. GitHub/Sites 양 원격과 E 보관 완료 여부는 각각 실제 결과로 확인한다.

---

# 0.3.0 과거 인계

현재 정본은 `web/`입니다. 0.2.x에 대한 아래 기록은 과거 검증 이력이며 현재 구현표는 이 절을 우선합니다.

| 기능 | 0.3 실제 동작 | 남은 범위 |
|---|---|---|
| 계정·저장 | Sites 소유자 인증, 앱 비밀번호 없는 진입, 계정별 D1·로컬 SQLite, CAS·중복 mutation 방지, 충돌 명시 해결 | 팀원·사업장별 역할과 공유 |
| 고객 | CRUD·검색·태그·상세·메모·보관/복원·병합, 연결 기록 보존 | 원본 모든 커스텀 오브젝트/스마트 목록 |
| CSV | 매핑·ID/email/phone·생성/수정·오류·미리보기 stale 방지·export | 원본 비동기 작업/로그·되돌리기와 동일성 |
| 영업 | 복수 파이프라인·사용자 단계·안전한 재정렬/rename·독립 결과 상태 | 원본 모든 고급 필드·권한 |
| 할 일 | 고객 연결·기한·완료/재개·보관/복원 | 알림 공급자와 백그라운드 스케줄러 |
| 일정 | 24시간 주간/목록·생성/수정/취소·겹침 차단 | Google/Outlook·공개예약·다중 수용량 |
| 미디어 | 실제 파일 원본 업로드·다운로드·삭제, 계정 소유권·용량 제한 | 폴더/변환·orphan 정리 |
| 자동화 | 수동 내부 명령·연결 할 일·실행 기록 | 트리거 자동실행·실제발송·지연재시도 |
| 기타 영역 | 대화 기록·청구장부·캠페인/사이트/강의 초안·리뷰 기록 | 실제 채널/결제/게시/AI/수강 실행 |

새 계정은 비어 있는 유효한 상태로 시작합니다. 기존 localStorage v1은 자동으로 클라우드에 덮어쓰지 않고 비교 후 명시적으로 옮깁니다. 오프라인 초안도 보존합니다. 파일 본문은 JSON 내보내기에 포함되지 않으므로 따로 내려받습니다.

## 0.3 검증

- core18 + domain19 + server6 + client7 = 50개 자동 시험 통과. 계정별 초안 격리와 저장 중 로그인 계정 변경 차단을 포함합니다. 실제 DB 재시작 보존, 2.3MB Unicode chunk roundtrip, 동시 같은 revision 한 승자, mutation 충돌, 소유권 격리, 파일 byte·용량 race 검증을 포함합니다.
- 실제 loopback API 서버 UI: 빈 DB에서 고객 생성→메모→할 일→완료→reload 유지. 예약 10:00–10:30 생성, 동일 시간 재예약 거부 메시지 확인.
- UI 담당 mock 통합: 16메뉴, 5종 CRUD→domain→PUT 저장, 24시간/자정 넘는 일정, 작업 보관·복원, 단계 ID 유지 확인. 실제 서비스 외부 연동 시험과 구분합니다.
- Vinext 생산 번들 빌드 통과. 최종 배포·clone/복원 결과는 별도 VERIFICATION-0.3.json과 Git/E 명세에 기록합니다.
- REA는 공개 원본 150개 전체 정적 분석 이력에 더해 CRM 관련 2개를 재선택했습니다. `/merge/`는 POST 후보 근거이며 server 계약 증명이 아닙니다. decoupling flag는 default-associations guard에서 확인했으므로 flag 이름만으로 단계/상태 분리를 증명하지 않습니다. 단계/상태 규칙은 공식 문서와 우리 실행 시험으로 검증합니다.

5분 단위·담당자/캘린더 수용량1은 우리 예약 정책입니다. 원본 모든 캘린더 규칙과 동일하다는 의미가 아닙니다. 원본 전체를 REA로 복원하거나 비공개 서버 코드를 분석했다고 보고하지 않습니다.

## 현재 복원

README와 SERVER.md를 따릅니다. 로컬 DB 온라인 snapshot은 `private/data-snapshots/`에 저장하고 E 체크포인트에 포함합니다. 파일 bytes는 `data/server/objects/`입니다. GitHub는 소스·고정 잠금·마이그레이션·실행/빌드/검증을 포함하며 비공개 데이터는 제외합니다. Cloudflare D1/R2는 기존 Sites 계정에 유지됩니다.

---

# 0.2.x 과거 기록

# 레벨 스튜디오 인계 · 0.2.0

기준일: 2026-10-26, Asia/Seoul. 잠정 제품명은 사용자가 지정한 레벨 스튜디오다. 원본 HighLevel은 별도의 유료 SaaS이며 이 프로젝트와 계정·결제가 연결되지 않는다.

## 0.2.0 화면 보정

사용자 지시에 따라 첫 진입을 공개 홈페이지로 바꾸고 기존 작업공간은 workspace.html로 유지했다. HighLevel 원본의 검은 배경·3줄 영문 제목·오른쪽 Reputation 제품 화면·히어로 그라데이션·5개 성장 단계 탭·하위 섹션 순서를 기준으로 보라색 UI를 만들었다. Poppins 로컬 폰트와 라이선스를 포함하며 원본 제품 그래픽은 독자 HTML/CSS/SVG로 그렸다. Imports는 원본의 192px 사이드바·42px 상단바·720px 카드·고정 하단 버튼으로 보정했고 영문 메뉴와 실제 연결된 도구 버튼을 추가했다.

실제 브라우저에서 1845×869·660×950을 원본과 대조했다. 모바일 제목 x20/y190·32/38.4px 및 높이140px, 데스크톱48/57.6px를 확인했다. 가로 넘침이 없고 메뉴·5개 탭·도움말·작업공간 진입·연결 상태 버튼이 작동했다. 세부 결과는 VERIFICATION-0.2.json, 원본 기준/미확인 경계는 ui-fidelity-spec.md를 따른다. 기존 0.1.0 복원·배포 기록은 아래에 이력으로 유지한다. 이 버전도 원본 전체 서버/계정/결제/AI의 동등성을 주장하지 않는다.

## 현재 결과

HighLevel의 주요 18개 영역을 설명한 기능 분석, 126개 세부 기능 목록, 자체 재구현 설계, 공개 클라이언트 식별자·권한·경로 인벤토리, 실행 가능한 한국어 작업공간이 있다. **126개 기능을 모두 구현한 상태가 아니다.**

현재 실행 앱에는 대시보드·고객·대화·캘린더·영업·청구·AI 스튜디오·AI 에이전트·마케팅·자동화·사이트·멤버십·미디어·평판·리포트·설정의 16개 업무 메뉴가 있다. 기능별 상태는 다음과 같다.

| 영역 | 실제 동작 | 남은 일 |
|---|---|---|
| 고객 | 생성·수정·검색·태그·선택·CSV 내보내기, ID/email/phone 매칭, 중복/충돌/오류 검토를 포함한 4단계 가져오기 | 커스텀 필드/오브젝트, 세밀한 스마트 목록, 비동기 대용량 작업 |
| 영업 | 카드 추가·수정·단계 선택/드래그 이동·금액 집계 | 복수 파이프라인, lost 사유, 이력과 권한 |
| 일정 | 일정과 담당 고객 기록, 날짜별 보기, 상태 변경 | 외부 캘린더/예약 링크/담당자 배정/동시 예약 잠금 |
| 대화 | 예시 대화 선택, 읽음 상태, 로컬 메시지 기록 | 실제 채널 수신·발신·배송 결과·수신 동의·첨부 |
| 자동화 | 태그/영업기회/할 일/이메일 시뮬레이션/대기 기록을 편집하고 수동 실행, 결과 기록 | 트리거 자동 실행, 지연 스케줄러, 분기, 재시도, 취소, 실제 발송 |
| 청구 | 초안/장부 기록과 로컬 결제 상태 | 실제 결제·환불·웹훅·세금·정기 구독 |
| 마케팅 | 캠페인 기획 초안 | 편집기·예약 발송·채널 공급자·분석 |
| 사이트·퍼널 | 이름·유형·상태 기획 기록 | 실제 페이지 편집/도메인/게시/폼 수집 |
| 멤버십 | 과정 기획 기록 | 콘텐츠 업로드·수강권·회원 인증·재생·진도 |
| 미디어 | 선택 파일의 이름/크기/유형 메타데이터 | 파일 본문 보관·다운로드·용량 정책 |
| 평판·리포트 | 로컬 리뷰 입력·평점과 저장 데이터 집계 | 외부 리뷰 요청·응답·실측 광고/통화 보고 |
| AI | 미연결 기능·준비 상태를 명시 | 공급자/비밀 키/예산/모델/도구/실행기·실제 AI |
| 설정·보관 | 사업장·시간대 표시, JSON 내보내기, 스키마 검증과 복원 확인 UI | 계정/서버 DB/멀티테넌트/자동 동기화 |

## 분석 증거와 한계

1. 첨부 두 화면에서 홈페이지와 Imports UI를 직접 읽었다. 유튜브 영상 재생바·발표자 얼굴은 제품 UI에서 제외했다.
2. 공식 도움말/API/요금 문서를 참조했다. 출처는 각 분석 항목에 붙어 있다.
3. REA로 로그인 페이지를 별도 임시 Chromium에서 열고 4초 대기 후 DOM/접근성/네트워크 메타데이터를 기록했다. Evidence `ev_a10f285764696d02e6b562051c233fcf99878a4d108264e5892b810e380345b4`.
4. 그 캡처에서 관찰된 공식 CDN 스크립트 URL 150개를 뒤에 다시 다운로드했다. 7,032,605 bytes다. 이는 최초 네트워크 응답 바이트와 동일하다고 보증할 수 없으며 각 사본의 크기/SHA-256을 manifest로 고정했다.
5. REA의 정적 분석은 150개 모두 파싱했고 구문 실패는 0개다. AST 노드 1,672,198개를 방문했다. parent Evidence `ev_5d84156706dcf0380db103874e0f1ba3ad8c2649eefb0a2f3c61b5e3e5982686`, source tree SHA-256 `77389684cc1a43dfd8640ab6f1b72b66cbe33ea755d4c0a1206ac208f15cd668`.
6. 정적 의미 그래프는 부분 분석이다. 동적 호출과 import, 계산된 속성, 노드/unknown 예산의 제한이 있으며 semantic unknown 17,840개가 남았다. 원격 마이크로 앱의 후속 파일 대부분은 이 150파일에 없다. 로그인 이후 전 기능·서버·DB·AI 프롬프트를 분석 완료한 것으로 해석하면 안 된다.
7. 사용자가 HighLevel 가입을 시도했으나 2단계에서 카드 등록과 14일 뒤 자동 청구가 표시되어 최종 제출은 진행하지 않았다. 약관 체크박스 미선택·가입 버튼 비활성화 상태를 확인했다. 실제 가입·구독 활성화·내부 로그인 관찰은 확인하지 않았다. 회사명/이메일 초기 입력만 요청에 따라 수행했고 성함/전화번호는 사용자가 직접 입력했다. 카드정보나 비밀번호를 읽거나 보관하지 않았다.

원본 JavaScript와 전체 REA graph는 `work/rea` 및 E 비공개 체크포인트 범위에만 보관한다. GitHub에는 독자 작성한 앱 코드와 분석 결과·해시 요약을 보관한다. `public-client-observations.md`의 API/권한/feature flag는 정적 후보이며 서버의 실제 계약이나 접근 가능성을 뜻하지 않는다.

추가 Imports 모듈 집중 분석에서는 별도 공개 entry와 14개 chunk, 7,086,036 bytes를 확보하고 무결성을 검증했다. 이 중 import/목록/파일 UI 핵심 3개(552,164 bytes)를 선택하여 REA로 정적 분석했다(40,059 AST 노드, 구문 실패0, parent Evidence ev_7089cdef58d32e5a9940a570060483a6e764ac81e815831f2953a15a1d843a5c). 선택하지 않은 12개와 동적 호출·서버 계약은 미확인이다. 파일 bytes 업로드→서버 step1 준비→응답 기반 keyMap→step2 작업 요청→비동기 로그·취소·되돌리기를 코드 근거로 정리했다. 원본과 첫 로컬 구현의 차이 및 한계는 `import-client-observations.md`를 따른다.

## 검증

- `npm test`: 핵심 시험 18개 통과. CSV 인용/줄바꿈/BOM·수식 안전 내보내기, 일괄 중복, 잘못된 식별자, 미리보기 이후 변경 충돌, 3,001행 처리, 자동화 원본 불변, 백업의 중첩 자료/참조 검증을 포함한다.
- `npm run check`: 브라우저 모듈·서버 구문 검사 통과.
- 브라우저 실제 조작: 가상 고객 추가→목록 반영→새로고침 후 유지 확인. CSV 3행을 읽고 자동 열 매핑→update1/create1/error1을 확인했다. 오류 행 제외 체크 전 적용 버튼이 비활성화이고 체크 후 정상 2행이 저장됨을 확인했다.
- 브라우저 실제 조작: 워크플로 3단계 수동 실행 후 실행 기록과 새로고침 유지 확인. 이메일은 simulated 상태였다. JSON 파일을 실제로 내려받아 같은 core.validateBackup으로 검사했다(가상 고객10/영업7/실행1).
- UI 담당의 별도 메모리 DOM 시험: 16개 메뉴 렌더와 고객/영업/일정/초안/리뷰/워크플로 저장 자료의 validateBackup roundtrip 통과. 이는 실제 서비스 연동 시험과 구분한다.
- 소스 8ceb776에서 새 GitHub clone의 npm ci·18개 시험·구문 검사·build가 통과했다. 별도 E 명세 348개 파일/228,036,056 bytes를 새 C 폴더에 복원하고 크기/SHA-256을 전부 대조했으며, 복원한 Node.js24.22.1로 18개 시험을 재통과했다. 복원본의 HTTP 홈/분석 페이지200, .env/경로 우회403을 확인했다. build가 검증 영수증의 시각을 갱신하는 것은 코드 변경과 구분한다.
- 소유자 전용 Sites 배포가 성공했다: https://rigoon-label-studio.brown-rigoon.chatgpt.site . 해당 8ceb776 배포는 OpenAI 계정 선택 화면까지 확인했고 인증 후 운영 화면은 관찰하지 않았다. 로컬과 복원본 UI를 확인한 것과 구분한다. 구체 결과는 `docs/VERIFICATION.json`, 최신 소스·분석 원본의 보관 범위는 E의 최신 `manifest.json`을 따른다.

## 저장·복원

기준 저장소는 `https://github.com/brownrigoon-commits/rigoon-label-studio`(private)다. GitHub 이외 사이트 배포 소스 원격은 `.openai/hosting.json`에 연결된 소유자 전용 Sites의 저장소다. Sites와 GitHub 두 원격은 별개이며 같은 소스 commit을 push해 관리한다.

Node.js 24.22.1 x64와 잠금 파일만 있으면 소스 clone에서 실행할 수 있다. C 원본과 실행 환경을 유지하고 E에는 source/runtime/node.exe까지 함께 보관한다. E의 `레벨 스튜디오/.objects/sha256`와 `checkpoints`는 함께 옮겨야 한다. `scripts/restore.py`로 새 빈 폴더에 복원하면 파일별 크기/SHA를 다시 검증한다. 파일은 독립 복사되므로 복원된 C 파일을 수정해도 E 하드링크 객체를 수정하지 않는다.

앱의 실제 브라우저 데이터는 소스와 별개다. 설정에서 JSON을 내려받아 E 비공개 데이터 영역에 저장한 뒤 다른 PC에서 가져온다. 이 작업 중 사용한 QA 데이터는 가상 예시이며 공개 서비스에 전송하지 않았다. 자동 상주 백업·예약 서비스는 설치하지 않았다.

## 다음 구현의 순서

`reconstruction-spec.md`의 P0부터 따른다. 우선 계정/워크스페이스·서버 권한·지속 DB·감사·백업을 구축하고, 고객/가져오기·영업·예약 계약을 확정한다. 다음으로 채널 어댑터/Outbox·웹훅을 연결한 뒤 버전이 고정된 자동화 실행기를 붙인다. 사이트 편집기와 멤버십·결제·AI를 각각 독립 인수 기준으로 확장한다. 공급자 계정/키/결제 범위는 사용자 선택과 별도 실제 연동 검증이 필요하다.
