95 lines
5.4 KiB
Markdown
95 lines
5.4 KiB
Markdown
# 제보 응답 검토 프로세스
|
||
|
||
홀로도리 계산기의 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
|
||
```
|
||
|
||
변경과 직접 관련된 추가 테스트가 있으면 함께 실행한다. 어느 단계든 실패하면 완료로 보고하지 않으며, 자동으로 커밋·푸시·배포하지 않는다.
|
||
|
||
## 매일 알림 형식
|
||
|
||
- 신규 응답 수: 실측값 / 버그 / 기능
|
||
- 실측값: 반영 완료, 보류, 충돌, 검증 실패 각각의 건수와 근거
|
||
- 버그: 우선순위별 제목, 재현 결과, 수정·보류 상태와 검증 결과
|
||
- 기능: 묶음별 제안, 자동 구현·승인 대기 상태와 검증 결과
|
||
- 필요한 사용자 판단: 선택이 필요한 항목만 별도 표시
|
||
- 신규 응답이 없으면 짧게 `신규 제보 없음`으로 보고
|