팀핏 — 팀 성과 리뷰 & 1:1 인사이트
소규모 팀의 1:1 리뷰 사이클과 연간 성과 집계를 자동화하는 HR-ops SaaS 데모입니다.
데모 스냅샷
이것은 큐레이션된 데모 스냅샷입니다. 실제 프로젝트 데이터는 검토 후 공개됩니다.
PRD
섹션 구성 ↔ 업계 표준 PRD 템플릿 대응
| 업계 통용 PRD 섹션 | 본 fixture 섹션 | 깊이 메모 |
|---|---|---|
| Target Personas | 타겟 페르소나 | 5-30인 팀 HR 리드 + 매니저 |
| Success Metrics | 성공 지표 | 응답률 60% → 85%, 사이클 23일 → 14일 |
| Key Feature Specs | 핵심 기능 명세 | 1:1 리뷰 템플릿 CRUD + 자동 리마인드 스케줄러 |
| (도메인 고유) | 권한 매트릭스 | admin/manager/member 3역할 × read/write/delete/export 4권한 |
프로젝트 개요
팀핏은 5-30인 규모 스타트업과 소규모 팀을 위한 HR-ops SaaS로, 1:1 리뷰 사이클·리마인드·연간 성과 집계를 한 곳에서 자동화합니다. 리뷰 사이클의 반복 비용(일정 조율, 응답 독촉, 결과 집계)을 시스템이 대신 처리해 매니저가 피드백 품질 자체에 집중할 수 있게 합니다. 관리자/매니저/멤버 3단계 권한을 기본 내장해 "누가 어떤 리뷰를 열람·편집할 수 있는가"의 경계를 제품 설계 시점부터 명확히 잠급니다. Vooster로 요구사항을 구조화하고 태스크를 스프린트 단위로 자동 분배해 단일 엔지니어·디자이너·매니저 triad로 3개월 내 MVP를 출시했습니다. 기존 Google Forms + 스프레드시트 조합 대비 리뷰 사이클 운영 공수를 매니저 1인당 주 4시간 절감하는 것이 정량 목표입니다. 리뷰 사이클 하나당 평균 23일이 걸리던 것을 14일 이내로 줄이고, 응답률 60% 수준을 85%로 끌어올리는 것이 제품의 북극성 지표입니다. 팀핏은 "자동화된 리뷰 사이클 엔진 + 권한 매트릭스 + 집계 리포트"의 3요소를 하나의 플로우로 묶은 최소 제품입니다.
문제 정의
5-30인 규모 성장팀의 매니저는 리뷰 사이클을 "자주 돌려야 하는 것"으로 인지하지만, 수동 운영 비용 때문에 반기에 한 번 이상 돌리지 못합니다. 현재 대안들은 세 가지 지점에서 공통적으로 부족합니다. 첫째, Google Forms는 질문 편집은 쉽지만 리마인드·응답률 추적·연간 집계가 전무합니다. 둘째, Notion 템플릿은 문서로는 깔끔하지만 권한 분리·익명성 보장·만료 관리가 없어 인사 데이터를 맡기기 어렵습니다. 셋째, Lattice/15Five 같은 기성 HR-ops SaaS는 엔터프라이즈 요금제·과한 기능으로 5-30인 팀에는 과잉이고 도입 공수가 큽니다. 넷째, 스프레드시트 기반 수기 운영은 매니저 한 명의 리듬에 의존해 부재 시 사이클이 멈추고 데이터 흔적이 흩어집니다. 결과적으로 매니저는 리뷰를 "불가피하게 밀린 숙제"로 인식하고, 팀원은 답변을 독촉 받기 전까지 놔두게 됩니다. 팀핏은 이 문제를 "자동 개시 → 자동 리마인드 → 자동 집계" 파이프라인으로 풀어 매니저 개입 빈도를 사이클당 30분 이내로 단축합니다. 운영 정책과 데이터 흐름을 제품 안에 박아두어 누가 리더여도 동일한 품질의 사이클이 반복 가능하게 만드는 것이 설계의 핵심입니다. '매니저 없이도 사이클이 굴러가는 상태'를 MVP의 성공 조건으로 삼습니다.
타겟 페르소나
페르소나 A — 스타트업 피플팀 매니저 / HR Lead (가명: 이하은)
Role: 25-40인 규모 B2B SaaS 스타트업의 첫 피플 리드, 리뷰·온보딩·1:1 문화 정착 담당 업무 맥락: 분기마다 전사 리뷰 사이클을 운영하며, 피드백 데이터를 경영진 리포트로 요약 일상 Pain:
- Google Forms + 스프레드시트 조합으로 사이클을 굴리다 응답률 독촉에만 사이클의 절반을 소비
- 연간 성과 리포트를 매 분기마다 수기로 다시 집계하며 데이터 포맷 불일치에 시달림
- 매니저·리뷰어·리뷰 대상자 권한 구분이 없어 실수로 본인 평가를 볼까 걱정
- 리뷰 결과를 팀장에게 따로 DM으로 전달하는 반복 작업에 피로가 축적
- 휴가·부재 중 사이클이 정체되면 재개 시점이 불투명해짐 사용 맥락:
- 분기 시작 시 사이클 오픈 → 응답률 모니터링 → 마감 후 자동 집계 리포트 수령
- 연간 종합 리포트를 CSV로 내려 경영진 1on1 자료로 사용
- 매 사이클 운영 메타데이터(사이클 이름·기간·템플릿)를 아카이브 Current alternatives: Google Forms, Notion DB, 구글 스프레드시트 채택 트리거: 응답률이 3 사이클 연속 60% 미만으로 떨어져 경영진이 문제 제기 핵심 니즈: 자동 리마인드 + 권한 매트릭스 + 연간 집계 리포트
페르소나 B — 신임 엔지니어링 매니저 (가명: 박도윤)
Role: 시니어 엔지니어에서 팀장이 된 지 6개월, 6-8명 규모 엔지니어링팀 관리 업무 맥락: 1:1 미팅·피드백 주기 관리, 성과 평가 시즌 사이클 운영 일상 Pain:
- 1:1 미팅 질문지를 매번 새로 구성하다 포커스가 빠지는 경험 반복
- 팀원별 응답 흐름을 한눈에 볼 데이터가 없어 사후 회고 준비가 힘듦
- 리뷰 템플릿을 공유하려 해도 다른 팀과 포맷이 달라 재사용 불가
- 본인 리뷰·부하직원 리뷰를 별도 관리해야 해 도구가 파편화
- 리뷰 데이터를 자신의 코칭 습관에 피드백하는 루프가 끊어짐 사용 맥락:
- 1:1 템플릿 라이브러리에서 선택 후 팀원별 맞춤 개인화
- 사이클 종료 시 팀별 응답률·코멘트 테마 대시보드로 확인
- 매 분기 개인 코칭 회고에 집계 리포트를 활용 Current alternatives: Notion 개인 템플릿, 1:1 메모 앱(Grove, Fellow) 채택 트리거: 피플팀이 제안한 도구 도입 결정으로 자연스럽게 합류 핵심 니즈: 템플릿 라이브러리 + 팀 뷰 대시보드 + 리뷰 코멘트 모음
페르소나 C — 개인 기여자 / 리뷰 대상자 (가명: 최서윤)
Role: 시니어 프론트엔드 엔지니어, 본인 성과 리뷰·동료 피어 리뷰 참여자 업무 맥락: 분기별 본인 기여 리뷰 작성 + 팀원 피어 리뷰 2-3건 작성 일상 Pain:
- 이메일·Slack·Notion 여러 경로로 오는 리뷰 링크를 일일이 찾아다녀야 함
- 본인이 완료한 리뷰와 미완료 리뷰 구분이 애매해 독촉 받을까 불안
- 작성한 피어 리뷰를 나중에 참조하고 싶어도 링크가 흩어져 다시 찾기 어려움 사용 맥락:
- 리뷰 요청 수신 시 한곳의 개인 대시보드에서 전체 할 일 확인
- 마감 48시간 전 리마인드로 미완료 리뷰를 점검
- 본인 리뷰 이력 페이지에서 과거 작성물 검색 Current alternatives: 이메일·Slack 알림·Notion 개별 페이지 채택 트리거: 팀 차원에서 도구 도입 결정으로 자연스럽게 온보딩 핵심 니즈: 개인 TODO 대시보드 + 리뷰 이력 검색 + 리마인드 명확성
사용자 스토리
-
US-001: As a people lead, I want to open a review cycle from a saved template, so that I do not need to rebuild the question structure every time. Acceptance Criteria:
- 템플릿 라이브러리에서 검색·복제·수정 후 사이클 개시까지 5분 이내 완료
- 템플릿 버전 관리로 과거 사이클과의 비교 가능
- 템플릿 편집 권한은 admin + manager 역할에 한정
- 사이클 개시 시 대상자 자동 선정(팀·부서 필터)
- 개시 직전 dry-run으로 발송될 이메일·Slack 메시지 preview
- 사이클 이름·기간·템플릿 버전이 audit log에 불변 기록
-
US-002: As a reviewer, I want to receive email and Slack reminders before the deadline, so that I never miss an assigned review without explicit manager chasing. Acceptance Criteria:
- 마감 48시간·24시간 전 자동 리마인드 발송
- 수신 채널은 사용자 설정(이메일·Slack·둘 다)에 따라 분기
- 중복 발송 방지를 위한 리마인드 이력 테이블 기록
- 리뷰 완료 시 리마인드 즉시 해제
- 리마인드 실패(bounce, Slack 비활성) 시 admin에게 fallback 알림
-
US-003: As an admin, I want to view the response rate dashboard for an active cycle, so that I can intervene when participation lags. Acceptance Criteria:
- 사이클 상세 페이지에 응답률·미응답자 리스트 실시간 표시
- 미응답자 추가 리마인드 발송 버튼 제공 (일 1회 제한)
- 응답률 50% 미만 상태로 마감 24시간 이내 도달 시 admin에게 알림
- 응답률 지표는 주간 집계 리포트에도 포함
- 지표 계산 기준(제출·초안·미응답)이 명시적으로 툴팁 제공
-
US-004: As a member, I want to see all my assigned reviews on a personal dashboard, so that I can keep track of what I need to complete without searching emails. Acceptance Criteria:
- 개인 대시보드에 할당된 리뷰 목록이 상태·마감일 순으로 표시
- 완료된 리뷰와 미완료 리뷰 구분 색상으로 명확화
- 항목 클릭 시 해당 리뷰 작성 화면으로 즉시 이동
- 마감 임박(48시간 이하) 항목은 상단 고정
- 완료된 리뷰는 history 탭에서 검색·재참조 가능
-
US-005: As an admin, I want to export the annual performance aggregation as CSV, so that I can share it with the executive team for compensation review. Acceptance Criteria:
- 연간 리포트 페이지에서 CSV 내보내기 버튼 노출
- 내보내기 요청은 audit log에 author·timestamp 기록
- 대용량 export는 비동기 처리되며 완료 시 Slack DM 알림
- export CSV에는 익명화된 통계만 포함(개별 코멘트 제외)
- 개별 코멘트 export는 별도 권한(admin + 명시적 경영진 role)에 한정
-
US-006: As a manager, I want to configure different review cycles per team with different question sets, so that engineering and sales teams can use formats suited to their needs. Acceptance Criteria:
- 팀별로 서로 다른 템플릿·주기·리마인드 설정 지원
- 템플릿 라이브러리에 조직 공유 vs 팀 전용 구분 태그
- 팀 전용 템플릿은 해당 팀 매니저만 편집 가능
- 신규 팀 생성 시 기본 템플릿 자동 복제 옵션
- 팀별 템플릿 diff 비교 뷰 제공
-
US-007: As a people lead, I want the system to prevent members from viewing colleagues' reviews, so that privacy expectations are never accidentally violated. Acceptance Criteria:
- 멤버는 본인 작성 리뷰 + 본인에 대한 리뷰(익명 처리)만 조회 가능
- 리뷰 URL에 직접 접근해도 권한 외 데이터는 404 처리
- 권한 위반 시도는 audit log에 warn severity로 기록
- 매니저는 본인 팀원 리뷰까지만, admin은 전 조직까지
- 권한 변경 시 기존 세션을 즉시 무효화
-
US-008: As a member, I want to save a draft of my review before submitting, so that I can come back to it later without losing my progress. Acceptance Criteria:
- 리뷰 작성 중 자동 저장이 30초 간격으로 동작
- "저장하고 나중에 작성" 명시 버튼 제공
- 초안 상태는 응답률 지표에서 "응답"으로 집계하지 않음
- 마감 이후 초안은 자동 제출되지 않고 경고 표시
- 초안 복원 시 이전 편집 시점 타임스탬프 표시
-
US-009: As an admin, I want to pause an ongoing review cycle temporarily, so that I can handle emergencies (sudden org change) without losing the collected responses. Acceptance Criteria:
- 사이클 pause 시 리마인드·자동 마감 일시 중지
- 기 수집된 응답은 그대로 유지되며 재개 시 이어서 사용 가능
- pause 사유 메모 필수 입력
- pause 이력은 audit log에 기록
- 재개 시 남은 기간 재계산 옵션 제공
-
US-010: As a manager, I want to compare a team member's review scores quarter over quarter, so that I can give feedback grounded in a concrete trajectory rather than vague impressions. Acceptance Criteria:
- 팀원 상세 페이지에 분기별 평균 점수 라인 차트
- 주요 항목별(업무 품질·협업·성장) 점수 추이 분리 조회
- 코멘트 요약 키워드가 분기마다 표시되어 테마 변화를 포착
- 데이터가 부족한 분기는 결측 상태로 명시
- 데이터 export는 audit log에 기록되어 공유 경로 추적
-
US-011: As a people lead, I want the system to detect "stalled" cycles with no activity for 7 days and alert me, so that I can intervene before deadlines slip. Acceptance Criteria:
- 응답 활동이 7일간 전무한 사이클은 "정체" 상태로 마킹
- admin에게 Slack DM + 이메일 알림 발송
- 정체 상태에서 admin은 리마인드 재발송·사이클 pause·연장 중 택일 가능
- 정체 판정은 일 1회 스케줄 배치 기준으로 재계산
- 정체 상태 해제 시 자동으로 알림 종결
핵심 기능 명세
F1. 리뷰 템플릿 빌더 & 라이브러리
목적: 매니저가 질문을 드래그·재배치·저장하여 재사용 가능한 리뷰 템플릿을 관리 동작:
- 질문 타입(short text, long text, scale 1-5, checkbox) 드래그 앤 드롭 편집
- 조직 공유 vs 팀 전용 구분 태그
- 템플릿 버전 관리로 과거 버전 비교·롤백
- 템플릿 라이브러리 검색·복제·inline preview
- 편집 저장 시 dry-run 발송 preview 제공 우선순위: MUST 성공 신호: 템플릿 생성 중앙값 5분 이하, 재사용률 60% 이상
F2. 리뷰 사이클 자동 스케줄러
목적: 분기·반기 단위 사이클을 정책에 따라 자동 개시·마감하고 모든 상태 전환을 트리거 동작:
- 사이클 생성 시 개시일·마감일·대상자·템플릿 지정
- 개시 시점 도달 시 자동으로 대상자에게 리뷰 링크 발송
- draft → sent → responded → closed 상태머신 자동 관리
- 마감 후 미응답자는 자동 closed 상태로 전환하되 "응답 누락"으로 기록
- 공휴일·주말 회피를 위한 발송 시간대 옵션 우선순위: MUST 성공 신호: 사이클 운영 공수 매니저당 주 4시간 → 30분 이하
F3. 자동 리마인드 엔진
목적: 미응답 리뷰 담당자에게 이메일·Slack 리마인드를 사전 정의 일정에 따라 발송 동작:
- 마감 48시간·24시간 전 자동 리마인드
- 수신 채널은 사용자 설정(이메일·Slack·둘 다)
- 리뷰 완료 시 리마인드 자동 해제
- 중복 발송 방지 이력 테이블로 re-delivery 차단
- bounce/실패 시 admin에게 fallback 알림 우선순위: MUST 성공 신호: 사이클 응답률 60% → 85%
F4. 연간 성과 집계 리포트
목적: 분기·반기·연간 단위로 리뷰 결과를 집계해 경영진 자료로 활용 동작:
- 점수·코멘트 테마·응답률을 기간별로 집계
- 관리자·매니저·개인 관점별 뷰 분기
- CSV·PDF 다운로드, 대용량은 비동기 처리
- 익명화 규칙(코멘트 직접 제외, 숫자 지표만)
- 리포트 생성 이력과 시청자 audit log에 기록 우선순위: SHOULD 성공 신호: 분기 리포트 경영진 열람률 100%
F5. 개인 리뷰 대시보드
목적: 리뷰 대상자·리뷰어가 자신의 할 일·이력을 한곳에서 관리 동작:
- 할당된 리뷰 목록을 상태·마감일 순으로 표시
- 완료/미완료 구분 색상, 마감 임박 상단 고정
- 본인이 작성한 리뷰 history 검색·재참조
- 초안 자동 저장 (30초 간격)
- 본인에 대한 리뷰는 익명화 후 요약으로만 공개 우선순위: SHOULD 성공 신호: 멤버 주간 active 비율 70% 이상
성공 지표
각 지표는 제품 대시보드에서 실시간 집계되며 매 사이클 종료 시 운영 회고 자료로 export됩니다.
- 사이클 응답률: 초안이 아닌 "제출" 리뷰 비율. 목표 85% 이상, baseline 60%.
- 리마인드 → 응답 전환률: 리마인드 발송 후 24시간 이내 응답 완료 비율. 목표 60% 이상.
- 평균 응답 리드타임: 사이클 시작 ~ 응답 제출 평균 시간. 목표 10일 이내, baseline 18일.
- 연간 리포트 생성 시 관리자 소요시간: 리포트 export 완료까지 매니저 clicks·분. 목표 5분 이내.
- 매니저 사이클 운영 공수: 개시·독촉·집계에 드는 매니저 주당 시간. 목표 주 30분 이하, baseline 4시간.
- 사이클 완료율: 예정된 사이클 중 마감까지 완결 비율. 목표 95% 이상.
- 권한 위반 시도 차단율: 권한 외 리뷰 접근 시도의 admin 알림 적중률 100% 유지.
비기능 요구사항
- 성능: 개인 대시보드 로드 p95 2초 이하, 리포트 export 3만 건 이하 사이클 30초 이내 처리
- 권한: admin / manager / member 3단계 역할, 모든 쓰기·열람 경로는 역할 검사 필수
- 데이터 보관: 리뷰 코멘트는 조직 정책에 따라 최소 2년 ~ 최대 5년 보관 후 자동 파기
- 감사: 권한 변경·템플릿 수정·export 요청은 audit log에 diff로 영구 보관
- 익명성: 피어 리뷰 결과는 선택적 익명화 지원, 매니저 뷰에서도 작성자 정보는 정책에 따라 마스킹
- 다국어: ko/en UI 동시 지원, 알림 메시지 언어는 수신자 프로필 언어로 분기
- 보안: 세션 재인증은 권한 변경 시 즉시 반영, 민감 필드(점수·코멘트)는 DB 컬럼 단위 암호화
- 접근성: WCAG 2.1 AA 수준 준수, 키보드 전체 탐색 가능
권한 매트릭스
팀핏의 권한은 admin / manager / member 3 역할 × read / write / delete / export 4 행위의 매트릭스로 정의됩니다. 모든 요청은 tRPC 미들웨어 + DB row-level security 2단계 검사를 통과해야 합니다.
| 행위 | admin | manager | member |
|---|---|---|---|
| 조직 전체 리뷰 read | ✅ 허용 | ❌ 제한 | ❌ 제한 |
| 본인 팀 리뷰 read | ✅ 허용 | ✅ 허용 | 본인 것만 |
| 템플릿 write | ✅ 허용 | ✅ 허용 | ❌ 제한 |
| 리뷰 코멘트 write | ✅ 허용(본인 역할 한정) | 본인 리뷰 | 본인 리뷰 |
| 사이클 delete | ✅ 허용 | ❌ 제한(조회만) | ❌ 제한 |
| 연간 리포트 export | ✅ 허용 | 본인 팀 범위 | ❌ 제한 |
| 권한 부여/변경 | ✅ 허용 | ❌ 제한 | ❌ 제한 |
| audit log 조회 | ✅ 허용 | ❌ 제한 | ❌ 제한 |
매트릭스 보조 규칙은 다음과 같습니다.
- export 권한은 조직 owner에 한정, 매니저는 본인 팀 범위까지만 partial export 허용.
- 리뷰어 ↔ 리뷰 대상자 본인정보 접근 규칙: 리뷰 대상자는 받은 리뷰 중 익명화 처리된 코멘트만 조회 가능.
- 권한 변경은 admin의 2-factor 재인증 이후 즉시 적용되며, 기존 세션은 전부 무효화.
- 매트릭스 변경은 audit log에 diff로 영구 기록되며, 변경자·타임스탬프·before/after가 보관됩니다.
스코프 경계
V1에서는 다음을 제외합니다.
- 외부 OKR 도구 연동(Lattice, 15Five, CultureAmp) — 핵심 가치 흐림 방지
- 익명 360 리뷰 — 초기에는 투명한 매트릭스 중심으로 신뢰도 확보 후 도입
- 연봉 조정 워크플로 — HR-ops 영역 밖, 별도 보상 관리 도구에 위임
- 급여·보너스 정보 저장 — 민감도 대비 이득 부족으로 제외
- 외부 SSO(SAML) 연동 — MVP는 Clerk 기본 인증, 엔터프라이즈는 PMF 이후
- 모바일 네이티브 앱 — 반응형 웹으로 충분, 네이티브는 수요 실증 후
- 실시간 코치봇·AI 피드백 생성 — 초기에는 사람 중심 리뷰 품질에 집중
기술 스택 & 아키텍처 개요
- Frontend: Next.js + React, Tailwind CSS, shadcn/ui 컴포넌트. 대시보드는 ISR + SWR 혼합.
- API: tRPC (타입 안전)로 권한·템플릿·사이클·리포트 API 전부 end-to-end 타입 고정.
- DB: PostgreSQL (Prisma ORM) + row-level security 활성화. 리뷰 코멘트는 컬럼 단위 암호화.
- 외부 연동: Resend(이메일), Slack API(메시지·버튼), Google Calendar(사이클 일정 옵션), Clerk(인증).
- 배포: Vercel 앱 + Supabase DB. Vercel Cron으로 자동 리마인드 스케줄링.
- 관측: OpenTelemetry trace를 Grafana Cloud로 export, 핵심 비즈니스 지표는 내부 대시보드.
주요 제약은 "개인 정보 최소 보관" 원칙입니다. 민감 필드는 컬럼 단위 암호화, 백업에도 마스킹 정책을 적용합니다. 또한 5-30인 규모 팀의 운영 리소스를 전제로 기능 수를 늘리기보다 핵심 사이클 자동화 품질을 우선하며, 엔터프라이즈 기능(대규모 SSO, 전용 데이터 리전)은 명시적으로 out-of-scope.
태스크 트리
Sprint 1 — 권한 & 리뷰 CRUD
관리자/멤버 권한 분리와 1:1 리뷰 템플릿 기본 CRUD 구현
-
[TASK-001] 관리자/멤버 권한 분리 미들웨어
DONE(complexity: 4, urgency: 5, importance: MUST)관리자(admin)와 멤버(member) 역할별 라우트 접근 제어 미들웨어 구현. 관리자는 전체 팀 리뷰 데이터를 조회할 수 있고 멤버는 자신에게 할당된 리뷰만 접근 가능하도록 tRPC 프로시저 레벨에서 권한 검사를 적용한다.
- ST-001-1: 역할 기반 미들웨어 구현
DONE - ST-001-2: 역할별 데이터 필터링 쿼리
DONE
- ST-001-1: 역할 기반 미들웨어 구현
-
[TASK-002] 1:1 리뷰 템플릿 CRUD
IN_PROGRESS(complexity: 3, urgency: 4, importance: MUST)관리자가 질문 항목을 구성하는 리뷰 템플릿 생성·수정·삭제·조회 API 구현. 템플릿은 재사용 가능한 질문 목록을 JSON 배열로 저장하며, 리뷰 사이클 생성 시 참조된다.
- ST-002-1: 템플릿 스키마 및 API 라우트
DONE - ST-002-2: 템플릿 편집 UI 컴포넌트
IN_PROGRESS
- ST-002-1: 템플릿 스키마 및 API 라우트
Sprint 2 — 자동화 & 리포트
리마인드 자동 발송 스케줄러와 연간 성과 집계 리포트 구현
-
[TASK-003] 리뷰 사이클 자동 리마인드 스케줄러
BACKLOG(complexity: 5, urgency: 4, importance: MUST)미응답 리뷰 담당자에게 마감 48시간·24시간 전 이메일·슬랙 리마인드를 자동 발송하는 스케줄러 구현. cron 기반(Vercel Cron 또는 BullMQ)과 DB polling 방식 중 cron을 선택한다 — DB polling은 고빈도 쿼리로 부하를 유발하고 발송 누락 위험이 있기 때문이다. 리마인드 발송 이력을 별도 테이블에 기록하여 중복 발송을 방지한다.
-
[TASK-004] 연간 성과 집계 리포트
BACKLOG(complexity: 4, urgency: 2, importance: SHOULD)연도별로 완료된 리뷰 사이클의 점수·코멘트를 집계하여 관리자가 CSV·PDF로 다운로드할 수 있는 연간 요약 리포트 생성. 집계 쿼리는 사이클 수가 많을 경우 성능 저하를 방지하기 위해 집계 결과를 캐시 테이블에 선계산(pre-compute)한다.
- ST-004-1: 연간 집계 쿼리 및 캐시 테이블
BACKLOG
- ST-004-1: 연간 집계 쿼리 및 캐시 테이블