star-chart-search-enhancer/docs/superpowers/plans/2026-06-29-author-spread-info-export.md
2026-06-29 16:06:14 +08:00

3.3 KiB
Raw Blame History

星图达人视频传播数据导出 Implementation Plan

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.

Goal: 导出 CSV 前按配置调用 get_author_spread_info,追加个人视频和星图视频传播指标列。

Architecture: 新增独立的 spread-info 模块负责参数配置、URL、响应映射和并发加载列表解析保留 authorId,额外保存 spreadAuthorId 作为 o_author_idCSV exporter 只负责把已加载的 spread metrics 输出成列。导出入口在生成 CSV 前补齐 spread metrics。

Tech Stack: TypeScript, Chrome content script, Vitest, jsdom.


Task 1: Spread Info Client And Mapping

Files:

  • Create: src/content/market/spread-info.ts

  • Modify: src/content/market/types.ts

  • Test: tests/spread-info.test.ts

  • Step 1: Write failing tests

Cover URL construction, label/header generation, response mapping, personal-video fixed params, and Xingtu-video multi-param configs.

  • Step 2: Run failing tests

Run: npx vitest run tests/spread-info.test.ts Expected: FAIL because spread-info.ts does not exist.

  • Step 3: Implement spread-info module and types

Implement typed configs, formatter helpers, response mapper, client, and limited-concurrency loader.

  • Step 4: Run tests

Run: npx vitest run tests/spread-info.test.ts Expected: PASS.

Task 2: Preserve Spread Author ID From Search Rows

Files:

  • Modify: src/content/market/types.ts

  • Modify: src/content/market/market-list-row.ts

  • Modify: src/content/market/page-bridge.ts

  • Test: tests/market-page-bridge.test.ts

  • Test: tests/silent-export-controller.test.ts

  • Step 1: Write failing tests

Verify attribute_datas.id is retained as spreadAuthorId and preferred over top-level star_id for spread-info requests.

  • Step 2: Run failing tests

Run focused tests for row parsing and silent export.

  • Step 3: Implement parser changes

Store spreadAuthorId on snapshots and merge it in result store.

  • Step 4: Run focused tests

Expected: PASS.

Task 3: CSV Columns

Files:

  • Modify: src/content/market/csv-exporter.ts

  • Test: tests/csv-exporter.test.ts

  • Step 1: Write failing tests

Verify spread headers append after backend metrics and blank cells are exported when metrics are absent.

  • Step 2: Implement CSV spread columns

Read record.spreadMetrics by generated header names.

  • Step 3: Run focused tests

Run: npx vitest run tests/csv-exporter.test.ts Expected: PASS.

Task 4: Export Hydration

Files:

  • Modify: src/content/market/index.ts

  • Modify: src/content/market/result-store.ts

  • Test: tests/market-content-entry.test.ts

  • Step 1: Write failing tests

Verify export calls spread-info with spreadAuthorId, waits before CSV generation, preserves row order, and leaves blanks on failure.

  • Step 2: Implement hydration

Inject loadSpreadMetrics for tests, default to spread-info loader, and hydrate records before buildCsv.

  • Step 3: Run focused tests

Run focused content-entry tests.

Task 5: Final Verification

  • Run npm test.
  • Run npm run build.
  • Review git diff.