3.3 KiB
3.3 KiB
Market Backend Metrics Design
Goal
Connect the current Chrome extension to the real backend search API and display six backend metrics in the plugin UI, while preserving the existing two Xingtu rate columns.
Confirmed Decisions
- Keep the existing two Xingtu metrics unchanged:
singleVideoAfterSearchRatepersonalVideoAfterSearchRate
- Add one new UI column named
秒探指标. - Render the six backend metrics inside that column as a compact 2-column metrics panel:
avg_after_view_search_rateavg_after_view_search_cntavg_a3_increase_cntavg_new_a3_ratecpa3cp_search
- Fetch backend metrics through the background service worker, not directly from the content script.
- Use Logto access tokens from the existing background auth flow.
- Query the backend by
star_id, not by nickname. - Send one batched request per visible page of creators.
- Use a code-level default backend base URL. Do not build a settings UI in this change.
- Do not change CSV export or batch submission payloads in this change.
API Contract
- Base URL:
- default to
http://192.168.31.29:8083
- default to
- Endpoint:
POST /api/v1/history/talents/search
- Headers:
Authorization: Bearer <Logto access token>Content-Type: application/json
- Request body:
{
"type": "star_id",
"values": ["7252982749131178039", "7290491710910496809"],
"page": 1,
"size": 100
}
Architecture
Background
- Add a new background message for backend metrics search.
- The background handler:
- gets the current Logto access token
- calls the backend search API
- returns parsed metric rows to the content script
This follows the same rule already used for protected API and batch submission: token-bearing business requests belong in the background layer.
Content
- Replace per-row metric loading with page-level batched loading for backend metrics.
- Collect all visible
authorIdvalues from the current page. - Send them to the background as
star_id[]. - Map the backend response back to rows by
star_id.
UI
- Keep the old two columns where they are today.
- Add one new
秒探指标column. - Each cell shows:
加载中...- a compact 6-metric panel
暂无数据加载失败
Data Model
Add a new backend metrics structure to market records:
afterViewSearchRateafterViewSearchCounta3IncreaseCountnewA3Ratecpa3cpSearch
The old Xingtu rates stay in the existing rates structure.
Failure Handling
- No token: show
加载失败 - Backend request failure: show
加载失败 - Backend success but row missing in response: show
暂无数据 - Partial page matches: render matched rows, mark unmatched rows as
暂无数据
Testing
- Add failing tests first for:
- backend metrics request message handling
- backend metrics client request/response mapping
- page-level batch loading by
star_id - UI rendering of the new
秒探指标column for loading, success, missing, and failure states
- Run focused tests first, then full
npm test, thennpm run build
Out of Scope
- Popup-based backend URL settings
- CSV export changes for the six backend metrics
- Batch submit payload changes
- Cross-page deduplicated backend caching beyond current in-memory record storage