Skip to content

fix(magazines): MAGAZINE_STATUSES — 'generating' 누락 복원 (#373)#601

Merged
thxforall merged 4 commits into
mainfrom
fix/373-magazine-statuses-generating
May 28, 2026
Merged

fix(magazines): MAGAZINE_STATUSES — 'generating' 누락 복원 (#373)#601
thxforall merged 4 commits into
mainfrom
fix/373-magazine-statuses-generating

Conversation

@thxforall
Copy link
Copy Markdown
Contributor

Summary

  • DB constraint post_magazines_status_check'generating' 포함 5-state (draft|pending|generating|published|rejected) 인데 TS MAGAZINE_STATUSES 는 4-state. 1주일+ 잠재한 schema drift.
  • fix(ci): #373 drift gate — pgvector, pipefail, comment path #595 drift gate fix 가 처음 정상 작동하며 발견 (1주일간 false-positive green 만 보고).
  • packages/web/lib/api/admin/magazines.tsMAGAZINE_STATUSES'generating' 추가.

발생 경위

migration 변경
20260430120000_extend_post_magazines_status_check.sql 'generating' 추가 (api-server generate handler 초기 INSERT 상태)
20260430150000_post_magazines_status_4state.sql 4-state 로 축소 (TS 와 동기화)
20260504133842_post_magazines_status_restore_generating.sql 'generating' 복원 (api-server insert + UI 필요)

마지막 migration 의 TS 동기화 누락 → drift.

Test plan

  • schema-drift gate check job pass (TS = DB)
  • tsc / lint clean
  • 'generating' status 를 UI/route 핸들러가 의도대로 사용하는지 확인 (regression risk 낮음 — value 만 추가)

관련

🤖 Generated with Claude Code

@vercel
Copy link
Copy Markdown

vercel Bot commented May 28, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
decoded-app Error Error May 28, 2026 8:43am

@thxforall thxforall moved this from Todo to In Progress in decoded-monorepo May 28, 2026
@thxforall thxforall added the bump:patch Bug fixes / internal refactor label May 28, 2026
thxforall and others added 4 commits May 28, 2026 17:40
* docs(database): add schema-drift-sot.md SSOT mapping (#373 v2)

TS 상수 ↔ DB CHECK constraint 매핑 SSOT. scripts/check-schema-drift.ts 의
SOT_MAPPINGS 와 함께 갱신한다. v2 PR gate 의 동작/허용 constraint 형식/
의도적 우회(drift-bypass label)/v3 후속 항목(posts.status, generated types)
명시.

* feat(scripts): add check-schema-drift.ts for TS<->DB enum drift (#373 v2)

ts-morph 로 TS 상수 (`export const X = [...] as const`) 값 set 추출 →
psql 로 pg_get_constraintdef 파싱 → set-equality 비교. 세 가지 CHECK
constraint 형식 (status::text=ANY ARRAY, col=ANY ARRAY, IN list) 지원.
drift 1건 이상이면 exit 1, stdout 은 PR comment 용 markdown report.

devDependency: ts-morph@^24.0.0 추가.

* feat(ci): add schema-drift.yml PR gate workflow (#373 v2)

postgres:17 service + postgresql-client-17 + bun install + supabase
migrations 순차 적용 + check-schema-drift.ts 실행 + sticky PR comment
(marocchino/sticky-pull-request-comment@v2, header=schema-drift).

drift-bypass label: continue-on-error 로 job green 유지 (comment 는 유지).
branch protection 별도 설정 필요.

* docs(database): drift-check.md mark v2 PR gate landed (#373)

v1 nightly 와 v2 PR gate 채널을 분리 명시. v2 세부는 schema-drift-sot.md
에서 별도 owning.
…ual palette (#589)

* docs(design-system): bump README to v2.2.0 with content fundamentals + dual palette

- Version: 2.1.0 -> 2.2.0, Last Updated: 2026-05-28
- Add v2.2 변경사항: Content Fundamentals, Animations 카탈로그, Dual Palette,
  Magazine palette tokens (#573), Navigation Facts, Home sequence,
  IBM Plex Mono (inline), DecodedLogo WebGL
- Document Index: 신규 Foundation (v2.2) 섹션 — content-fundamentals.md,
  animations.md 추가
- Tech Stack table 확장: OKLCH + Hex magazine palette, typography 4종,
  three.js + @chenglou/pretext (DecodedLogo)
- Navigation Facts + Home Page Sequence 섹션 추가 (app/page.tsx:568 앵커)

Closes #572 (part 1/7).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(design-system): add content-fundamentals.md

7 sections covering Voice / Casing / Person / Language / Pricing /
Numbers / Emoji policy with Do/Don't rules and code anchors:

- Pricing: ko-KR locale + ₩ prefix, toLocaleString
  (앵커: DecodedSolutionsSection.tsx:40 — 마이그레이션 대상)
- Numbers: 사용자 표면은 toLocaleString 통과
  (앵커: lib/utils/format.ts:36)
- Voice: editorial(큐레이션) vs product UI(명료) 분리
- Language: ko-KR 기본, 고유명사·기술 용어 원문 유지
- Emoji: editorial 표면 금지, product UI 절제, Lucide 우선

Closes #572 (part 2/7).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(design-system): add animations.md catalog

15+ CSS keyframe catalog with file/line anchors from
packages/web/app/globals.css:

- dash-flow (L299), hologram-* family (L318-L351), spot-* family
  (L410-L458), slide-up (L487), shimmer (L503), ai-summary-* (L522-L535),
  card-glow (L551), marquee-c (L585)
- duration/easing/용도/reduce-motion 컬럼
- Easing 함수 정리: ease-out (단방향 reveal), ease-in-out (펄스),
  linear (무한 flow), cubic-bezier(0.22, 1, 0.36, 1) — observe pattern,
  cubic-bezier(0.16, 1, 0.3, 1) — ai-summary smooth reveal
- prefers-reduced-motion 정책: 4개 미디어 쿼리 블록 + .js-observe
  transition fallback
- 사용 예시: spot 마커, skeleton shimmer, ai-summary, .js-observe

Closes #572 (part 3/7).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(design-system): patterns.md add 5.4 dual palette usage

* docs(design-system): tokens.md add magazine palette sub-table

* docs(agent): rewrite design-system-llm.md as v2.2.0 1-pager SSOT

* docs(agent): design-system-summary.md add v2.2.0 entry

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* feat(content-studio): add xAI scene video pipeline

* docs(content-studio): plan video job pipeline

* docs(content-studio): harden video job plan

* feat(content-studio): add video job pipeline

* feat(content-studio): abstract video providers

* feat(content-studio): select video mode per scene

* feat(content-studio): compose final video exports

* feat(content-studio): resume persisted video jobs

* feat(content-studio): attach governance to video jobs

* fix(content-studio): strengthen short-form video prompts

* feat(content-studio): add local video download runner

* feat(content-studio): save source image for local videos

* fix(content-studio): split long local video scenes

* feat(content-studio): compose local video clips
DB constraint post_magazines_status_check 는 'generating' 포함 5-state 인데
TS MAGAZINE_STATUSES 는 4-state. 1주일+ 잠재한 schema drift.

#373 drift gate fix (#595) 가 처음 정상 작동하며 발견.

발생 경위:
- 20260430120000: 'generating' 추가 (api-server generate handler 초기 INSERT)
- 20260430150000: 4-state 로 축소 (TS 와 동기화)
- 20260504133842: 'generating' 복원 (api-server insert + UI 필요)
- 마지막 migration 의 TS 동기화 누락 → drift

magazines.ts 의 MAGAZINE_STATUSES 에 'generating' 추가 (DB 와 같은 순서).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@thxforall thxforall force-pushed the fix/373-magazine-statuses-generating branch from 46dd6de to 9648902 Compare May 28, 2026 08:40
@thxforall thxforall merged commit b996f51 into main May 28, 2026
4 of 6 checks passed
@github-project-automation github-project-automation Bot moved this from In Progress to Done in decoded-monorepo May 28, 2026
thxforall added a commit that referenced this pull request May 28, 2026
back-merge 로 \`MAGAZINE_STATUSES\` 에 'generating' 이 추가되면서
\`MagazineApprovalTable\` 의 \`STATUS_DOT: Record<...status, string>\` 가
key 누락으로 TS fail (확인: \`#611\` Vercel build log).

\`generating\` 상태는 blue (\`bg-blue-400\`) 로 도트 색 부여 — pending/yellow,
published/emerald, rejected/red 와 시각적 대비.

본 PR 의 back-merge 변경과 함께 적용해야 \`tsc\` green.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
thxforall added a commit that referenced this pull request May 28, 2026
…-2026-05-28

chore: back-merge main → dev (#601 generating fix + ai/api version bumps)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bump:patch Bug fixes / internal refactor

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant