{
  "id": "2d0cf7f3-15c7-4989-bcc8-e80b74841e3a",
  "slug": "ref/khub/bizactioner-omni-shot-앞문-개통-task-devlog-2026-08-10-a-42",
  "doc_type": "ref",
  "title": "📋 omni_shot 앞문 개통 — Task DevLog (2026-08-10 A-42)",
  "title_en": null,
  "one_liner": "# 📋 omni_shot 앞문 개통 — Task DevLog > 세션 A-42 (2026-08-10) · Content Launcher > ⚠️ **출처는 `bizspring-inc/content-launcher`의 `BUILD_LOG.md` SLDR~DATU 6항목이다.** > ",
  "summary_bullets": [],
  "body_md": "# 📋 omni_shot 앞문 개통 — Task DevLog\n\n> 세션 A-42 (2026-08-10) · Content Launcher\n> ⚠️ **출처는 `bizspring-inc/content-launcher`의 `BUILD_LOG.md` SLDR~DATU 6항목이다.**\n>    거기에 PGE 전 과정과 실측 수치가 이미 있으므로 **여기서 다시 서술하지 않는다.**\n>    이 문서는 **「왜 그 순서로 갔는가」와 「어디서 판단이 갈렸는가」**만 남긴다.\n\n---\n\n## 📋 설계 (G1)\n\n### 진입 시점의 문제 제기 (PO)\n> 「다중 턴 대응? 이게 뭐고 왜 이런 복잡한 기능을 구현하려는지…\n>  소상공인이 동영상에 목숨걸어라 이것도 아님. 너무 과하게 간건지 확인후\n>  **지금 구현된 기능이 작동하도록 함을 최우선**으로.」\n\n이 판단이 세션 전체의 방향을 정했다. 그래서:\n\n- **동결**: 프롬프트 최적화 스윕 · `stitch` 20초 · 품질 채점 고도화 · 다중 턴 관련 일체\n  (사유: 목적(경험 제공) 대비 과잉 + 편당 과금 + RFP 필수 요건 아님)\n- **완료 기준 고정**: 「사장님이 사진을 고르고 누르면 2분 내 10초 영상 1편이 담긴다.\n  실패하면 한글 사유가 뜬다」 — 이 이상 안 간다\n- **다중 턴 편집**: 이미 죽은 기능(엔진이 영상에서 `previous_interaction_id` 거부, A-40 실측).\n  남은 일은 **제안서 문구 정합 하나뿐**이고 그건 [C] 영역이라 PO 판단 대기\n\n### 라운드 설계 (비용순으로 갈랐다)\n| 라운드 | 무엇을 보는가 | 크레딧 | 반복 가치 |\n|---|---|---|---|\n| A | preflight · 여정 스윕 · 잔존 · 표 · 정리 | **0** | ◎ **3회** |\n| B | 0단 실엔진 회귀 | 소액 | 1회 |\n| C | omni 앞문 실제 생성 | **$1.02** | 1회 |\n\n🔴 **「여러 번 돌린다」가 값을 하는 층은 무과금 층뿐이다.** 유료 층은 반복해도\n같은 경로를 같은 값으로 다시 사는 것이라 정보가 안 늘고 돈만 나간다.\n\n---\n\n## 🔧 실행 (G2) — 판단이 갈린 지점만\n\n### ① 라운드 A를 3회 돌린 것이 판정을 갈랐다\n1회만 돌렸으면 **②를 「정상」, ⑤-0b를 「결함」으로 정반대로** 적었을 것이다.\n\n| 항목 | A1 | A2 | A3 | B | 판정 |\n|---|---|---|---|---|---|\n| ③-2 | ❌ | ❌ | ❌ | ❌ | 결정적 |\n| ④-b | ❌ | ❌ | ❌ | ❌ | 결정적(폐기된 동작) |\n| ② | ✅ | ✅ | ✅ | ❌ | **우연 통과** |\n| ⑤-0b | ✅ | ❌ | ✅ | ✅ | 간헐 |\n\n### ② 라운드 B에서 멈추고 «고치지 않은» 판단\n0단이 셀렉터에서 죽어 엔진에 닿지 못했다. 진입 좌표를 갈아 끼우면 될 것 같았지만,\n④~⑦가 A-37에서 `DetailRenewRunner`로 **화면째 갈라져 나간 것**을 확인하고 **손대지 않았다.**\n\n> 재지 않고 짐작해 고치면 **통과하는데 아무것도 안 보는 0단**이 되고, 그게 지금보다 나쁘다.\n\n대신 머리말에 라이브 실측 좌표를 못박고 **재작성을 별도 승인 대기**로 남겼다.\n\n### ③ 라운드 C에서 «돈을 쓰기 전에» 결함을 찾았다\n앞문을 실제로 눌러 보니 omni 폼이 아니라 **TopView 발화영상 폼**이었다.\n→ 여기서 멈추고 원인(`LIVE_KINDS` 누락)을 잡았다. **크레딧 0으로 최대 결함을 찾은 자리.**\n\n### ④ ③-2를 파다가 «진짜 뿌리»가 다른 데 있었다\n`OPTS`(낙관 항목 보존)는 옳은 방어이지만, 근본은 **적재 51.9MB**였다.\n이관 직후 라이브(**OPTS 미배포 상태**)에서 게이트 ③-2가 **통과**한 것이 그 증거다.\n\n> 증상을 막는 것과 원인을 없애는 것은 다르다. **둘 다 했다.**\n\n### ⑤ PO 지시로 방향이 두 번 바뀐 것\n- 「과하게 간 건지 확인 후 **작동 최우선**」 → 품질 고도화 동결\n- 「남은거 클로드 판단하에 진행」 → **「사장님에게 닿는 것 먼저, 검사망은 나중」**으로\n  우선순위를 잡았고, 그 결과 통짜 데이터에서 오늘의 가장 큰 것이 나왔다\n\n---\n\n## 🔍 검증 (G3)\n\n- **화면으로 판정했다.** 번들 해시가 Publish 전후로 같았으나 화면은 바뀌어 있었다\n  (엔트리는 두고 갈린 청크만 교체). **「해시 그대로 = 미배포」로 판정할 뻔했다.**\n- **사장님 경로 그대로** 눌러 확인했다(앞 화면 → 카드 → 만들기). `?kind=`만 주는 계측은\n  상품이 안 골라져 **없는 결함**을 만들 뻔했다.\n- 실물 mp4를 내려받아 규격을 쟀다(ffprobe: 720×1280 · 10.005초 · h264+aac).\n- 전량 vitest가 환경 시간 제한에 걸려 **`--shard=1..4/4`로 나눠** 네 샤드 모두 exit 0을 확인했다.\n  **부분 결과로 「통과」라 적지 않기 위해서다.**\n\n---\n\n## 이 트랙에서 «하지 않기로» 한 것\n\n- 프롬프트 2종 비교 스윕 / `stitch` 20초 / 품질 채점 고도화 / 다중 턴 일체\n  → 수주 후 운영 단계에서 필요가 실증되면 그때 트랙 발의\n- 0단 재작성 → 현행 화면을 다시 재고 나서\n- 백업표 삭제 → 이관 검증이 더 쌓인 뒤 PO 판단\n",
  "related_slugs": [],
  "faq": [],
  "jsonld": null,
  "keywords": [],
  "source_id": "35d9f625-128d-4e58-805f-6a6d2eb102f6",
  "video_url": null,
  "duration_sec": null,
  "thumbnail_url": null,
  "image_url": null,
  "caption": null,
  "solution_slug": null,
  "captured_at": null,
  "width": null,
  "height": null,
  "created_at": "2026-08-24T11:53:44.5731+00:00",
  "updated_at": "2026-08-24T11:53:44.5731+00:00",
  "visibility": "public",
  "source_stage": "1",
  "anonymized": true,
  "source_key": "legacy-khub",
  "origin": "ingest",
  "locked": false,
  "locked_by": null,
  "locked_at": null,
  "gate_state": {
    "g1": {
      "hits": [],
      "pass": true
    },
    "g2": {
      "pass": true,
      "total": 64,
      "issues": [
        "핵심 요약 불릿이 3개 미만입니다",
        "Q&A 쌍이 3개 미만입니다"
      ],
      "applies": true
    },
    "g3": {
      "pass": true,
      "required": false
    },
    "stage": "1",
    "decided_at": "2026-08-24T11:53:44.334Z"
  },
  "raw_id": "211f36d2-c77f-4d76-9493-ba94b0b8fac3",
  "search_text": "📋 omni_shot 앞문 개통 — Task DevLog (2026-08-10 A-42)  # 📋 omni_shot 앞문 개통 — Task DevLog > 세션 A-42 (2026-08-10) · Content Launcher > ⚠️ **출처는 `bizspring-inc/content-launcher`의 `BUILD_LOG.md` SLDR~DATU 6항목이다.** >   # 📋 omni_shot 앞문 개통 — Task DevLog\n\n> 세션 A-42 (2026-08-10) · Content Launcher\n> ⚠️ **출처는 `bizspring-inc/content-launcher`의 `BUILD_LOG.md` SLDR~DATU 6항목이다.**\n>    거기에 PGE 전 과정과 실측 수치가 이미 있으므로 **여기서 다시 서술하지 않는다.**\n>    이 문서는 **「왜 그 순서로 갔는가」와 「어디서 판단이 갈렸는가」**만 남긴다.\n\n---\n\n## 📋 설계 (G1)\n\n### 진입 시점의 문제 제기 (PO)\n> 「다중 턴 대응? 이게 뭐고 왜 이런 복잡한 기능을 구현하려는지…\n>  소상공인이 동영상에 목숨걸어라 이것도 아님. 너무 과하게 간건지 확인후\n>  **지금 구현된 기능이 작동하도록 함을 최우선**으로.」\n\n이 판단이 세션 전체의 방향을 정했다. 그래서:\n\n- **동결**: 프롬프트 최적화 스윕 · `stitch` 20초 · 품질 채점 고도화 · 다중 턴 관련 일체\n  (사유: 목적(경험 제공) 대비 과잉 + 편당 과금 + RFP 필수 요건 아님)\n- **완료 기준 고정**: 「사장님이 사진을 고르고 누르면 2분 내 10초 영상 1편이 담긴다.\n  실패하면 한글 사유가 뜬다」 — 이 이상 안 간다\n- **다중 턴 편집**: 이미 죽은 기능(엔진이 영상에서 `previous_interaction_id` 거부, A-40 실측).\n  남은 일은 **제안서 문구 정합 하나뿐**이고 그건 [C] 영역이라 PO 판단 대기\n\n### 라운드 설계 (비용순으로 갈랐다)\n| 라운드 | 무엇을 보는가 | 크레딧 | 반복 가치 |\n|---|---|---|---|\n| A | preflight · 여정 스윕 · 잔존 · 표 · 정리 | **0** | ◎ **3회** |\n| B | 0단 실엔진 회귀 | 소액 | 1회 |\n| C | omni 앞문 실제 생성 | **$1.02** | 1회 |\n\n🔴 **「여러 번 돌린다」가 값을 하는 층은 무과금 층뿐이다.** 유료 층은 반복해도\n같은 경로를 같은 값으로 다시 사는 것이라 정보가 안 늘고 돈만 나간다.\n\n---\n\n## 🔧 실행 (G2) — 판단이 갈린 지점만\n\n### ① 라운드 A를 3회 돌린 것이 판정을 갈랐다\n1회만 돌렸으면 **②를 「정상」, ⑤-0b를 「결함」으로 정반대로** 적었을 것이다.\n\n| 항목 | A1 | A2 | A3 | B | 판정 |\n|---|---|---|---|---|---|\n| ③-2 | ❌ | ❌ | ❌ | ❌ | 결정적 |\n| ④-b | ❌ | ❌ | ❌ | ❌ | 결정적(폐기된 동작) |\n| ② | ✅ | ✅ | ✅ | ❌ | **우연 통과** |\n| ⑤-0b | ✅ | ❌ | ✅ | ✅ | 간헐 |\n\n### ② 라운드 B에서 멈추고 «고치지 않은» 판단\n0단이 셀렉터에서 죽어 엔진에 닿지 못했다. 진입 좌표를 갈아 끼우면 될 것 같았지만,\n④~⑦가 A-37에서 `DetailRenewRunner`로 **화면째 갈라져 나간 것**을 확인하고 **손대지 않았다.**\n\n> 재지 않고 짐작해 고치면 **통과하는데 아무것도 안 보는 0단**이 되고, 그게 지금보다 나쁘다.\n\n대신 머리말에 라이브 실측 좌표를 못박고 **재작성을 별도 승인 대기**로 남겼다.\n\n### ③ 라운드 C에서 «돈을 쓰기 전에» 결함을 찾았다\n앞문을 실제로 눌러 보니 omni 폼이 아니라 **TopView 발화영상 폼**이었다.\n→ 여기서 멈추고 원인(`LIVE_KINDS` 누락)을 잡았다. **크레딧 0으로 최대 결함을 찾은 자리.**\n\n### ④ ③-2를 파다가 «진짜 뿌리»가 다른 데 있었다\n`OPTS`(낙관 항목 보존)는 옳은 방어이지만, 근본은 **적재 51.9MB**였다.\n이관 직후 라이브(**OPTS 미배포 상태**)에서 게이트 ③-2가 **통과**한 것이 그 증거다.\n\n> 증상을 막는 것과 원인을 없애는 것은 다르다. **둘 다 했다.**\n\n### ⑤ PO 지시로 방향이 두 번 바뀐 것\n- 「과하게 간 건지 확인 후 **작동 최우선**」 → 품질 고도화 동결\n- 「남은거 클로드 판단하에 진행」 → **「사장님에게 닿는 것 먼저, 검사망은 나중」**으로\n  우선순위를 잡았고, 그 결과 통짜 데이터에서 오늘의 가장 큰 것이 나왔다\n\n---\n\n## 🔍 검증 (G3)\n\n- **화면으로 판정했다.** 번들 해시가 Publish 전후로 같았으나 화면은 바뀌어 있었다\n  (엔트리는 두고 갈린 청크만 교체). **「해시 그대로 = 미배포」로 판정할 뻔했다.**\n- **사장님 경로 그대로** 눌러 확인했다(앞 화면 → 카드 → 만들기). `?kind=`만 주는 계측은\n  상품이 안 골라져 **없는 결함**을 만들 뻔했다.\n- 실물 mp4를 내려받아 규격을 쟀다(ffprobe: 720×1280 · 10.005초 · h264+aac).\n- 전량 vitest가 환경 시간 제한에 걸려 **`--shard=1..4/4`로 나눠** 네 샤드 모두 exit 0을 확인했다.\n  **부분 결과로 「통과」라 적지 않기 위해서다.**\n\n---\n\n## 이 트랙에서 «하지 않기로» 한 것\n\n- 프롬프트 2종 비교 스윕 / `stitch` 20초 / 품질 채점 고도화 / 다중 턴 일체\n  → 수주 후 운영 단계에서 필요가 실증되면 그때 트랙 발의\n- 0단 재작성 → 현행 화면을 다시 재고 나서\n- 백업표 삭제 → 이관 검증이 더 쌓인 뒤 PO 판단\n",
  "embedding": null,
  "embedded_at": null,
  "embedding_hash": null,
  "backlinks": [],
  "html_url": "https://bizspring.ai/kb/ref/khub/bizactioner-omni-shot-앞문-개통-task-devlog-2026-08-10-a-42",
  "markdown_url": "https://bizspring.ai/kb/ref/khub/bizactioner-omni-shot-앞문-개통-task-devlog-2026-08-10-a-42.md"
}