Context
PR #639 가 IG carousel 슬라이드 생성 + admin preview 까지 closing 했지만 actual IG 게시는 수동 (매니저가 decoded.style/share-the-look 같은 IG account 에서 직접 업로드). Option C (자동 publish) 가 보류된 상태에서, 수동 업로드 후 "이 article 이 IG 의 어느 post 와 매칭되는가" 추적 안 됨.
Proposed approach
- DB (별도 마이그레이션):
```sql
ALTER TABLE public.editorial_articles
ADD COLUMN IF NOT EXISTS ig_post_url text,
ADD COLUMN IF NOT EXISTS ig_published_at timestamptz;
COMMENT ON COLUMN public.editorial_articles.ig_post_url IS
'Manually uploaded IG post URL (Option C 자동 publish 전까지 수동 추적).';
```
- api-server:
- PATCH `/api/v1/admin/editorial-articles/{id}` body 에 `ig_post_url` + `ig_published_at` 받음 (기존 patch 핸들러 확장)
- publish_to_operation 가 두 컬럼 carry
- Admin UI:
- IgCarouselPreview 에 "Mark as posted" 섹션 — text input (IG URL) + "Save" 버튼
- 저장 후 IG URL chip + "Posted at {datetime}" 표시 + open IG 링크
- already-posted 면 carousel preview 위에 배지 표시
Acceptance
- 매니저가 IG 업로드 후 URL 복사 → admin 에 붙여넣기 → 저장 → article 와 영구 매칭
- web magazine (decoded.style) 의 article 상세 페이지에서 IG cross-link 표시 (별도 issue 로 web side)
Notes
References: PR #639
Context
PR #639 가 IG carousel 슬라이드 생성 + admin preview 까지 closing 했지만 actual IG 게시는 수동 (매니저가 decoded.style/share-the-look 같은 IG account 에서 직접 업로드). Option C (자동 publish) 가 보류된 상태에서, 수동 업로드 후 "이 article 이 IG 의 어느 post 와 매칭되는가" 추적 안 됨.
Proposed approach
```sql
ALTER TABLE public.editorial_articles
ADD COLUMN IF NOT EXISTS ig_post_url text,
ADD COLUMN IF NOT EXISTS ig_published_at timestamptz;
COMMENT ON COLUMN public.editorial_articles.ig_post_url IS
'Manually uploaded IG post URL (Option C 자동 publish 전까지 수동 추적).';
```
Acceptance
Notes
References: PR #639