119 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Star Chart Search Enhancer
Chrome MV3 extension for the Xingtu creator market page.
## Development
```bash
npm install
npm test
npm run build
```
## Load The Extension
1. Run `npm run build`
2. Open `chrome://extensions`
3. Enable developer mode
4. Choose `Load unpacked`
5. Select the `dist/` directory
## Current Scope
- Adds two after-search-rate columns to the Xingtu market list
- Adds a popup-based Logto auth entry
- Hydrates the current page immediately
- Provides plugin-owned filter, sort, and CSV export controls
- Gates the market tools until auth is available
- Triggers full-scan flow only when filter, sort, or export is used
## Auth Configuration
The Logto integration is wired with placeholder values in `src/shared/auth-config.ts`.
Replace these before real sign-in testing:
- `logtoEndpoint`
- `appId`
- `apiResource`
- Any extra scopes beyond `openid`, `profile`, and `offline_access`
The popup dev panel is controlled by `enableDevAuthPanel`.
## Popup Behavior
1. Load the unpacked extension from `dist/`
2. Click the extension icon
3. Confirm the popup shows `登录 Logto` when unauthenticated
4. After real Logto config is added, use the popup to sign in and sign out
## Protected API Mock Test
1. Set `enableDevAuthPanel` to `true` in `src/shared/auth-config.ts`
2. Run `npm run mock:protected-api`
3. Run `npm run build`
4. Reload the unpacked extension from `dist/`
5. Open the popup and log in
6. Click `测试受保护接口`
7. Confirm the popup shows JSON containing `"source": "mock-protected-api"` and `"message": "authorized"`
## Batch Submit Mock Test
1. Run `npm run mock:protected-api`
2. Run `npm run build`
3. Reload the unpacked extension from `dist/`
4. Open `https://xingtu.cn/ad/creator/market`
5. Choose an export range in the plugin toolbar
6. Click `提交批次`
7. Enter a batch name in the browser prompt
8. Confirm the toolbar shows `批次提交成功`
9. Confirm the mock batch response accepts the payload and reports the submitted `batchId`
## Market Auth Gate
When the market page is opened without a valid auth state, the content script renders
`请先登录插件` and does not boot the filter, sort, or export toolbar.
## Manual Verification
1. Load the unpacked extension from `dist/`
2. Open `https://xingtu.cn/ad/creator/market`
3. Confirm the page shows the auth gate until login is available
4. After authentication is wired, confirm the two new columns appear
5. Confirm current-page rows move through loading and then render values or failure states
6. Apply a threshold filter and confirm the list hides unmatched rows
7. Apply a sort and confirm row order changes
8. Export CSV and confirm the file includes plugin status and after-search-rate fields
提交的数据格式
```json
{
"logtoUserId": "p7pdhhtde8kj",
"creatorName": "王少卿",
"resource": "https://talent-search.intelligrow.cn",
"batchName": "自动验证批次",
"batchId": "p7pdhhtde8kj-<提交当时的 ISO 时间戳>",
"createdAt": "<提交当时的 ISO 时间戳>",
"authors": [
{ "authorId": "7041184989643276324", "authorName": "旖旖小虎🐯" },
{ "authorId": "7021245050621263906", "authorName": "瑶一瑶小肉包" },
{ "authorId": "6629722292110753806", "authorName": "陈翔六点半" },
{ "authorId": "7065613279053217829", "authorName": "小花花的每一天" },
{ "authorId": "7254389871895117885", "authorName": "疯铲姐妹" },
{ "authorId": "7294473194298146854", "authorName": "奇奇de海洋" },
{ "authorId": "6834119701379940360", "authorName": "任志达" },
{ "authorId": "6870159718216630285", "authorName": "大师兄的表哥" },
{ "authorId": "6833914516833566727", "authorName": "旺仔是三七分" },
{ "authorId": "7401565089431552037", "authorName": "笑典动物园" },
{ "authorId": "7120107426002501639", "authorName": "嘻哈不拆" },
{ "authorId": "7015813716650393630", "authorName": "周星伦" },
{ "authorId": "6870170568893661197", "authorName": "周周的周" },
{ "authorId": "6839989503663276045", "authorName": "潇潇学姐" },
{ "authorId": "7023032374749298718", "authorName": "大自然奇观" },
{ "authorId": "6870164079617523719", "authorName": "王小怪" },
{ "authorId": "6969058840033624100", "authorName": "周三拾" },
{ "authorId": "6825383642127138829", "authorName": "罗臣臣" },
{ "authorId": "6684403430837977100", "authorName": "段炼Exercise" },
{ "authorId": "7319160797236559882", "authorName": "郑皓文" }
]
}
```