docs(07-02): complete cookie import & persistence plan

This commit is contained in:
2026-03-17 17:53:38 +08:00
parent 00245c58cc
commit 771ca554b3
3 changed files with 136 additions and 23 deletions
+4 -4
View File
@@ -10,8 +10,8 @@
### 登录认证
- [ ] **AUTH-01**: 用户可通过二维码扫码登录知乎
- [ ] **AUTH-02**: 用户可手动设置 Cookie 进行认证
- [ ] **AUTH-03**: Cookie 自动持久化到本地文件,下次自动复用
- [x] **AUTH-02**: 用户可手动设置 Cookie 进行认证
- [x] **AUTH-03**: Cookie 自动持久化到本地文件,下次自动复用
- [ ] **AUTH-04**: Cookie 过期时自动检测并提示重新登录
### 内容爬取
@@ -112,8 +112,8 @@
| Requirement | Phase | Status |
|-------------|-------|--------|
| AUTH-01 | Phase 7 | Pending |
| AUTH-02 | Phase 7 | Pending |
| AUTH-03 | Phase 7 | Pending |
| AUTH-02 | Phase 7 | Complete |
| AUTH-03 | Phase 7 | Complete |
| AUTH-04 | Phase 7 | Pending |
| CONT-01 | Phase 8 | Pending |
| CONT-02 | Phase 8 | Pending |
+25 -19
View File
@@ -2,16 +2,16 @@
gsd_state_version: 1.0
milestone: v1.2
milestone_name: Zhihu Crawler
status: planning
stopped_at: Phase 7 context gathered
last_updated: "2026-03-17T08:57:06.982Z"
last_activity: 2026-03-17 — v1.2 roadmap created
status: executing
stopped_at: Plan 07-02 complete
last_updated: "2026-03-17T09:57:30.000Z"
last_activity: 2026-03-17 — Plan 07-02 Cookie Import & Persistence
progress:
total_phases: 9
completed_phases: 6
total_plans: 18
completed_plans: 18
percent: 0
total_plans: 21
completed_plans: 20
percent: 95
---
# Project State
@@ -21,23 +21,27 @@ progress:
See: .planning/PROJECT.md (updated 2026-03-17)
**Core value:** 可靠、可维护的处理管道 - 每个步骤独立、可验证、可恢复
**Current focus:** v1.2 Zhihu Crawler — Phase 7 准备中
**Current focus:** v1.2 Zhihu Crawler — Phase 7 执行中
## Current Position
Phase: 7 of 9 (登录认证体系)
Plan: —
Status: Ready to plan
Last activity: 2026-03-17 — v1.2 roadmap created
Plan: 02 of 03 (Cookie Import & Persistence complete)
Status: Plan 07-02 complete, continuing to 07-03
Last activity: 2026-03-17 — Plan 07-02 Cookie Import & Persistence
Progress: [░░░░░░░░░░] 0% (v1.2 milestone)
Progress: [█████████░] 95% (v1.2 milestone)
## Performance Metrics
**Velocity:**
- Total plans completed: 0 (v1.2)
- Average duration: —
- Total execution time: —
- Total plans completed: 1 (v1.2)
- Average duration: 5 min
- Total execution time: 5 min
| Plan | Duration | Tasks | Files | Date |
|------|----------|-------|-------|------|
| 07-02 | 5min | 2 | 4 | 2026-03-17 |
## Accumulated Context
@@ -60,6 +64,8 @@ v1.2 decisions:
- 参考 MediaCrawler 实现,自实现而非直接依赖
- 使用 playwright 作为浏览器自动化框架
- 整合进现有 Pipeline 架构
- Cookie 文件权限设置为 600 保证安全性
- 保存 Cookie 后清除 get_settings 缓存确保配置刷新
### Blockers/Concerns
@@ -67,8 +73,8 @@ None.
## Session Continuity
Last session: 2026-03-17T08:57:06.980Z
Stopped at: Phase 7 context gathered
Resume file: .planning/phases/07-login-auth/07-CONTEXT.md
Last session: 2026-03-17T09:57:30.000Z
Stopped at: Plan 07-02 complete
Resume file: .planning/phases/07-login-auth/07-02-SUMMARY.md
**Next step:** Run `/gsd:plan-phase 7` to create first plan
**Next step:** Continue with plan 07-03 for QR code login integration
@@ -0,0 +1,107 @@
---
phase: 07-login-auth
plan: 02
subsystem: auth
tags: [cookie, persistence, json, zhihu]
# Dependency graph
requires:
- phase: none
provides: none
provides:
- Cookie JSON parsing from Chrome Cookie Editor format
- Cookie persistence to ~/.kb_env file
- Cookie loading from ~/.kb_env file
affects: [zhihu-login, pipeline-auth]
# Tech tracking
tech-stack:
added: []
patterns: [tdd, file-permissions-600, cache-invalidation]
key-files:
created:
- kb_workflow/auth/cookie_manager.py
- tests/test_auth/test_cookie_import.py
- tests/test_auth/test_cookie_persistence.py
modified: []
key-decisions:
- "File permissions set to 600 for security when saving cookies"
- "Cache invalidation of get_settings after cookie save to ensure fresh config"
patterns-established:
- "TDD workflow: RED test commit -> GREEN implementation commit"
- "Cookie format: ZHIHU_COOKIE=\"name1=value1; name2=value2\""
requirements-completed: [AUTH-02, AUTH-03]
# Metrics
duration: 10min
completed: 2026-03-17
---
# Phase 07 Plan 02: Cookie Import and Persistence Summary
**Cookie management module with JSON parsing for Chrome Cookie Editor format and persistent storage to ~/.kb_env**
## Performance
- **Duration:** 10 min
- **Started:** 2026-03-17T09:47:22Z
- **Completed:** 2026-03-17T09:57:30Z
- **Tasks:** 2
- **Files modified:** 4
## Accomplishments
- parse_json_cookies function supporting Chrome Cookie Editor JSON format
- CookieManager class with save/load functionality for ~/.kb_env
- Automatic domain filtering for zhihu.com cookies
- Secure file permissions (600) for cookie storage
- Cache invalidation for get_settings after save
## Task Commits
Each task was committed atomically following TDD:
1. **Task 1: Cookie JSON 解析功能** - 2 commits (TDD)
- `af3536a` (test) - Failing tests for parse_json_cookies
- `2360fcc` (feat) - Implementation of parse_json_cookies
2. **Task 2: Cookie 持久化管理器** - 2 commits (TDD)
- `19c377e` (test) - Failing tests for CookieManager
- `00245c5` (feat) - Implementation of CookieManager class
_Note: TDD tasks have separate test and implementation commits_
## Files Created/Modified
- `kb_workflow/auth/__init__.py` - Auth module initialization
- `kb_workflow/auth/cookie_manager.py` - Cookie parsing and persistence (120 lines)
- `tests/test_auth/__init__.py` - Test module initialization
- `tests/test_auth/test_cookie_import.py` - 6 tests for JSON parsing
- `tests/test_auth/test_cookie_persistence.py` - 8 tests for persistence
## Decisions Made
- File permissions set to 600 for security when saving cookies to ~/.kb_env
- Cache invalidation of get_settings.cache_clear() after saving to ensure fresh config on next read
- Only zhihu.com domain cookies are extracted from JSON (domain filtering)
## Deviations from Plan
None - plan executed exactly as written.
## Issues Encountered
None.
## User Setup Required
None - no external service configuration required.
## Next Phase Readiness
- Cookie import and persistence ready for use by ZhihuLogin
- Can now import cookies from Chrome Cookie Editor JSON export
- Can persist cookies for automatic loading on next run
---
*Phase: 07-login-auth*
*Completed: 2026-03-17*