mirror of
https://github.com/panatgithub/AnkiHeadingSync.git
synced 2026-07-22 06:51:43 +00:00
70 lines
No EOL
3.5 KiB
Markdown
70 lines
No EOL
3.5 KiB
Markdown
# Clear Current File Full-Coverage Gap Report
|
|
|
|
## Scope reviewed
|
|
|
|
- `src/application/use-cases/ClearCurrentFileSyncedCardsUseCase.ts`
|
|
- `src/application/services/MarkdownMarkerRemovalService.ts`
|
|
- `src/domain/manual-sync/services/CardMarkerRemovalService.ts`
|
|
- `src/domain/manual-sync/services/GroupMarkerService.ts`
|
|
- `src/domain/manual-sync/entities/PluginState.ts`
|
|
- `src/application/use-cases/cleanupResetTypes.ts`
|
|
- `src/presentation/notices/NoticeService.ts`
|
|
- `src/application/use-cases/ClearCurrentFileSyncedCardsUseCase.test.ts`
|
|
- related write-back/state flow in `MarkdownWriteBackService` and `QaGroupSyncService`
|
|
|
|
## Confirmed current behavior
|
|
|
|
### 1. Current clear command only tracks normal cards
|
|
|
|
- `ClearCurrentFileSyncedCardsUseCase` only calls `collectTrackedCards(state, filePath)`.
|
|
- `collectTrackedCards(...)` only reads `state.files[filePath]?.noteIds` and `state.cards` fallback.
|
|
- `state.files[filePath]?.groupIds` and `state.groupBlocks` are ignored entirely.
|
|
|
|
### 2. Current marker removal is ID-only
|
|
|
|
- `MarkdownMarkerRemovalService` delegates only to `CardMarkerRemovalService`.
|
|
- `CardMarkerRemovalService` only removes `<!--ID: ...-->` markers by `noteId`.
|
|
- There is no application-layer remover that also consumes `GroupMarkerService` and strips `<!--GI: ...-->`.
|
|
|
|
### 3. Current local cleanup only clears card records
|
|
|
|
- `buildNextState(...)` deletes matching `state.cards` entries and the file entry in `state.files`.
|
|
- It does not delete `state.groupBlocks` for the same file.
|
|
- `pendingWriteBack` cleanup currently filters by both `pending.filePath !== filePath` and tracked note keys, which is narrower than the required file-scoped clear semantics.
|
|
- Because `group-gi` pending entries are file-scoped and may not map cleanly through the tracked-note filter, current cleanup is incomplete for group writes.
|
|
|
|
### 4. Current result type and notice summary assume only normal cards
|
|
|
|
- `ClearCurrentFileSyncedCardsResult` only exposes `trackedCards`, `deletedNotes`, `removedMarkers`, `deletedLocalRecords`, `conflictFiles`, and `failureFiles`.
|
|
- `NoticeService.showClearCurrentFileSummary(...)` renders only one tracked-card count and one removed-marker total.
|
|
- A file containing only QA Group state would currently produce misleading summary output.
|
|
|
|
### 5. State model already supports the missing routes
|
|
|
|
- `PluginState` already contains `groupBlocks` and `FileState.groupIds`.
|
|
- `PendingWriteBackState` already has `markerKind?: "card-id" | "group-gi"` and `targetGroupId`.
|
|
- `MarkdownWriteBackService` already persists `group-gi` pending entries and `QaGroupSyncService` already writes GI markers.
|
|
- This confirms the bug is in the clear-current-file command path, not in the underlying state model.
|
|
|
|
### 6. Current tests only cover normal cards
|
|
|
|
- `ClearCurrentFileSyncedCardsUseCase.test.ts` covers:
|
|
- normal-card clear success
|
|
- empty-file result
|
|
- ID-marker conflict handling
|
|
- It does not cover:
|
|
- semantic QA child cards
|
|
- QA Group GI markers
|
|
- mixed files
|
|
- group conflict behavior
|
|
- `group-gi` pending cleanup
|
|
|
|
## Gap versus required behavior
|
|
|
|
- Missing tracked group collection from `groupIds` and `groupBlocks` fallback.
|
|
- Missing unified marker removal for both `ID` and `GI` markers.
|
|
- Missing group-block deletion from local state.
|
|
- Missing file-scoped pending cleanup for all entries in the cleared file.
|
|
- Missing result fields for group-specific stats.
|
|
- Missing notice summary split for card markers vs group markers.
|
|
- Missing regression coverage for semantic QA, QA Group, mixed files, group conflicts, and pending cleanup. |