Skip to content

feat: GROWTH-144 Phase 1 프론트엔드 — 운영에만 있던 otro 커밋 2개를 git 에 반영 - #6

Merged
otroym merged 2 commits into
motefrom
feat/growth144-project-issue-type-frontend
Aug 5, 2026
Merged

feat: GROWTH-144 Phase 1 프론트엔드 — 운영에만 있던 otro 커밋 2개를 git 에 반영#6
otroym merged 2 commits into
motefrom
feat/growth144-project-issue-type-frontend

Conversation

@otroym

@otroym otroym commented Aug 5, 2026

Copy link
Copy Markdown

/srv/shared/app-src/plane푸시된 적 없는 otro 커밋 2개가 있었습니다. 그대로 git am 으로 올립니다 — 재작성이 아니라 원본 커밋 이관이라 작성자·날짜·메시지가 보존됩니다.

06a4d4faa  otro  2026-07-20  feat: ProjectIssueType link/unlink API + work item type modal
                             project picker (mote, GROWTH-144 Phase 1 완결)
5d6bcd6af  otro  2026-07-20  fix: guard work item type modal submit until project-link
                             seed resolves

왜 이제야 올라오나

어제까지 이 코드는 운영에서 돌고 있는데 git 에는 없는 상태였습니다. mote.50 이미지가 이 디렉토리(dirty)에서 빌드되면서 미커밋·미푸시 작업이 함께 구워졌기 때문입니다. 첫 커밋 메시지에 "이 커밋은 소스 반영만, 배포는 별도 승인 후 진행" 이라고 적혀 있는데, 빌드 경로 때문에 그 의도와 무관하게 배포됐습니다.

오늘 mote.51 을 깨끗한 origin/mote 에서 빌드하면서 백엔드 부분이 운영에서 사라졌고, PR #5 로 이미지에서 회수했습니다. 그때는 출처를 몰라 "author unknown" 으로 적었는데, 이 디렉토리를 확인하면서 원본 커밋과 GROWTH-144 라는 맥락이 드러났습니다.

이 PR 의 순변경

백엔드 7개 파일은 PR #5 로 이미 반영돼 있어 순변경 0 입니다(git am --3way 가 자동 해소). 실제로 새로 들어가는 건 프론트 4개 파일입니다.

apps/web/ce/types/issue-types/issue-property.ts                    +16
apps/web/core/components/work-item-types/work-item-type-modal.tsx  +115
apps/web/core/services/issue-type.service.ts                       +48
apps/web/core/store/issue-types/work-item-type.store.ts            +79

워크스페이스에서 만든 work item type 을 프로젝트에 연결하는 UI("Available in projects" 체크박스)와 그 store/service, 그리고 seed fetch race 가드입니다. PR #5 로 되살린 백엔드 API 의 실제 사용처가 이 코드입니다.

검증

  • git diff --stat origin/mote HEADapps/api 0 files (백엔드 무변경 확인)
  • 작성자·커밋일자 보존: otro <motemoteofficial@gmail.com> / 2026-07-20
  • 배포된 mote.50 번들에 Available in projects 존재 확인 → 이 코드가 지금 운영에서 동작 중
  • ⚠️ race 가드(isLoadingProjectLinks)는 번들에서 확인 불가했습니다. 지역 식별자라 미니파이어가 이름을 지웁니다 — 없다는 뜻이 아니라 이 방법으로는 판정이 안 됩니다.

배포는 별도

이 PR 은 소스 반영만 입니다. 프론트엔드 이미지는 아직 mote.50 이고, 재빌드하면 아래가 함께 걸립니다.

  • 동영상 첨부 기능이 아직 git 에 없습니다packages/editor/src/core/extensions/custom-video/ 가 통째로 untracked 이고 에디터 5개 파일이 미커밋입니다. 배포된 번들에 videoComponent·video/quicktime 이 있어 지금 운영에서 동작 중입니다. 이걸 커밋하기 전에 프론트를 재빌드하면 동영상 기능이 사라집니다.

순서는 ① 이 PR → ② 동영상 기능 커밋 → ③ 그 다음에야 프론트 재빌드 입니다.

관련: PLANE-78 / PLANE-80, PR #4 · #5

🤖 Generated with Claude Code

otro and others added 2 commits August 5, 2026 16:56
… picker (mote, GROWTH-144 Phase 1 완결)

Custom Fields(Phase 1)의 타입/필드 정의와 Phase 2의 값 저장 API는
이미 완성돼 있었으나, 정의한 IssueType을 실제 프로젝트에서 쓸 수
있도록 연결하는 ProjectIssueType CRUD가 백엔드/프론트 어디에도 없어
워크스페이스에서 만든 타입을 프로젝트에 붙일 방법이 없었다.

- 백엔드: ProjectIssueTypeViewSet(list/create/destroy, PROJECT 레벨
  권한) + ProjectIssueTypeSerializer 신규, URL 2개 추가
  (workspaces/<slug>/projects/<project_id>/issue-types/[…]).
  db/models·app/serializers·app/views의 __init__.py export 누락도
  같이 정리(모델 자체는 기존부터 있었으나 export가 안 돼 있었음).
- 프론트: work-item-type-modal.tsx에 "Available in projects" 체크박스
  섹션 추가(기존 useProject 재사용), 저장 시 기존↔선택 diff로
  link/unlink 호출. store/service에 대응 메서드 3종 추가.
- 마이그레이션 불필요: project_issue_types 테이블은 이미 존재, 모델
  필드 변경 없음 — makemigrations --check로 편집본/순정본 양쪽 비교해
  무관한 기존 드리프트(issuetimer 제약조건) 1건만 있고 신규 diff
  없음을 확인.

Constraint: 운영 중인 회사 전체 Plane 셀프호스트 — 이 커밋은 소스 반영만, 배포(docker build/canary-swap)는 별도 승인 후 진행
Confidence: high
Scope-risk: narrow — 신규 리소스 추가만, 기존 엔드포인트/모델 필드 변경 없음
Not-tested: 실제 웹 UI E2E(otro가 work-item-types 설정에서 직접 확인 필요), 프론트 전체 빌드(dep 미설치 환경이라 isolated tsc로만 검증)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Code review of 5bdd952 found a real race: the project-link seed fetch
(fan-out across every workspace project) runs async on modal open with
no loading flag, so saving before it resolves would sync an empty
selection and silently drop existing project links.

Adds isLoadingProjectLinks state, set for the seed fetch's lifetime and
checked on the submit button's disabled prop.

Confidence: high
Scope-risk: narrow — single component, no API/schema change
Not-tested: real UI click-through (otro to verify in work-item-types settings)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@makeplane

makeplane Bot commented Aug 5, 2026

Copy link
Copy Markdown

Linked to Plane Work Item(s)

References

This comment was auto-generated by Plane

@otroym
otroym merged commit 2c1e0d8 into mote Aug 5, 2026
@otroym
otroym deleted the feat/growth144-project-issue-type-frontend branch August 5, 2026 08:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant