Cloudwiki

문서/워크스페이스 계획

# 개인 워크스페이스 기능

로그인 유저가 전역 위키와 완전히 분리된 개인 워크스페이스를 만들어 문서·미디어를 관리하는 기능. `WORKSPACES_ENABLED` 토글로 기본 비활성(꺼져 있으면 `/ws*`·`/workspaces` 404 + UI 숨김).

> 이 문서는 설계·구현 계획서였으나 본 기능 구현이 완료되어 요약만 남깁니다. 상세 구조는 `COMMON.md` 소스 코드 맵의 워크스페이스 항목을 참조하세요.

## 구현 요약

- 전용 테이블(`workspaces` / `workspace_members` / `workspace_pages` / `workspace_revisions` / `workspace_media` / `workspace_page_links`)로 전역 `pages` / `media` 와 완전 분리(격리 누락 구조적 차단, 엣지 캐시 `private, no-store`)
- 권한: owner(=`workspaces.owner_id`) · editor · viewer + super_admin 운영 접근. 생성 권한·개인당 상한은 `WORKSPACE_CREATOR` / `WORKSPACE_MAX_PER_USER` env 로 제어
- 공개: 페이지별 `ws_public` 링크 공개(비색인). 공개 문서가 참조하는 미디어는 자동 공개 연동
- UI: 목록(`/workspaces`) · 대시보드(`/ws/:wslug`) · 설정 · 폴더 뷰 · 문서 뷰 · 편집기
- 워크스페이스 전용 MCP 엔드포인트(`/api/ws-mcp`) — 문서 CRUD · 미디어/멤버 조회(관리 도구 제외)
- 식별자(slug)는 UI 에서 **제목**, 표시용 대체 이름은 **대체 제목**으로 일관 노출

## 나중에 구현

### 중요
astro 컴포넌트와 백엔드에서 검증 장치 (ACL, 역링크 탐지) 가 코드를 최대한 공유해 유지보수성을 높이기

~~에디터를 Astro 컴포넌트로 더 세분화, 워크스페이스와 위키 에디터 양쪽에서 동일한 UI 제공 + 자동 편집 요약~~ (PR #916 완료 — ws-edit.ts CM6 업그레이드, summary.ts 자동요약 연동)

### 일반

- 워크스페이스 내 TODO 리스트 (클릭으로 간단하게 체크박스 변경)
- 워크스페이스 내 단일 게시판 (리비전 관리 안함)
- 워크스페이스 진입점 버튼을 헤더에 추가 (개인 설정에서 로컬 단위로 커스터마이징. 워크스페이스 홈 / 자신이 참가 또는 소유한 워크스페이스)
- 개인 설정에서 접속시 홈페이지를 어디로 갈지 결정 (위키 홈 / 워크스페이스 홈 / 자신이 참가 또는 소유한 워크스페이스)
- 워크스페이스 폴더 뷰에서 이름변경 버튼 고치기. (지금은 아예 작동 안되고, 고칠때 하위 문서까지 일괄 트랜젝션으로 작동시켜야함. D1 한계로 트렌젝션 못쓰는데, 사전검증 -> 변경 방식으로)
- 워크스페이스 MCP 연결 UI 제공하기. 마이페이지에서 기존 MCP 연결 섹션을 위키 MCP로 바꾸고
워크스페이스 MCP는 따로.
워크스페이스 MCP는 각 워크스페이스별로 독립 엔드포인트 사용. 단, 사용자명의의 PAT처럼 작동하는 구조는 유지
- 워크스페이스 대시보드 UI 개선
폴더 뷰 대놓고 쓰지 말고, 빠르게 최근문서 보는곳 위에 전체 문서 보기 눌러서 진입
- 폴더 뷰에서 문서 제목 클릭시 해당 문서로 이동, 옆에 있는 문서로 이동 버튼 삭제
- 모든 버튼 사이트 전역에서 공유하는 DESIGN.md에 맞게. 부트스트랩 기본 스타일 금지
- 워크스페이스 아이콘 커스텀하기. 기존 아이콘 피커가 이미 범용적으로 사용 가능한 구조로 설계되어 있음. 재활용하기. 기본값은 
- 워크스페이스 유저 초대 UI가 없음.
워크스페이스 대시보드에서 유저 검색 또는 유저 프로필 페이지에서 초대가능하게