docs(09-01): complete ZhihuAdapter integration plan

- Integrated ZhihuCrawler into ZhihuAdapter
- Added comment crawling and formatting
- Implemented cookie auto-login flow
- Added idempotent execution via IdempotencyChecker

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-17 23:17:39 +08:00
parent 76f06c330b
commit 248a1f2b8c
3 changed files with 133 additions and 14 deletions
@@ -0,0 +1,115 @@
---
phase: 09-pipeline-integration
plan: 01
subsystem: pipeline
tags: [zhihu, crawler, adapter, comments, idempotency, cookie, qrcode-login]
# Dependency graph
requires:
- phase: 08-crawler
provides: ZhihuCrawler class with crawl_answer, crawl_article, crawl_comments methods
- phase: 07-login-auth
provides: ZhihuLogin class with QR code login flow
provides:
- ZhihuAdapter integration with ZhihuCrawler
- Comment crawling and formatting
- Cookie expiration auto-detection and login
- Idempotent execution via IdempotencyChecker
affects: [download-processor, pipeline-orchestrator]
# Tech tracking
tech-stack:
added: [html2text]
patterns: [async-to-thread for sync crawlers, mock-based testing, idempotency via file existence]
key-files:
created: []
modified:
- kb_workflow/pipeline/platforms/zhihu.py
- tests/test_platforms/test_zhihu.py
key-decisions:
- "ZhihuAdapter uses ZhihuCrawler instead of ZhihuPlaywrightExtractor"
- "Comments included by default with include_comments=True"
- "Cookie expiration triggers QR code login with 2-minute timeout"
- "Idempotency check via IdempotencyChecker when output_dir is set"
patterns-established:
- "Pattern: async-to-thread wrapper for sync crawler methods"
- "Pattern: comment formatting with numbered list and author mentions"
- "Pattern: cookie expiration detection via error message keywords"
requirements-completed: [PIPE-01, PIPE-02, PIPE-03]
# Metrics
duration: 11min
completed: 2026-03-17
---
# Phase 09 Plan 01: ZhihuAdapter Integration Summary
**ZhihuAdapter integrated with ZhihuCrawler, supporting comment crawling, cookie auto-login, and idempotent execution**
## Performance
- **Duration:** 11 min
- **Started:** 2026-03-17T15:04:22Z
- **Completed:** 2026-03-17T15:15:11Z
- **Tasks:** 3
- **Files modified:** 2
## Accomplishments
- ZhihuAdapter now uses ZhihuCrawler instead of ZhihuPlaywrightExtractor
- Comments are included by default and appended to content in Markdown format
- Cookie expiration triggers automatic QR code login flow
- Idempotent execution via IdempotencyChecker when output_dir is configured
## Task Commits
Each task was committed atomically:
1. **Task 1: Update ZhihuAdapter to use ZhihuCrawler** - `76f06c3` (feat)
- Includes Task 2 (Cookie auto login) and Task 3 (Comment formatting + idempotency)
**Plan metadata:** (to be committed after this summary)
_Note: All three tasks were completed in a single commit due to tight integration between the components_
## Files Created/Modified
- `kb_workflow/pipeline/platforms/zhihu.py` - Core adapter implementation with ZhihuCrawler integration
- `tests/test_platforms/test_zhihu.py` - Complete test suite with 19 passing tests
## Decisions Made
- Used ZhihuCrawler for content extraction (replacing ZhihuPlaywrightExtractor)
- Comments included by default (include_comments=True)
- Cookie expiration detected via error message keywords (login, expired, etc.)
- QR code login with 2-minute timeout and visible browser window
- HTML to Markdown conversion using html2text library
## Deviations from Plan
None - plan executed exactly as written. All three tasks were integrated into a single implementation because:
1. Task 1 requires TDD tests that cover Task 2 and Task 3 scenarios
2. Cookie handling and comment formatting are integral parts of the adapter implementation
3. Separating commits would require partial/incomplete code
## Issues Encountered
**Missing dependency (Rule 3 - Blocking):** html2text package was not installed in the virtual environment. Fixed by installing via `pip install html2text`.
## User Setup Required
None - no external service configuration required beyond the existing Zhihu cookie setup.
## Next Phase Readiness
- ZhihuAdapter is ready for integration with DownloadProcessor
- All 19 tests passing, covering:
- Basic content type detection
- Metadata and content fetching
- Cookie handling and auto-login
- Comment formatting
- Idempotency
---
*Phase: 09-pipeline-integration*
*Completed: 2026-03-17*