Serve the vfolder invitation through the entity invitation
- Dominant language
- Python
- Stars
- 670
- Forks
- 183
- Avg merge
- 15h 13m
- Merged PRs (30d)
- 368
Description
BEP-1077 Phase 2 (BA-7664). vfolder 전용 초대 표·서비스를 일반화된 공유 processor 층(BA-7666) 위로 갈아끼운다. 2026-09-05 재서술. 이전 본문의 grant_entities·named cap 전제는 BA-7593 으로 폐기됨.
대상
- VFolderInviteService 의 9개 동작(invite, accept, reject, update, list, leave, revoke, 마운트 권한 변경, sent 목록)이 vfolder 전용 표 대신 entity_shares 초대를 쓴다. 수락은 accept_invitation → widen_share (넓히기만).
- vfolder 는 target_entity_type=vfolder, target_entity_id 로 간다. invitee 는 invitee_email, state 는 status 로 값이 같다. pending 유일 인덱스가 vfolder 의 의미를 그대로 담는다.
- REST 초대 경로의 응답 모양이 바뀌면 무엇이 바뀌는지 PR 에 적는다.
완료 기준
- vfolder 초대 경로에 VFolderInvitationRow 원시 insert/update 가 없다. 초대 수락 시 share 그래프 행이 생긴다 (cap 은 BA-7665 의 비트 대응).
제약
- 기존 대기 초대 행 이관은 BA-7571. 레거시 표는 그때까지 읽기 호환.
- 순서: BA-7568 개명 → BA-7665 cap 대응 → BA-7666 processor 일반화 → 이 이슈.
열린 결정
- vfolder 는 초대자를 이메일 문자열로 저장하는데 entity_shares 의 inviter_user_id 는 NOT NULL. 이메일로 사용자를 못 찾는 기존 행의 처분.
참고 파일 (2026-09-05 main 기준, 구현 방향은 착수 시 확인)
- services/vfolder/services/invite.py:65-300, services/vfolder/actions/invite.py, repositories/vfolder/repository.py:1277-1500 (초대 CRUD 10개 메서드), api/rest/vfolder/handler.py 초대 경로, models/vfolder/row.py VFolderInvitationRow
JIRA Issue: BA-7491
Contributor guide
Research direction
Start by reading services/vfolder/services/invite.py:65-300, services/vfolder/actions/invite.py, and repositories/vfolder/repository.py:1277-1500 to map the existing invitation operations. Then inspect api/rest/vfolder/handler.py and models/vfolder/row.py, along with the entity_shares processor work named in BA-7665 and BA-7666. Done means the vfolder invitation path uses entity_shares without raw VFolderInvitationRow writes, acceptance creates share-graph rows, and REST response changes are documented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- api, backend, databases
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100