---
title: "📅 2026-06-11 (목) 작업일지 — SQL 등록대장 정정·30런 전수감사·충전식 잔여·mock E2E·보안 F1~F6·모델단가 자동동기화·스튜디오 라이브"
category: "devlog"
document_type: "개발일지"
source_status: "generated"
knowledge_group: "03_history"
priority: "High"
purpose: "2026-06-11 개발일지(갭 복원). SQL 등록대장 정정(W10 적용완료·W3 UNIT7 누락→재적용)과 CC 직접실행 전환, 충전식 30런 DB 전수감사, 충전식 잔여분 완성(#81), mock E2E 15/15와 지갑 RPC 42702 수정(#82), 토글 정렬 근본수정·전역 2px·스튜디오 라이브 커밋푸시 워커(#83), 보안 전수감사 F1~F6 보강(#84), 모델단가 완전자동 동기화(#85)를 시간 흐름으로 기록."
read_when: ["개발일지","갭복원","최신상태복구","2026-06","충전식","보안","SQL","모델단가","스튜디오"]
updated: "2026-06-11"
work_timestamp: "20260611_170500"
context: "달록본레포CC (D:\\dallog\\dallog_git) — 작업일지 갭 복원. 근거: git log·KB 작업보고·핸드오프."
source_of_truth: "https://dallog-tools.hansbridge.co.kr/knowledge/"
---

> **이 문서가 무엇인가 (비개발자용 한 줄 설명)**
> 2026년 6월 11일 하루 동안 달록 개발에서 일어난 일을 아침부터 저녁까지 시간 순서대로 복원한 "그날의 일기"다. 크게 보면 ① SQL 작업 기록이 실제와 어긋난 것을 바로잡고 앞으로는 CC가 직접 DB에 실행·검증하기로 전환했고, ② 돈(충전식 결제) 관련 코드를 데이터베이스 실물과 대조해 전수감사한 뒤 남은 기능을 완성했으며, ③ 자동 시험(E2E=전구간 자동시험)을 돌리다 실제 DB 버그를 잡아 고쳤고, ④ 보안 구멍 6개를 막고, ⑤ AI 모델 단가가 바뀌면 자동으로 따라잡는 시스템을 만들고, ⑥ 디자인 편집기(스튜디오)에서 버튼 한 번으로 실서비스에 반영되도록 했다.

---

## 0. 하루 개요

이 날은 "기록과 실물의 불일치를 바로잡는 날"로 시작해, 충전식 결제 시스템 마무리 → 자동 시험 → 보안 → 자동화 → 라이브 배선까지 한 흐름으로 이어졌다. 핵심 교훈은 하나다 — **수동으로 SQL을 적용하면 "조용한 실패(silent failure)"가 생긴다**. 적용했다고 믿었던 마이그레이션(DB 구조 변경 스크립트) 한 건이 실제로는 빠져 있었고, 이를 계기로 SQL은 CC가 직접 실행·검증하는 방식으로 전환했다.

| 시각 | 커밋 | 무엇을 했나 |
|---|---|---|
| 11:25 | `f4de713` | SQL 등록대장 정정 — W10 2런 적용완료 확인 + W3 UNIT7 누락 발견·재적용 이력 + CC 직접실행 전환 기록 |
| 13:25 | `559de4f` | 충전식 30런 DB 전수감사 스크립트 (94항목 산출물 실재 검증, 재실행 가능) |
| 14:35 | `d10bad9` (#81) | 충전식 잔여분 — 온보딩 부스트 배선·계좌 1원인증(mock)·어드민 분리표시/통화정정·사이드바 잔액·UI 정렬 |
| 14:45 | `00decb3` (#82) | 충전식 mock E2E 15/15 + 지갑 RPC 42702 수정 + Codex fix 마이그레이션 + 등록대장 64런 동기화 |
| 15:06 | `205f303` | test — 변경없음 검증 |
| 15:15 | `906889a` (#83) | 토글 정렬 근본수정·전역 모서리 2px·스튜디오 신토큰 + 라이브 1클릭 커밋푸시 워커 |
| 15:43 | `56bf1ba` (#84) | 보안 보강 — 1번 전수감사 적출 F1~F6 + DB현황 스냅샷 |
| 16:32 | `44ae930` (#85) | 모델단가 완전자동 동기화 시스템 (F4) |

> 같은 날 스레드 종합 정리도 별도로 발행됐다 — 스레드 종합 closeout은 **작업보고 #101**, 작업 프롬프트 템플릿 다이어트는 **#102**, CF(Cloudflare) "Block AI bots" 엣지 차단으로 외부 LLM의 KB 열람 포기 의사결정은 **#103**.

---

## 1. 오전 — SQL 등록대장 정정과 CC 직접실행 전환 (11:25 `f4de713`)

### 무엇을
SQL 작업 등록대장(어떤 SQL 런(run, 실행 단위)을 언제 적용했는지 추적하는 대장)을 실제 DB 상태와 대조해 정정했다.

### 왜 / 문제
- **W10 2런**은 실제로 적용 완료 상태인데 대장에 미반영이었다 → "적용완료"로 정정.
- **W3 UNIT7**은 대장상 적용된 것처럼 보였으나 **실제 DB에는 빠져 있었다(누락)** → 재적용.

이것이 핵심 사건이다. "적용했다"는 기록과 실제 DB가 어긋나 있었던 것이다. 수동으로 SQL Editor에 복붙·실행하는 방식은 사람이 한 단계를 건너뛰거나 일부만 실행해도 아무 경고 없이 넘어가는 **조용한 실패** 위험을 안고 있다(W3 UNIT7 42P13 교훈).

### 원인
수동 적용 워크플로 자체의 구조적 취약점. 복붙 단계가 사람 손에 의존하는 한 누락 검출이 불가능했다.

### 해결
- 등록대장에 W10 적용완료 + W3 UNIT7 누락·재적용 이력을 명시.
- **SQL은 앞으로 CC가 직접 실행·검증**하는 방식으로 전환 기록 (MCP 또는 Management API 폴백). 복붙 가이드 종료.
- 검증을 주석 풀어 한 줄씩 실행시키는 노가다 강요 금지 — 검증은 CC 책임.

### 결과
SQL 신뢰 체계가 "사람이 복붙하고 믿는다"에서 "CC가 직접 실행하고 결과를 확인한다"로 바뀌었다. 관련 영구 참조 — [[reference_supabase_direct_sql]], [[feedback_sql_verify_no_drudgery]].

---

## 2. 이른 오후 — 충전식 30런 DB 전수감사 (13:25 `559de4f`)

### 무엇을
충전식(선수금 충전 결제) 시스템과 관련해 누적된 **30개 SQL 런 + 94개 산출물 항목**이 실제 DB에 제대로 존재하는지 전수 검증하는 **재실행 가능 감사 스크립트**를 작성했다.

### 왜
오전의 W3 UNIT7 누락 사건이 보여준 대로, "적용했다고 믿는 것"과 "실제 DB"는 다를 수 있다. 충전식은 돈을 다루는 영역이라 불일치가 곧 금전 사고로 이어진다. 따라서 산출물(테이블·컬럼·함수·RPC·정책 등)이 실재하는지 한 번에 점검하는 안전망이 필요했다.

### 결과
94항목 산출물의 실재 여부를 한 번에 검증하는 스크립트 확보. 일회성이 아니라 **재실행 가능**해서, 이후 변경 후에도 같은 스크립트로 재감사할 수 있다. 이 감사가 다음 단계(#82)의 42702 실DB 버그 적출로 이어졌다.

---

## 3. 오후 — 충전식 잔여분 완성 (14:35 `d10bad9` · PR #81)

### 무엇을
충전식 결제 시스템의 남은 기능들을 완성했다.

| 항목 | 내용 |
|---|---|
| 온보딩 부스트 배선 | 신규 가입 시 제공되는 부스트(초기 지급분)를 실제 동작하도록 연결 |
| 계좌 1원인증 (mock) | 계좌 본인확인용 1원 입금 인증 — 외부 PG 미연동이라 mock(모의 구현)으로 끝까지 빌드 |
| 어드민 분리표시 / 통화정정 | 운영자 화면에서 항목 분리 표시 + 통화(KRW) 표기 정정 |
| 사이드바 잔액 | 사이드바에 현재 충전 잔액 표시 |
| UI 정렬 | 관련 화면 정렬 정리 |

### 왜
외부 PG(결제대행) 연동은 아직이지만, 외부 의존을 핑계로 페이즈를 미루지 않는다는 원칙에 따라 **mock으로 전 구간을 완성형으로 빌드**했다. 1원인증도 실제 PG 대신 모의로 흐름을 닫았다.

### 결과
충전식 시스템이 기능 측면에서 완성형에 도달. 상세는 **작업보고 #104(PR #81)** 로 연결.

---

## 4. 오후 — mock E2E 15/15 + 지갑 RPC 42702 실DB 버그 수정 (14:45 `00decb3` · PR #82)

### 무엇을
충전식 전 구간을 자동으로 시험하는 **mock E2E(전구간 자동시험) 15케이스를 전부 통과(15/15)** 시키고, 그 과정에서 적출된 지갑 RPC의 **42702(PostgreSQL 컬럼 모호 오류)** 를 수정했다.

### 문제 / 원인
- `42702`는 PostgreSQL에서 **컬럼 이름이 모호할 때** 나는 오류다. 쿼리 안에서 같은 이름이 여러 곳(테이블 컬럼 vs 함수 파라미터·변수)에 존재해 DB가 어느 쪽인지 판단하지 못한 것이다.
- 이건 코드 리뷰만으로는 잘 안 잡히는 **실제 DB 실행 시점 버그**였고, E2E 자동시험이 직접 RPC를 호출하면서 비로소 적출됐다.

### 해결
- 지갑 RPC의 모호 참조를 명시적으로 한정(테이블 별칭·파라미터 prefix 등)해 42702 해소.
- Codex 검수에서 나온 fix 마이그레이션 동반 적용.
- SQL 등록대장을 **64런 기준으로 동기화**.

### 결과
- E2E 15/15 그린. 충전식 핵심 흐름이 자동시험으로 보호됨.
- 실DB 버그 1건 제거. **자동시험이 코드↔실DB 불일치를 잡는다**는 사실이 실증됐다.
- 상세는 **작업보고 #105(PR #82)** 로 연결.

> 직후 `205f303` (15:06, test)는 위 변경 이후 추가 변경이 없음을 확인하는 검증 커밋이다.

---

## 5. 오후 — 토글 정렬 근본수정 · 전역 2px · 스튜디오 라이브 워커 (15:15 `906889a` · PR #83)

### 무엇을
세 가지 UI·인프라 작업을 묶었다.

| 항목 | 내용 |
|---|---|
| 토글 정렬 근본수정 | 토글 스위치 정렬이 어긋나던 문제를 임시방편이 아니라 근본 원인부터 수정 |
| 전역 모서리 2px | 앱 전역의 모서리 둥글기(border-radius)를 2px로 통일 |
| 스튜디오 신토큰 + 라이브 1클릭 커밋푸시 워커 | /studio 편집기에 새 디자인 토큰을 추가하고, 버튼 한 번으로 변경을 실서비스에 커밋·푸시하는 워커(Cloudflare Worker) 배선 |

### 왜 / 결과
- 토글 정렬은 페이지마다 손보는 대증요법을 피하고 공통 원인을 고쳐 재발을 막았다.
- 모서리 2px 전역 통일은 디자인 시스템 일관성 확보.
- **스튜디오 라이브 워커**가 핵심이다 — 마스터가 /studio에서 디자인 토큰을 바꾸면 버튼 하나로 `studio-overrides.css`만 커밋·푸시되어 라이브에 반영된다. 워커는 dallog 한정 fine-grained 토큰을 쓰며 무제한·Revoke(취소) 가능. 디자인 변경 사이클이 "코드 수정 → PR → 머지"에서 "스튜디오에서 1클릭"으로 단축됐다.
- 상세는 **작업보고 #106(PR #83)**. 영구 참조 — [[reference_studio_publish_worker]].

---

## 6. 오후 — 보안 전수감사 보강 F1~F6 (15:43 `56bf1ba` · PR #84)

### 무엇을
앞선 1번 전수감사(2번 섹션의 흐름)에서 적출한 보안 취약점 6건(F1~F6)을 보강하고 DB 현황 스냅샷을 남겼다.

| 코드 | 내용 |
|---|---|
| **F1** | **자가충전 차단** — `coach_wallet_charge`의 anon(비로그인 익명 권한) 실행 권한 회수. 익명 호출로 스스로 잔액을 충전하던 구멍을 막음 |
| F2~F6 | 전수감사에서 적출된 나머지 권한·정책·노출 관련 보강 |

### 왜 / 문제
충전식은 돈을 다루므로 권한 설계 실수가 곧 금전 손실이다. 특히 F1은 비로그인 상태에서도 충전 함수를 호출할 수 있어 **자기 잔액을 임의로 늘릴 수 있는** 심각한 구멍이었다.

### 결과
F1~F6 보강 완료 + DB 현황 스냅샷 기록. 충전식의 권한·정책 표면이 정리됐다. 상세는 **작업보고 #107(PR #84)**.

---

## 7. 늦은 오후 — 모델단가 완전자동 동기화 시스템 (16:32 `44ae930` · PR #85, F4)

### 무엇을
코치 AI가 쓰는 **모델 단가(coach_price_table)** 가 바뀌면 자동으로 따라잡는 동기화 시스템을 구축했다.

### 왜 / 문제
coach_price_table의 단가가 전부 placeholder(임시값) 상태였고, 단가는 공급사 사정으로 수시로 바뀐다. 사람이 매번 손으로 갱신하면 누락·오기 위험이 크고, 원가 계산이 틀어지면 과금 모델 전체가 흔들린다.

### 해결 / 결과
- 단가를 자동으로 캐치(catch)해 적용하는 시스템 마련. 단가 변경은 기존 행을 덮어쓰지 않고 **새 `price_version` 행을 추가**하는 원칙을 따른다(이력 보존).
- 사람 개입 없이 단가 최신화가 유지되도록 자동화. 상세는 **작업보고 #108(PR #85)**. 영구 참조 — [[project_auto_cost_catch_system]].

---

## 8. 이 날의 의미 (정리)

- **신뢰의 전환** — SQL을 "복붙하고 믿는다"에서 "CC가 직접 실행·검증한다"로 바꿨다. W3 UNIT7 조용한 실패가 트리거였다.
- **돈 영역의 안전망** — 30런 전수감사 → mock E2E 15/15 → 42702 실DB 버그 적출·수정 → F1~F6 보안 보강으로, 충전식의 코드·DB·권한을 다층으로 검증했다.
- **자동화** — 모델단가 자동 동기화와 스튜디오 라이브 1클릭으로 사람 손이 닿던 두 지점(단가 갱신·디자인 반영)을 자동화했다.

---

## 관련 페이지

- 작업보고 #101 — 이 스레드 종합 closeout (같은 날 발행)
- 작업보고 #102 — 작업 프롬프트 템플릿 다이어트 (같은 날 발행)
- 작업보고 #103 — CF "Block AI bots" 엣지차단·외부 LLM KB 열람 포기 의사결정 (같은 날 발행)
- 작업보고 #104 — 충전식 잔여분 완성 (PR #81)
- 작업보고 #105 — mock E2E 15/15 + 지갑 RPC 42702 수정 (PR #82)
- 작업보고 #106 — 토글 정렬·전역 2px·스튜디오 라이브 워커 (PR #83)
- 작업보고 #107 — 보안 보강 F1~F6 (PR #84)
- 작업보고 #108 — 모델단가 완전자동 동기화 (PR #85)
- 핸드오프 #35 — 충전식 잔여 완성·E2E·보안 전수감사·모델단가 자동동기화·스튜디오 라이브
- 참조 — [[reference_supabase_direct_sql]] · [[feedback_sql_verify_no_drudgery]] · [[reference_studio_publish_worker]] · [[project_auto_cost_catch_system]]

---

## 작업 리드타임

| 구분 | 시각 |
|---|---|
| 시작 | 2026-06-11 11:25 (KST, `f4de713` 기준) |
| 완료 | 2026-06-11 16:32 (KST, `44ae930` 기준) |
| 경과 | 약 5시간 7분 (커밋 기준 구간) |

---
