From e8eaca519f24846b4ea19cf5c5e8fd5dc9f432b7 Mon Sep 17 00:00:00 2001 From: starmen1265 Date: Tue, 17 Mar 2026 18:24:32 +0800 Subject: [PATCH] docs(07-03): complete Login CLI Subcommand plan - Cookie validation via /api/v4/me endpoint - login CLI subcommand with 3 modes: scan, import, status - AUTH-04 requirement complete: Cookie expiry detection - Phase 7 Login Auth complete, ready for Phase 8 Crawler Co-Authored-By: Claude Opus 4.6 --- .planning/REQUIREMENTS.md | 4 +- .planning/STATE.md | 38 +++--- .../phases/07-login-auth/07-03-SUMMARY.md | 128 ++++++++++++++++++ 3 files changed, 150 insertions(+), 20 deletions(-) create mode 100644 .planning/phases/07-login-auth/07-03-SUMMARY.md diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md index fcc3440..a3e903f 100644 --- a/.planning/REQUIREMENTS.md +++ b/.planning/REQUIREMENTS.md @@ -12,7 +12,7 @@ - [x] **AUTH-01**: 用户可通过二维码扫码登录知乎 - [x] **AUTH-02**: 用户可手动设置 Cookie 进行认证 - [x] **AUTH-03**: Cookie 自动持久化到本地文件,下次自动复用 -- [ ] **AUTH-04**: Cookie 过期时自动检测并提示重新登录 +- [x] **AUTH-04**: Cookie 过期时自动检测并提示重新登录 ### 内容爬取 @@ -114,7 +114,7 @@ | AUTH-01 | Phase 7 | Complete | | AUTH-02 | Phase 7 | Complete | | AUTH-03 | Phase 7 | Complete | -| AUTH-04 | Phase 7 | Pending | +| AUTH-04 | Phase 7 | Complete | | CONT-01 | Phase 8 | Pending | | CONT-02 | Phase 8 | Pending | | CONT-03 | Phase 8 | Pending | diff --git a/.planning/STATE.md b/.planning/STATE.md index 32b85ae..0daf943 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -3,15 +3,15 @@ gsd_state_version: 1.0 milestone: v1.2 milestone_name: Zhihu Crawler status: executing -stopped_at: Plan 07-01 complete -last_updated: "2026-03-17T10:05:00.000Z" -last_activity: 2026-03-17 — Plan 07-01 QR Code Login Core +stopped_at: Phase 07 complete +last_updated: "2026-03-17T10:45:00.000Z" +last_activity: 2026-03-17 — Phase 07 Login Auth complete progress: total_phases: 9 - completed_phases: 6 + completed_phases: 7 total_plans: 21 - completed_plans: 20 - percent: 95 + completed_plans: 21 + percent: 100 --- # Project State @@ -25,24 +25,25 @@ See: .planning/PROJECT.md (updated 2026-03-17) ## Current Position -Phase: 7 of 9 (登录认证体系) -Plan: 01 of 03 (QR Code Login Core complete) -Status: Plan 07-01 complete, continuing to 07-02 -Last activity: 2026-03-17 — Plan 07-01 QR Code Login Core +Phase: 8 of 9 (Crawler - 爬虫核心) +Plan: 01 of 03 +Status: Phase 07 complete, ready for Phase 08 +Last activity: 2026-03-17 — Phase 07 Login Auth complete -Progress: [█████████░] 95% (v1.2 milestone) +Progress: [██████████] 100% (v1.2 milestone - Phase 7 complete) ## Performance Metrics **Velocity:** -- Total plans completed: 2 (v1.2) -- Average duration: 10 min -- Total execution time: 20 min +- Total plans completed: 3 (v1.2) +- Average duration: 11 min +- Total execution time: 32 min | Plan | Duration | Tasks | Files | Date | |------|----------|-------|-------|------| | 07-01 | 15min | 2 | 5 | 2026-03-17 | | 07-02 | 5min | 2 | 4 | 2026-03-17 | +| 07-03 | 12min | 3 | 4 | 2026-03-17 | ## Accumulated Context @@ -69,6 +70,7 @@ v1.2 decisions: - 保存 Cookie 后清除 get_settings 缓存确保配置刷新 - 使用 tenacity Retrying 对象而非 @retry 装饰器支持可配置超时 - 多个 canvas 选择器降级提高 QR 码检测鲁棒性 +- login CLI 命令支持三种模式:扫码登录、导入 Cookie、状态检查 ### Blockers/Concerns @@ -76,8 +78,8 @@ None. ## Session Continuity -Last session: 2026-03-17T10:05:00.000Z -Stopped at: Plan 07-01 complete -Resume file: .planning/phases/07-login-auth/07-01-SUMMARY.md +Last session: 2026-03-17T10:45:00.000Z +Stopped at: Phase 07 complete +Resume file: .planning/phases/07-login-auth/07-03-SUMMARY.md -**Next step:** Continue with plan 07-02 for Cookie Import & Persistence +**Next step:** Continue with Phase 08 Crawler diff --git a/.planning/phases/07-login-auth/07-03-SUMMARY.md b/.planning/phases/07-login-auth/07-03-SUMMARY.md new file mode 100644 index 0000000..1ca2394 --- /dev/null +++ b/.planning/phases/07-login-auth/07-03-SUMMARY.md @@ -0,0 +1,128 @@ +--- +phase: 07-login-auth +plan: 03 +subsystem: auth +tags: [cli, cookie, login, playwright, pytest] + +# Dependency graph +requires: + - phase: 07-01 + provides: ZhihuLogin 类,二维码扫码登录核心 + - phase: 07-02 + provides: CookieManager 类,Cookie 持久化 +provides: + - Cookie 验证功能 (validate_cookie 方法) + - login CLI 子命令 (login, --import-cookie, --status) + - 完整的命令行登录体验 +affects: [08-crawler, 09-processor] + +# Tech tracking +tech-stack: + added: [] + patterns: [TDD 测试驱动开发, CLI subparser 模式, asyncio.run() 异步包装] + +key-files: + created: + - tests/test_auth/test_cookie_validation.py + - tests/test_auth/test_cli_login.py + modified: + - kb_workflow/auth/zhihu_login.py + - kb_workflow/kb_workflow.py + +key-decisions: + - "使用 Playwright request API 验证 Cookie 有效性" + - "login 命令支持三种模式:扫码登录、导入 Cookie、状态检查" + +patterns-established: + - "CLI 子命令使用 argparse subparsers 扩展" + - "异步方法通过 asyncio.run() 包装为同步 CLI 入口" + +requirements-completed: [AUTH-04] + +# Metrics +duration: 12min +completed: 2026-03-17 +--- + +# Phase 7 Plan 3: Login CLI 子命令 Summary + +**实现完整的知乎登录命令行接口,支持二维码扫码、Cookie 导入和状态检查,整合 ZhihuLogin 和 CookieManager 提供端到端登录体验** + +## Performance + +- **Duration:** 12 min +- **Started:** 2026-03-17T10:30:00Z +- **Completed:** 2026-03-17T10:42:00Z +- **Tasks:** 3 (2 auto, 1 checkpoint) +- **Files modified:** 4 + +## Accomplishments + +- Cookie 验证功能:通过知乎 /api/v4/me 接口验证 Cookie 有效性 +- login CLI 子命令:支持三种操作模式(扫码登录、导入 Cookie、状态检查) +- 完整测试覆盖:新增 8 个单元测试,总计 33 个测试全部通过 + +## Task Commits + +Each task was committed atomically: + +1. **Task 1: Cookie 验证功能** - `32bb220` (test), `919a467` (feat) +2. **Task 2: login CLI 子命令** - `94c85ba` (test), `d9861aa` (feat) +3. **Task 3: checkpoint:human-verify** - 用户批准通过 + +**Plan metadata:** 待提交 + +_Note: TDD tasks have multiple commits (test -> feat)_ + +## Files Created/Modified + +- `kb_workflow/auth/zhihu_login.py` - 添加 CookieValidationResult 模型和 validate_cookie 方法 +- `kb_workflow/kb_workflow.py` - 添加 login 子命令和 login_command 函数 +- `tests/test_auth/test_cookie_validation.py` - 5 个 Cookie 验证测试 +- `tests/test_auth/test_cli_login.py` - 3 个 CLI 命令测试 + +## Decisions Made + +- 使用 Playwright page.request.get() 直接调用知乎 API 验证 Cookie +- login 命令默认启动二维码扫码,通过参数切换其他模式 +- --status 参数返回 CookieValidationResult 的完整信息(用户名、用户ID) + +## Deviations from Plan + +None - plan executed exactly as written. + +## Issues Encountered + +None - all implementations followed the plan specification. + +## User Setup Required + +None - no external service configuration required. + +## Next Phase Readiness + +Phase 7 (登录认证体系) 完成: +- 07-01: ZhihuLogin 类 + 二维码扫码登录 +- 07-02: CookieManager 类 + Cookie 持久化 +- 07-03: login CLI 子命令 + Cookie 验证 + +Ready for Phase 8 (Crawler) - 已有完整的登录和 Cookie 管理能力。 + +## Self-Check: PASSED + +**Files verified:** +- FOUND: kb_workflow/auth/zhihu_login.py +- FOUND: kb_workflow/auth/cookie_manager.py +- FOUND: kb_workflow/kb_workflow.py +- FOUND: tests/test_auth/test_cookie_validation.py +- FOUND: tests/test_auth/test_cli_login.py + +**Commits verified:** +- FOUND: 32bb220 (test: add failing tests for cookie validation) +- FOUND: 919a467 (feat: implement cookie validation functionality) +- FOUND: 94c85ba (test: add failing tests for login CLI subcommand) +- FOUND: d9861aa (feat: implement login CLI subcommand) + +--- +*Phase: 07-login-auth* +*Completed: 2026-03-17*