Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/catalog.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ jobs:
- name: Lint frontend
run: npm run frontend:lint

- name: Test Preflight rules
run: npm run frontend:test

- name: Build frontend
run: npm run frontend:build

Expand Down
20 changes: 17 additions & 3 deletions docs/preflight.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,33 +16,47 @@ GitHub Pages는 정적 호스팅이므로 TXT 본문을 서버로 업로드하
- 보기 의존 표현
- 부정형 객관식 흔적
- 끝이 끊긴 OX 문장
- OX 뒷면이 `O` 또는 `X`가 아닌 카드
- 학습용 파일에 들어온 `[기출]` fallback과 미확정 정답
- 지나치게 긴 앞면 또는 뒷면
- 과도하게 긴 정답 목록
- 항목 수와 문장 길이를 함께 본 고부하 정답 목록
- 맥락 없이 남은 수치 정답의 단위 누락
- `n가지` 질문과 정답 항목 수 불일치
- 같은 앞면의 중복 또는 상충 정답
- 중복 ref와 최종 TXT에 노출된 내부 source 메타데이터
- 입력 파일 지문: 내용 해시, 비어 있지 않은 줄 수, 첫/마지막 ref

부정형 객관식 흔적은 `다음 중`, `보기`, `해당하지 않는 것은?`, `아닌 것은?`처럼 선택지 기반 오답이 남은 경우를 우선 잡습니다. 상황 설명 안에 들어간 `적합하지 않게 시공한 경우` 같은 부정어는 단독으로 잡지 않습니다.

`기준은?`, `사항은?` 같은 모호한 질문은 앞면이 짧고 대상 맥락이 부족한 경우를 우선 잡습니다. 수치, 약어, 설비명, 법적 기준처럼 회상 축이 분명한 문항은 과민하게 잡지 않도록 조정합니다.

파일명으로 산출물 역할도 구분합니다.

- `*_최종.txt`: 원본 coverage 파일. fallback과 미확정 정답은 경고로 표시합니다.
- `*_학습용.txt`: 실제 import 파일. fallback과 미확정 정답을 오류로 표시합니다.
- `*_이미지.txt`: 미디어가 결합된 학습 파일로 취급합니다.

짧은 약어 목록은 자동 오류로 처리하지 않습니다. 예를 들어 `무선 다원 접속 방식 3가지는?;FDMA / TDMA / CDMA;`는 정상 카드이며, 확장명 설명은 선택적인 학습 보조 정보입니다.

## 사용 흐름

1. `/preflight/`를 엽니다.
2. Anki TXT 파일을 업로드하거나 본문을 붙여넣습니다.
3. 검수를 실행합니다.
4. 검수 요약의 `전체 이슈 MD 복사`로 입력 파일 지문과 자동 검출된 모든 이슈를 AI에게 전달할 수 있습니다.
4. 검수 요약의 `현재 필터 MD 복사`로 필요한 이슈만 AI에게 전달하거나, `전체 이슈 MD 저장`으로 큰 결과를 파일로 보관합니다.
5. 과목 분포 그래프로 특정 과목에 카드가 과하게 몰렸는지 확인합니다.
6. 자동 검출 목록에서 `검출 이슈`와 `이슈 없는 문항`을 10개씩 번갈아 확인합니다.
7. 각 카드 아래의 사유 버튼을 누르면 선택한 문항이 즉시 복사 대기로 이동합니다.
8. `ANKI_REVIEW_FIX_REQUEST`, TSV, JSON 리포트 중 필요한 형식으로 저장하거나 복사합니다.

붙여넣은 TXT는 서버로 전송하지 않으며 현재 브라우저의 로컬 저장소에 임시 보관됩니다. `초기화`를 누르면 저장된 입력도 함께 삭제됩니다.

## 로컬 CLI

대량 자동 검사는 별도 로컬 패키지에서 수행할 수 있습니다.

```text
C:\Users\Holick\Desktop\Files\TASKS\PROJECTS\anki_deck_preflight
C:\Users\Holick\Desktop\Files\TASKS\PROJECTS\anki\tools\anki_deck_preflight
```

```powershell
Expand Down
3 changes: 3 additions & 0 deletions frontend/next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ const nextConfig = {
trailingSlash: true,
basePath: isGitHubPages ? "/deckhub" : undefined,
assetPrefix: isGitHubPages ? "/deckhub/" : undefined,
turbopack: {
root: __dirname,
},
images: {
unoptimized: true,
},
Expand Down
Loading
Loading