기능 #281
김 정식이(가) 29일 전에 변경
# 개요
Redmine 이슈를 칸반 보드로 시각화하고 드래그앤드롭으로 상태를 변경할 수 있는 플러그인 개발.
- **플러그인 리포지토리**: 로컬 `/Users/joungsik/Workspace/joungsik/redmine_kanban` (완료 별도 리포 (`/Users/joungsik/Workspace/joungsik/redmine_kanban`, 작업 완료 후 GitHub public 공개) 공개 예정)
- **통합 방식**: 로컬 심볼릭 링크로 현 redmine 프로젝트 `plugins/redmine_kanban`에 연결 (Task 3에서 연결)
- **설계서**: [`docs/plans/2026-04-18-redmine-kanban-design.md`](https://github.com/joungsik/redmine_kanban/blob/main/docs/plans/2026-04-18-redmine-kanban-design.md) (플러그인 플러그인 리포 내, 아직 로컬에만 존재)
- **계획서**: [`docs/plans/2026-04-18-implementation-plan.md`](https://github.com/joungsik/redmine_kanban/blob/main/docs/plans/2026-04-18-implementation-plan.md) (승인 완료) `docs/plans/2026-04-18-redmine-kanban-design.md`
## MVP 범위 (v1.0)
- 프로젝트당 보드 1개
- `IssueStatus` 직접 매핑 (별도 칸반 상태 테이블 없음)
- `IssueQuery` 기반 이슈 소스
- 드래그로 즉시 상태 변경 (워크플로/권한 기존 체계 활용)
- 카드 세로 순서 수동 저장
- 종료 상태 통합 '완료' 컬럼 + 최근 N일 노출 (프로젝트별 설정)
## 주요 결정 사항 요약 작업 진행 단계
| 영역 | 결정 |
|---|---|
| 컬럼 구성 | `IssueStatus` 직접 매핑 |
| 이슈 소스 | `IssueQuery` 재사용 |
| 카드 이동 | 즉시 저장, 실패 시 원위치 복구 |
| 카드 표시 | 번호+제목, 담당자, 우선순위, 트래커, 시작일, 마감일 |
| 접근 | 프로젝트 메뉴 탭 |
| 권한 | `view_kanban`, `manage_kanban` + 기존 `edit_issues` |
| 보드 갯수 | 프로젝트당 1개 |
| 카드 정렬 | 수동 드래그 위치 저장 |
| 종료 상태 | 통합 '완료' 컬럼 + 최근 N일 |
| 실시간 동기화 | 없음 (`lock_version` 충돌만 감지) |
## 구현 Task 목록
- [ ] **Task 1**: 플러그인 스켈레톤 (init.rb, 라우트, 권한, 메뉴, placeholder) 1. 설계서 작성 및 검토 (완료)
- [ ] **Task 2**: 데이터 모델 + 마이그레이션 (`KanbanBoard`, `KanbanCardPosition`) + 단위 테스트 2. 구현 계획서 작성 (`/plan-generator`)
- [ ] **Task 3**: 심볼릭 링크 설정 + 로컬 통합 확인 3. 본 이슈 description에 계획 내용 업데이트
- [ ] **Task 4**: 보드 조회 화면 (`show`) + 카드 렌더링 + 기능 테스트
- [ ] **Task 5**: 보드 4. 로컬 심볼릭 링크 설정 화면 (`edit/update/destroy`) + i18n
- [ ] **Task 6**: 카드 이동 API (`KanbanCardsController#move`) + 워크플로/낙관적 잠금 5. 구현 (계획서 단계별 진행)
- [ ] **Task 7**: 프론트엔드 (Stimulus + SortableJS via importmap CDN)
- [ ] **Task 8**: 스타일 (CSS + Open Color 변수로 라이트/다크 테마 대응)
- [ ] **Task 9**: 시스템 6. 테스트 (Capybara + Selenium 드래그 자동화) 작성 및 전체 테스트 통과
- [ ] **Task 10**: 릴리즈 준비 (README, CHANGELOG, v1.0.0 태그) 7. 로컬 검증 (라이트/다크 테마, 권한 시나리오)
- [ ] **Task 11**: 8. GitHub public 리포 생성 및 푸시
## 테스트 체크리스트
- [ ] 단위 테스트: 모델 2개 케이스 전부 PASS
- [ ] 기능 테스트: 컨트롤러 2개 전부 PASS
- [ ] 시스템 테스트: 드래그 시나리오 PASS
- [ ] RuboCop: 경고 0
- [ ] Stylelint: 경고 0
- [ ] 수동: 라이트/다크 테마 각각 보드 렌더 확인
- [ ] 수동: `view_kanban`만 있는 사용자 → 보드 조회 가능, 설정 접근 403
- [ ] 수동: 권한 없는 사용자 카드 이동 → 403 복구
- [ ] 수동: 워크플로 불허 상태 이동 → 422 복구
- [ ] 수동: 비공개 프로젝트에서 비멤버 접근 → 차단
## 열린 질문 (구현 중 검증 필요)
- [ ] Stimulus 컨트롤러 importmap 로드 방식 실동작 검증 (Task 7). 문제 시 Vanilla JS로 대체.
- [ ] HTML5 DnD Selenium 시뮬레이션 안정성 (Task 9). 불안정 시 `execute_script` API 직접 호출로 대체.
- [ ] `serialize` + JSON 코덱 Rails 7.2/8.0 호환성 (Task 2 단위 테스트에서 조기 확인).
## 관련 링크
- 로컬 플러그인 리포: `/Users/joungsik/Workspace/joungsik/redmine_kanban`
- 현 redmine 프로젝트: `/Users/joungsik/Workspace/joungsik/redmine`
- 플러그인 리포 최근 커밋: `22bc691` (`docs: v1.0 MVP 구현
---
*이 description은 계획서 승인`) 작성 완료 후 상세 내용으로 업데이트될 예정입니다.*
뒤로