시간을 투입했으나 완료/폐쇄되지 않고 타인에게 이관된 이슈를 추적합니다.
다중 사용자 지원, SQLite 캐시, 담당자 변경 타임라인 포함.
| 유형 | 표시 | 조건 |
|---|---|---|
| 담당자 이력 | 🔴 | 저널에 내가 담당자였다가 변경된 이력 존재 |
| 시간 기록만 | 🟡 | Time Entry에 기록은 있으나 담당자 이력 없음 |
공통 조건: 미완료(비폐쇄) 상태 + 현재 담당자 ≠ 대상 사용자
폐쇄 상태 제외:
status.is_closed = true또는 이름에 완료/종료/closed/resolved 등 포함 시 제외
# 1. 패키지 설치
npm install
# 2. 환경변수 설정
cp .env.example .env
# .env 파일 편집:
# REDMINE_URL=https://redmine.mycompany.com
# REDMINE_API_KEY=내_API_키
# PORT=3000 (선택)
# 3. 실행
npm start
# → http://localhost:3000- [사용자 동기화] 클릭 → Redmine에서 전체 사용자 목록을 SQLite DB에 저장
- 분석 대상 사용자 선택 (이름+로그인 표시)
- [분석 시작] 클릭 → 실시간 진행 상황 확인
- 이관 이슈 목록 + 담당자 변경 타임라인 확인
data.db (SQLite, 자동 생성)
| 테이블 | 내용 |
|---|---|
users |
동기화된 사용자 목록 |
analysis_runs |
분석 실행 기록 |
transferred_issues |
분석된 이관 이슈 상세 |
① Time Entries 전체 수집 (페이징)
② 이슈별 투입 시간 집계
③ 이슈 상세 조회 (status_id=* 전체)
④ 폐쇄/완료 상태 제외 + 현재 담당자 ≠ 대상 사용자 필터
⑤ 이슈 저널(변경 이력) 조회
→ 담당자 변경 체인 추출
→ 대상 사용자가 담당자였던 이력 확인
⑥ DB 저장 → 결과 표시
REDMINE_API_KEY는 관리자 권한이 있어야 타인의 Time Entries 조회 가능- API 키는
.env에만 저장, 브라우저에 노출 안 됨 - 이슈 수가 많으면 저널 조회(⑤단계)에 시간 소요
data.db는 git에 포함하지 마세요 (.gitignore추가 권장)