---
type: plans
tags: [plans, infrastructure, nas, collaboration, shared-editing, redis]
status: closed
closed_date: 2026-03-23
closed_reason: 폴더 생성 + README + lock.sh + 검증 5건 통과 + 에이전트 메모리 등록. CIFS 캐시 2초 대기 필요.
depends_on:
closing_criteria: 23·24서버 에이전트가 공유 폴더에서 충돌 없이 동시 문서 작업 가능 + 편집 잠금 동작 + 양방향 읽기/쓰기 검증 통과
---

# 260323 23·24서버 NAS 공유 편집 협업 공간 구축 계획

## 목적

23·24서버 에이전트가 git pull/push 없이 문서를 공유·편집할 수 있는 협업 공간을 구축하고, 동시 편집 충돌을 방지하는 잠금 메커니즘까지 한번에 완성한다.

## 참조 문서

- [아이디어](../ideas/260323_23_24서버_NAS_공유편집_협업공간_아이디어.md)
- [리서치](../research/260323_에이전트간_실시간_공유편집_동시성제어_리서치.md)

## 범위

| 포함 | 제외 |
|------|------|
| NAS 공유 폴더 구조 생성 | Yjs/CRDT 실시간 공동 편집 (후속 트랙) |
| 사용 규칙 문서 (README.md) | 코드 공유 (코드는 git 유지) |
| 파일 잠금 스크립트 (lock/unlock) | 웹 UI |
| 양방향 읽기/쓰기 검증 | |

Yjs/CRDT는 현재 MD 문서 협업 규모에서 오버엔지니어링. 파일 잠금 + 규칙으로 충분하며, 필요 시 후속 계획으로 분리.

## 작업 목록

### 1. 폴더 구조 생성 (23 또는 24)

```bash
mkdir -p /mnt/nas/workspace/shared-editing/{drafts,reviews,archive}
```

### 2. 사용 규칙 README.md 작성

`/mnt/nas/workspace/shared-editing/README.md`에 작성:

- **drafts/**: 자유 작성·토의·임시 메모. 누구나 쓰고 지울 수 있음.
- **reviews/**: 상호 리뷰 요청. 완료되면 drafts로 이동 또는 삭제.
- **archive/**: git에 커밋 완료된 문서 보관. 읽기 전용.
- **파일명 규칙**: `[23]_주제.md`, `[24]_주제.md` — 작성 서버 명시
- **합의 문서**: 양쪽 의견이 합쳐지면 접두 없이 `주제.md`로 병합
- **git 이관**: 확정 문서는 git 레포에 커밋 후 archive로 이동

### 3. 파일 잠금 스크립트

`/mnt/nas/workspace/shared-editing/scripts/lock.sh`:

```bash
#!/bin/bash
# 사용법: ./lock.sh <파일경로> <서버번호>
# 잠금:   ./lock.sh drafts/topic.md 24
# 해제:   ./lock.sh drafts/topic.md 24 unlock
FILE="$1"; SERVER="$2"; ACTION="${3:-lock}"
LOCKFILE="${FILE}.lock"
if [ "$ACTION" = "unlock" ]; then
  rm -f "$LOCKFILE"
  echo "UNLOCKED: $FILE"
elif [ -f "$LOCKFILE" ]; then
  echo "LOCKED by $(cat $LOCKFILE). 편집 불가."
  exit 1
else
  echo "$SERVER $(date +%Y-%m-%dT%H:%M:%S)" > "$LOCKFILE"
  echo "LOCKED: $FILE by $SERVER"
fi
```

- `.lock` 파일이 있으면 다른 서버가 편집 중 → 대기
- 편집 완료 후 `unlock`으로 해제
- 에이전트에게 "편집 전 lock.sh 실행, 완료 후 unlock" 규칙 안내

### 4. 양방향 검증

| 테스트 | 방법 | 기대 |
|--------|------|------|
| 24→23 쓰기/읽기 | 24에서 파일 생성 → 23에서 읽기 | 즉시 보임 |
| 23→24 쓰기/읽기 | 23에서 파일 생성 → 24에서 읽기 | 즉시 보임 |
| 동시 쓰기 다른 파일 | 양쪽에서 다른 파일 동시 생성 | 충돌 없음 |
| 잠금 테스트 | 24에서 lock → 23에서 lock 시도 | "LOCKED by 24" 거부 |
| 잠금 해제 | 24에서 unlock → 23에서 lock 시도 | 성공 |

### 5. 에이전트 안내 (CLAUDE.md / 메모리)

23·24서버 에이전트 메모리에 공유 편집 공간 사용법 등록:
- 경로: `/mnt/nas/workspace/shared-editing/`
- 문서 토의·초안은 여기서, 확정은 git으로
- 편집 전 lock.sh, 완료 후 unlock

## 실행 순서

```
1 (폴더) → 2 (README) → 3 (lock.sh) → 4 (검증 5건) → 5 (에이전트 안내) → 닫기
```

전부 순차, 의존성 없음. 한 세션에서 완료 가능.

## 닫는 조건

- [ ] 폴더 구조 생성 확인 (23·24 양쪽)
- [ ] README.md 작성 완료
- [ ] lock.sh 동작 확인
- [ ] 검증 5건 전수 통과
- [ ] 에이전트 메모리 등록
