docs(spec): promote F7 AI-primary due date
신규 spec 파일 추가 (구현 결과 반영). dogfood-feedback.md 의 F7 헤더 🔬 drafting → 🚀 promoted 로 갱신. F1 spec 의 후속 리스트에 F7 링크 추가. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit was merged in pull request #11.
This commit is contained in:
@@ -816,7 +816,9 @@ slice §1.3 종료 조건 ("크래시 0회") 와 별개로, **"데이터 손실
|
||||
|
||||
---
|
||||
|
||||
## F7. Due Date 규칙 파서가 합성 표현을 first-match-wins 로 오인 (🔬 drafting)
|
||||
## F7. Due Date 규칙 파서가 합성 표현을 first-match-wins 로 오인 (🚀 promoted)
|
||||
|
||||
**진행 상태:** 🚀 promoted (D AI-primary 채택) → `docs/superpowers/specs/2026-04-26-f7-ai-primary-due-date.md`
|
||||
|
||||
**발견:** 2026-04-26 v0.2.1 dogfood 첫 사이클. 본문에 `"내일 모레"` 가 들어간 노트가 due_date = 내일 (today + 1) 로 추출됨. 사용자 의도는 "모레" 또는 "이틀 안" 정도의 모호 표현.
|
||||
|
||||
|
||||
@@ -39,12 +39,13 @@
|
||||
|
||||
## 후속 (별 spec 또는 후속 항목 후보)
|
||||
|
||||
- **F7 AI-primary due_date flow** (🚀 promoted 2026-04-26) → `docs/superpowers/specs/2026-04-26-f7-ai-primary-due-date.md` — 본 spec 의 "rule 우선 → AI fallback" 흐름을 "AI 우선 + rule 은 prompt 후보 힌트" 로 반전. `'내일 모레'` first-match-wins 한계 해소
|
||||
- 별도 due 뷰 / 정렬 / 필터
|
||||
- 만료 자동 처리 (자동 done 또는 자동 알림)
|
||||
- 시각 단위 (오후 3시, 23:30 등) 처리
|
||||
- 음력 / 절기
|
||||
- 반복 일정 (매주 월요일, 매월 1일 등)
|
||||
- 외부 캘린더 연동 (Google / Apple Calendar)
|
||||
- 다중 매칭 처리 (현재는 first-match-wins; 가장 가까운 / 가장 명확한 등 옵션)
|
||||
- 다중 매칭 처리 (현재는 first-match-wins; 가장 가까운 / 가장 명확한 등 옵션) — F7 으로 일부 해결
|
||||
- AI 매칭 confidence 표시 (medium 일 때 사용자에게 "확실하지 않음" 힌트)
|
||||
- 시각 표시 옵션 (D-day 카운터 등)
|
||||
|
||||
44
docs/superpowers/specs/2026-04-26-f7-ai-primary-due-date.md
Normal file
44
docs/superpowers/specs/2026-04-26-f7-ai-primary-due-date.md
Normal file
@@ -0,0 +1,44 @@
|
||||
# F7 AI-Primary Due Date Spec (Promoted)
|
||||
|
||||
**Extracted from:** `2026-04-25-dogfood-feedback.md` F7
|
||||
**Plan:** `docs/superpowers/plans/2026-04-26-f7-ai-primary-due-date.md`
|
||||
**Status:** 🚀 promoted — implemented 2026-04-26
|
||||
|
||||
## 결정 (mini-brainstorm 결과)
|
||||
|
||||
| 결정 | 값 | 근거 |
|
||||
|------|-----|------|
|
||||
| Flow 반전 | AI 우선 + rule 은 prompt 후보 힌트 | F7 D 채택 |
|
||||
| AI 실패 시 fallback | 없음 (due_date null) | 단순화, setDueDate ambiguity 회피 |
|
||||
| 후보 주입 | `parseAllCandidates` 가 모든 high+medium 매치를 prompt 에 list 로 주입 | AI 종합 판단 |
|
||||
| `parseDueDate` 보존 | YES (backward compat, 후속 spec 에서 deprecate 결정) | 비파괴 |
|
||||
| schema 변경 | 없음 | 기존 컬럼 재사용 |
|
||||
| confidence DB 저장 | 미저장 | F7 §C 후속 |
|
||||
| PROMPT_VERSION | 3 (semantic 변경) | hints 추가 |
|
||||
|
||||
## 범위 (PR 안에 포함됨)
|
||||
|
||||
- `src/main/services/dueDateParser.ts` — `parseAllCandidates` 신규 + 기존 `parseDueDate` 보존 (overlapping-span suppression 포함)
|
||||
- `src/main/ai/prompt.ts` — `buildPrompt(rawText, todayKst, candidates)` 확장, `PROMPT_VERSION = 3`
|
||||
- `src/main/ai/InferenceProvider.ts` — `GenerateInput.dueDateCandidates: ParseResult[]`
|
||||
- `src/main/ai/LocalOllamaProvider.ts` — pass-through
|
||||
- `src/main/ai/AiWorker.ts` — flow 반전 (rule.iso ?? ai → ai.dueDate ?? null), `dueDateSource: 'ai' | 'none'` + `candidatesCount` 로깅
|
||||
- 테스트 — `parseAllCandidates` 7 + AiWorker flip 1 + 신규 candidates 주입 검증 1, LocalOllamaProvider sig 동기화
|
||||
|
||||
## 동작 변화 요약
|
||||
|
||||
| 입력 | 기존 (F1) | 신규 (F7) |
|
||||
|------|----------|----------|
|
||||
| `'내일 회의'` + AI=`'2026-12-31'` | `'2026-04-27'` (rule 우선) | `'2026-12-31'` (AI 우선) |
|
||||
| `'내일 모레 회의'` + AI=`null` | `'2026-04-27'` (rule first-match) | `null` (AI 가 ambiguous 인지) |
|
||||
| `'월말 마감'` + AI=`'2026-04-30'` | `'2026-04-30'` (rule null → AI) | `'2026-04-30'` (AI) |
|
||||
| 매치 없음 + AI=`null` | `null` | `null` |
|
||||
| AI 실패 (3 retry exhausted) | `markAiFailed` (due_date 그대로) | `markAiFailed` (due_date 그대로 — 별 fallback 없음) |
|
||||
|
||||
## 후속 (F7 §C / D / E 의 다른 부분)
|
||||
|
||||
- F7 §C: confidence + matched span 을 DB 에 저장 + UI `?` 표시
|
||||
- F7 §A·B (즉시 화이트리스트 + 충돌 감지) — D 채택으로 사실상 자연 해결
|
||||
- E (rule 폐기): `parseAllCandidates` deprecate 가 별 단계
|
||||
- AI uptime / 수용률 데이터 1주 누적 후 D 의 안정성 평가
|
||||
- `parseDueDate` 의 deprecate 시점: `parseAllCandidates` 로 모든 호출 마이그레이션 후
|
||||
Reference in New Issue
Block a user