Files
HolodoriCalc/docs/feedback-review-process.md
dal4segno c0f4060dec
Publish GitHub Pages output / publish (push) Successful in 34s
feat: apply feedback updates and streamline online delivery
2026-09-01 22:21:45 +09:00

95 lines
5.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 제보 응답 검토 프로세스
홀로도리 계산기의 Google Form 세 종류를 매일 한 번 확인한다.
- 실측값 제보: `https://docs.google.com/forms/d/1bShzsxNN-iTk0uU3RfMfmLkYXYmUTmIWMmCtQmfl_Ik`
- 버그 제보: `https://docs.google.com/forms/d/1z9c0c1crbCO6avXaYwrHZjhw2ib3zgAmW4ijJDTo4DM`
- 기능 건의: `https://docs.google.com/forms/d/16NcTst7Rpa9XzqYIfPa4t9JF2X0CMfYzEbZrT8PLqco`
응답은 다음 Google Sheets에서 읽는다. 세 파일 모두 Google Drive 연결 계정에서 접근 가능해야 한다.
- 실측값 응답: `https://docs.google.com/spreadsheets/d/16152xv_1vWnVLSdjE3dCg_jL8fwdwwCUpYMi6fWCg1Q/edit?gid=452258967#gid=452258967`
- 버그 응답: `https://docs.google.com/spreadsheets/d/1XspUqVqHGJmaxQr4s8Uek9pIQMS-Vr3H71H3S82ZMvY/edit?gid=581733973#gid=581733973`
- 기능 건의 응답: `https://docs.google.com/spreadsheets/d/1GroTH_5KtrMQqRt8zvtLcrop-hwD_FVo6w7ZxVS00Qw/edit?gid=1159328779#gid=1159328779`
## 공통 처리
1. `data/feedback-review-state.local.json`의 마지막 처리 시각 이후 응답만 가져온다. 이 파일은 `data/*` 규칙으로 Git에서 제외된다.
2. Form 응답 시각과 행 번호 또는 안정적인 응답 식별자를 함께 기록해 재실행 때 중복 처리하지 않는다.
3. 개인정보와 첨부 원본은 사용자에게 전달하는 요약에 넣지 않는다. 재현과 판단에 필요한 내용만 최소한으로 적는다.
4. 접근 실패나 열 형식 변경이 있으면 데이터를 추정하지 않고 사용자에게 막힌 지점을 알린다.
5. 처리가 끝난 응답까지만 상태 파일의 워터마크를 전진시킨다.
## 실측값 제보
다음 조건을 모두 만족한 제보만 반영 후보로 취급한다.
- 악곡 ID와 난이도가 현재 카탈로그에 존재한다.
- 종합력, 악곡 직접 스코어 보너스, 일반 PERFECT 1노트 점수가 양의 유한 숫자다.
- 스크린샷 등 제보 근거에서 입력 숫자를 교차 확인할 수 있다.
- 동일 조건의 기존 실측과 충돌하지 않는다. 충돌하면 어느 쪽도 자동 반영하지 않고 사용자에게 알린다.
- 보정 비율로 모든 해당 악곡 실측값의 1노트 점수를 정확히 재현한다.
한 실측값으로 새 보정 비율을 만드는 경우 기존 데이터와 같은 식을 사용한다.
```text
scoreRatio = overallPower × (1 + directSongScoreBonusPercent / 100) / normalPerfectScore
```
승인 가능한 제보는 `data/score-calibrations.json`에 측정값을 추가하거나 보정 항목을 만든 뒤 아래 순서로 검증한다.
```powershell
npm run data:validate-score-calibrations
npm run data:apply-score-calibrations
npm run test:engine
npm run check
npm run build
```
어느 단계든 실패하면 변경을 서비스 반영 완료로 표시하지 않는다. 검증이 모두 통과하면 변경 파일과 근거, 검산 결과를 사용자에게 요약한다. 자동 커밋·푸시·배포는 하지 않는다.
## 버그 제보
신규 버그를 재현 가능성, 영향 범위, 중복 여부로 묶는다. 재현할 수 있고 수정 범위가 명확한 버그는 원인을 확인한 뒤 최소 변경으로 직접 수정하고 회귀 테스트를 추가한다. 수정 후 공통 검증 절차를 모두 통과해야만 수정 완료로 보고한다.
다음 경우에는 코드를 변경하지 않고 조사 결과와 필요한 판단을 사용자에게 알린다.
- 재현 정보가 부족하거나 원인을 신뢰성 있게 특정할 수 없다.
- 여러 기능의 동작 정책, 데이터 모델 또는 대규모 구조 변경이 필요하다.
- 외부 서비스 변경, 데이터 마이그레이션, 보안·개인정보 판단이 필요하다.
- 기존 사용자 변경과 충돌해 안전하게 분리할 수 없다.
우선순위는 다음처럼 분류한다.
- 긴급: 데이터 손실, 계산 결과의 중대한 오류, 서비스 사용 불가
- 높음: 주요 기능 실패 또는 넓은 사용자 영향
- 보통: 우회 가능한 기능 오류
- 낮음: 표시 문제, 경미한 불편, 재현 정보 부족
## 기능 건의
유사 건의를 하나로 묶고 사용자 문제, 기대 효과, 예상 영향 범위를 판단한다. 요구사항이 명확하고 기존 설계 안에서 작고 되돌릴 수 있게 구현 가능한 기능은 직접 구현하고 회귀 테스트와 공통 검증 절차를 실행한다.
UI 전면 변경, 새로운 제품 정책, 데이터 구조 변경, 외부 의존성 도입처럼 선택에 따라 결과가 크게 달라지는 기능은 구현안과 예상 변경 범위를 먼저 사용자에게 보고하고 승인을 기다린다.
## 코드 변경 공통 검증
버그 수정 또는 기능 구현 후 다음 명령을 순서대로 실행한다.
```powershell
npm run test:engine
npm run check
npm run build
```
변경과 직접 관련된 추가 테스트가 있으면 함께 실행한다. 어느 단계든 실패하면 완료로 보고하지 않으며, 자동으로 커밋·푸시·배포하지 않는다.
## 매일 알림 형식
- 신규 응답 수: 실측값 / 버그 / 기능
- 실측값: 반영 완료, 보류, 충돌, 검증 실패 각각의 건수와 근거
- 버그: 우선순위별 제목, 재현 결과, 수정·보류 상태와 검증 결과
- 기능: 묶음별 제안, 자동 구현·승인 대기 상태와 검증 결과
- 필요한 사용자 판단: 선택이 필요한 항목만 별도 표시
- 신규 응답이 없으면 짧게 `신규 제보 없음`으로 보고