fix(lifecycle): NoteStatus 의 archived 제거 — MoveStatusModal/classifyStatus/store 정리

- NoteStatus 에서 'archived' 제거 (active | completed | trashed 3분기)
- MoveStatusModal ALL_STATUSES 에서 'archived' 제거 + statusLabel switch 정리
- classifyStatus VALID/FALLBACK/PROMPT 에서 archived 제거 → completed fallback
- inboxApi IPC set-status VALID 배열에서 archived 제거, classify-status fallback → completed
- store InboxView 에서 'archived' 제거, InboxCounts.archived 제거, archived: 0 spread 제거
- ImportService.applySyncFromDir — 기존 파일의 status=archived 를 completed 로 coerce
- 영향 받는 tests 13개 파일 모두 update (archived → completed, 없어진 UI 옵션 제거)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
th-kim0823
2026-05-15 11:03:09 +09:00
parent 96174f84c9
commit 274c171ee8
13 changed files with 78 additions and 94 deletions

View File

@@ -28,7 +28,7 @@ describe('classifyStatus', () => {
expect(r.rationale).toBe('처리됨');
});
it('falls back to archived on parse failure (invalid JSON)', async () => {
it('falls back to completed on parse failure (invalid JSON)', async () => {
const provider = makeProvider(vi.fn(async () => 'not json'));
const r = await classifyStatus({
provider,
@@ -36,11 +36,11 @@ describe('classifyStatus', () => {
summary: '',
reason: 'r'
});
expect(r.recommended).toBe('archived');
expect(r.recommended).toBe('completed');
expect(r.rationale).toMatch(/판단 실패|보관/);
});
it('falls back to archived on invalid status value', async () => {
it('falls back to completed on invalid status value', async () => {
const provider = makeProvider(
vi.fn(async () => '{"recommended":"unknown","rationale":"x"}')
);
@@ -50,7 +50,7 @@ describe('classifyStatus', () => {
summary: '',
reason: 'r'
});
expect(r.recommended).toBe('archived');
expect(r.recommended).toBe('completed');
});
it('handles provider throw', async () => {
@@ -65,7 +65,7 @@ describe('classifyStatus', () => {
summary: '',
reason: 'r'
});
expect(r.recommended).toBe('archived');
expect(r.recommended).toBe('completed');
expect(r.rationale).toMatch(/판단 실패|보관/);
});
@@ -77,13 +77,13 @@ describe('classifyStatus', () => {
summary: '',
reason: 'r'
});
expect(r.recommended).toBe('archived');
expect(r.recommended).toBe('completed');
expect(r.rationale).toMatch(/판단 실패|보관/);
});
it('substitutes empty inputs with placeholder text in prompt', async () => {
const generateRaw = vi.fn(
async (_p: string) => '{"recommended":"archived","rationale":"ok"}'
async (_p: string) => '{"recommended":"completed","rationale":"ok"}'
);
const provider = makeProvider(generateRaw);
await classifyStatus({ provider, rawText: '', summary: '', reason: '' });