Skip to content

doclib 연속 리팩토링 및 비디오 스트리밍 실행 계획 ​

기준 브랜치: main (94abb46) 목표: 도메인 모듈 경계를 실제 소비 코드까지 연결하고, 정리된 구조 위에 권한 기반 비디오 스트리밍 기능을 구현한다.

작업 순서 ​

단계범위완료 기준
1게시판·권한·첨부파일 도메인 접근 계층각 기능이 PortalDataContext 전체 대신 기능별 Hook으로 필요한 상태와 명령만 사용한다.
2홈 화면 첨부파일 UI파일 상세, 첨부 목록, 업로드·다운로드·공유 인터랙션을 features/attachments로 이동한다.
3관리자·서버 인증 세분화관리 패널의 공통 구성 요소와 인증의 세션·사용자 조회·라우트·미들웨어 책임을 파일 단위로 나눈다.
4리팩토링 검증타입 검사, 비밀정보 비의존 테스트, 프로덕션 빌드가 통과한다.
5비디오 스트리밍접근 가능한 동영상 게시, 메타데이터·접근 제어 API, 동영상 플레이어·목록 UI를 별도 기능 모듈로 구현한다.

도메인 규칙 ​

PortalDataContext는 기존 저장·동기화 호환성을 유지하는 내부 상태 저장소로 둔다. 게시판, 권한, 첨부파일 소비 코드는 각각 features/boards/state, features/access/state, features/attachments/state에서 제공하는 선택적 Hook을 사용한다. 이 방식은 한 번에 데이터 저장 형식을 바꾸지 않으면서도 UI와 기능 명령의 의존성을 분리한다.

비디오 스트리밍은 features/video-streaming과 server/features/video-streaming이 소유한다. 첨부파일 저장소를 재사용하되, 업로드·재생·다운로드는 인증 미들웨어와 게시글의 쓰기·읽기 권한을 통과해야 한다. 기본 구현은 브라우저 기본 HTML5 플레이어와 HTTP Range 요청을 사용하므로 별도 트랜스코딩 인프라 없이 MP4·WebM·Ogg 파일을 재생할 수 있다.

검증 기준 ​

기능 경계 변경 후에는 TypeScript 검사와 프로덕션 빌드를 통과해야 한다. 외부 비밀정보가 필요한 Archive API 및 R2 통합 테스트는 현재 검증 환경에서 별도로 보류하며, 나머지 단위 테스트는 통과해야 한다.