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 <noreply@anthropic.com>
This commit is contained in:
2026-03-17 18:24:32 +08:00
parent d9861aa6c3
commit e8eaca519f
3 changed files with 150 additions and 20 deletions
+2 -2
View File
@@ -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 |
+20 -18
View File
@@ -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
@@ -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*