docs(05-02): complete ArchiveProcessor implementation plan
This commit is contained in:
@@ -13,10 +13,10 @@
|
||||
|
||||
### 归档步骤 (Archive)
|
||||
|
||||
- [ ] **ARC-01**: 添加 ArchiveProcessor 作为管道最后一步
|
||||
- [ ] **ARC-02**: 分析完成后自动归档到最终目录
|
||||
- [ ] **ARC-03**: 归档只复制 md 文件到最终目录
|
||||
- [ ] **ARC-04**: 归档后可选清理中间文件
|
||||
- [x] **ARC-01**: 添加 ArchiveProcessor 作为管道最后一步
|
||||
- [x] **ARC-02**: 分析完成后自动归档到最终目录
|
||||
- [x] **ARC-03**: 归档只复制 md 文件到最终目录
|
||||
- [x] **ARC-04**: 归档后可选清理中间文件
|
||||
|
||||
### 最终目录结构 (Output)
|
||||
|
||||
@@ -72,10 +72,10 @@ Deferred to future release.
|
||||
| INT-01 | Phase 5 | Complete |
|
||||
| INT-02 | Phase 5 | Complete |
|
||||
| INT-03 | Phase 5 | Complete |
|
||||
| ARC-01 | Phase 5 | Pending |
|
||||
| ARC-02 | Phase 5 | Pending |
|
||||
| ARC-03 | Phase 5 | Pending |
|
||||
| ARC-04 | Phase 5 | Pending |
|
||||
| ARC-01 | Phase 5 | Complete |
|
||||
| ARC-02 | Phase 5 | Complete |
|
||||
| ARC-03 | Phase 5 | Complete |
|
||||
| ARC-04 | Phase 5 | Complete |
|
||||
| OUT-01 | Phase 5 | Pending |
|
||||
| OUT-02 | Phase 5 | Pending |
|
||||
| OUT-03 | Phase 5 | Pending |
|
||||
|
||||
+10
-7
@@ -3,14 +3,14 @@ gsd_state_version: 1.0
|
||||
milestone: v1.1
|
||||
milestone_name: Architecture Refactor
|
||||
status: executing
|
||||
stopped_at: 05-01 unified intermediate directory completed
|
||||
last_updated: "2026-03-16T15:14:10Z"
|
||||
stopped_at: Completed 05-02 ArchiveProcessor implementation
|
||||
last_updated: "2026-03-16T15:20:37.989Z"
|
||||
last_activity: 2026-03-16 — 05-01 unified intermediate directory completed
|
||||
progress:
|
||||
total_phases: 6
|
||||
completed_phases: 4
|
||||
total_plans: 12
|
||||
completed_plans: 13
|
||||
total_plans: 15
|
||||
completed_plans: 14
|
||||
percent: 8
|
||||
---
|
||||
|
||||
@@ -51,6 +51,7 @@ Progress: [█░░░░░░░░░] 8% (v1.1 milestone)
|
||||
- Trend: N/A
|
||||
|
||||
*Updated after each plan completion*
|
||||
| Phase 05 P02 | 3min | 3 tasks | 5 files |
|
||||
|
||||
## Accumulated Context
|
||||
|
||||
@@ -67,6 +68,8 @@ v1.1 decisions:
|
||||
- 中间目录统一到 `~/work/intermediate/analysis/`
|
||||
- 归档只保留 md 文件,不归档 json 文件
|
||||
- 最终目录按平台分组,不再按时间创建子目录
|
||||
- [Phase 05]: Archive step is always last in pipeline, only md files archived
|
||||
- [Phase 05]: Duplicate detection uses glob pattern *_{content_id}_analysis.md with user overwrite confirmation
|
||||
|
||||
### Blockers/Concerns
|
||||
|
||||
@@ -74,8 +77,8 @@ None.
|
||||
|
||||
## Session Continuity
|
||||
|
||||
Last session: 2026-03-16T15:14:10Z
|
||||
Stopped at: 05-01 unified intermediate directory completed
|
||||
Resume file: .planning/phases/05-archive-directory/05-01-SUMMARY.md
|
||||
Last session: 2026-03-16T15:20:37.988Z
|
||||
Stopped at: Completed 05-02 ArchiveProcessor implementation
|
||||
Resume file: None
|
||||
|
||||
**Next step:** Execute 05-02-PLAN.md
|
||||
|
||||
@@ -0,0 +1,123 @@
|
||||
---
|
||||
phase: 05-archive-directory
|
||||
plan: 02
|
||||
subsystem: pipeline
|
||||
tags: [archive, processor, md-files, pydantic]
|
||||
|
||||
# Dependency graph
|
||||
requires:
|
||||
- phase: 05-01
|
||||
provides: unified intermediate directory structure
|
||||
provides:
|
||||
- ArchiveProcessor for automatic analysis report archiving
|
||||
- ArchiveInput/ArchiveOutput schemas
|
||||
- Pipeline integration with archive as final step
|
||||
affects: [pipeline, workflow, archive]
|
||||
|
||||
# Tech tracking
|
||||
tech-stack:
|
||||
added: []
|
||||
patterns:
|
||||
- BaseProcessor pattern for new processor
|
||||
- rich.prompt.Confirm with input() fallback for user prompts
|
||||
- Glob pattern for duplicate detection
|
||||
|
||||
key-files:
|
||||
created:
|
||||
- kb_pipeline/processors/archive.py
|
||||
modified:
|
||||
- kb_pipeline/schemas.py
|
||||
- kb_pipeline/processors/__init__.py
|
||||
- kb_pipeline/pipeline.py
|
||||
- kb-workflow/kb_workflow.py
|
||||
|
||||
key-decisions:
|
||||
- "Archive is always the last step in pipeline"
|
||||
- "Only md files are archived, not json files"
|
||||
- "Duplicate detection uses glob pattern *_{content_id}_analysis.md"
|
||||
- "User confirmation for overwrite using rich.prompt with fallback"
|
||||
|
||||
patterns-established:
|
||||
- "ArchiveProcessor follows BaseProcessor pattern exactly"
|
||||
- "Idempotent execution via state_manager.is_step_completed check"
|
||||
- "State recording via mark_step_completed/mark_step_failed"
|
||||
|
||||
requirements-completed: [ARC-01, ARC-02, ARC-03, ARC-04]
|
||||
|
||||
# Metrics
|
||||
duration: 3min
|
||||
completed: 2026-03-16
|
||||
---
|
||||
|
||||
# Phase 5 Plan 2: ArchiveProcessor Implementation Summary
|
||||
|
||||
**ArchiveProcessor as pipeline final step, auto-archiving analysis.md to platform-organized archive directory with duplicate detection**
|
||||
|
||||
## Performance
|
||||
|
||||
- **Duration:** 3 min
|
||||
- **Started:** 2026-03-16T15:17:01Z
|
||||
- **Completed:** 2026-03-16T15:20:00Z
|
||||
- **Tasks:** 3
|
||||
- **Files modified:** 5
|
||||
|
||||
## Accomplishments
|
||||
|
||||
- ArchiveInput/ArchiveOutput schemas with proper Pydantic validation
|
||||
- ArchiveProcessor with idempotent execution and duplicate detection
|
||||
- Pipeline integration with archive as final step in default workflow
|
||||
- User confirmation for overwrite using rich.prompt with input() fallback
|
||||
|
||||
## Task Commits
|
||||
|
||||
Each task was committed atomically:
|
||||
|
||||
1. **Task 1: Create ArchiveInput and ArchiveOutput schemas** - `9c74f51` (feat)
|
||||
2. **Task 2: Implement ArchiveProcessor** - `63dd882` (feat)
|
||||
3. **Task 3: Integrate ArchiveProcessor into Pipeline** - `d1497ca` (feat)
|
||||
|
||||
**Plan metadata:** pending
|
||||
|
||||
## Files Created/Modified
|
||||
|
||||
- `kb_pipeline/schemas.py` - Added ArchiveInput, ArchiveOutput schemas and updated PipelineConfig default steps
|
||||
- `kb_pipeline/processors/archive.py` - New ArchiveProcessor class with process(), _find_existing_archive(), _ask_overwrite()
|
||||
- `kb_pipeline/processors/__init__.py` - Export ArchiveProcessor
|
||||
- `kb_pipeline/pipeline.py` - Added ArchiveInput handling and archive_file/skipped result recording
|
||||
- `kb-workflow/kb_workflow.py` - Added ArchiveProcessor to processors list
|
||||
|
||||
## Decisions Made
|
||||
|
||||
- Archive step placed last in pipeline (after analyze)
|
||||
- Only md files copied (json files remain in intermediate directory)
|
||||
- Glob pattern `*_{content_id}_analysis.md` for duplicate detection
|
||||
- File naming: `{YYYYMMDD}_{content_id}_analysis.md`
|
||||
|
||||
## Deviations from Plan
|
||||
|
||||
None - plan executed exactly as written.
|
||||
|
||||
## Issues Encountered
|
||||
|
||||
None - all verifications passed on first attempt.
|
||||
|
||||
## User Setup Required
|
||||
|
||||
None - no external service configuration required.
|
||||
|
||||
## Next Phase Readiness
|
||||
|
||||
- Archive functionality complete and integrated
|
||||
- Ready for next phase plan (05-03) or other phases
|
||||
- All ARC requirements (ARC-01 through ARC-04) satisfied
|
||||
|
||||
## Self-Check: PASSED
|
||||
|
||||
- [x] kb_pipeline/processors/archive.py exists
|
||||
- [x] Commit 9c74f51 exists
|
||||
- [x] Commit 63dd882 exists
|
||||
- [x] Commit d1497ca exists
|
||||
|
||||
---
|
||||
*Phase: 05-archive-directory*
|
||||
*Completed: 2026-03-16*
|
||||
Reference in New Issue
Block a user