Commit Graph
89 Commits
Author SHA1 Message Date
kairee d2adb65e08 feat(ingest): parse video refs and fetch detail by bvid 2026-11-01 13:46:46 +08:00
kairee e903c49921 fix(up): hard timeout and progress for follower capture 2026-11-01 13:24:56 +08:00
kairee 98cf42a113 style(web): cap ranking search box at 320px 2026-11-01 12:59:38 +08:00
kairee d00fcd5c38 feat(web): inline toolbar with label sort, compact time, icon search 2026-11-01 12:56:37 +08:00
kairee 9be7d1cab2 feat(web): dropdown sort and time filters with year support 2026-11-01 12:45:40 +08:00
kairee bc3bef0743 fix(analytics): shrink video efficiency and gate noisy boards by views 2026-11-01 12:25:27 +08:00
kairee e7034cfb84 feat(analytics): lower maturity window to 2 days and reword about page 2026-11-01 12:07:47 +08:00
kairee c0b0286395 feat(web): split video and up rankings and add about page 2026-11-01 11:33:15 +08:00
kairee 5a656d42a8 feat(web): add duration efficiency rankings and about payload 2026-11-01 11:21:42 +08:00
kairee 519fc39fca feat(up): capture follower snapshots at ingest and backfill history 2026-11-01 11:18:06 +08:00
kairee 4942d1d161 feat(db): add video pages and up follower snapshot schema 2026-11-01 11:14:36 +08:00
kairee 9fd277c05f feat(web): cache dashboard aggregations with version invalidation 2026-11-01 03:27:49 +08:00
kairee 6aefe9ce87 feat(web): require login only for candidates and system 2026-11-01 03:09:21 +08:00
kairee 028b3337b0 fix(web): keep fan range picker open until apply 2026-11-01 02:47:31 +08:00
kairee 917a93ab92 feat(web): use a range calendar picker for fan dates 2026-11-01 02:44:33 +08:00
kairee 274eccba93 feat(web): add fan date range modes and delta column 2026-11-01 02:36:48 +08:00
kairee d8e9a7b0f0 feat(web): show cumulative fan range and limit recent records 2026-11-01 02:14:10 +08:00
kairee b6a9f598b5 fix(web): avoid skeleton flicker and cache overview while filtering 2026-11-01 02:02:26 +08:00
kairee 52a8d90c47 feat(web): use history routing and preserve scroll on filter changes 2026-11-01 01:55:37 +08:00
kairee 1b08854b25 fix(web): revalidate app assets and rename compose example 2026-11-01 01:42:26 +08:00
kairee eff4b0149d fix(web): show exact trend values and integer axis ticks 2026-11-01 01:37:55 +08:00
kairee c2ef998720 feat(web): refresh palette, simplify ranking toolbar and drop export 2026-11-01 00:37:20 +08:00
kairee f9a5478800 fix(web): fix UP card layout and fan delta semantics 2026-11-01 00:06:43 +08:00
kairee 7fcd1db987 fix(web): count initial import from tracked videos 2026-10-31 23:54:56 +08:00
kairee 456e06f105 chore(web): finalize scroll behavior and preview assertions 2026-10-31 23:54:01 +08:00
kairee 60d7b0f24f fix(web): center active filters and compact mobile cards 2026-10-31 23:50:19 +08:00
kairee cbba405271 feat(web): add mobile-first read-only dashboard frontend 2026-10-31 23:46:55 +08:00
kairee 257fbe009b fix(web): align trend ranges, next runs and preview task records 2026-10-31 23:46:49 +08:00
kairee 19572171b8 feat(web): add read-only dashboard server and query layer 2026-10-31 23:13:54 +08:00
kairee 8ffac5103f feat(analytics): add heat, growth and interaction metrics 2026-10-31 23:03:20 +08:00
kairee 5b22ed1c5d feat(http): use httpx with pooled connections and browser headers
Add httpx and route Bilibili and Telegram requests through pooled clients with keepalive and explicit timeouts. Align Bilibili headers with data/raw-request.txt: Chrome 155 UA, sec-ch-ua, space.bilibili.com origin, folder-specific referer, and priority header. Close replaced clients when credentials change. Add transport contract tests and live read-only validation for nav, folder sync, WBI search, and Telegram getUpdates.
2026-10-31 22:28:32 +08:00
kairee 71a0e8c1d6 fix(telegram): back off on transient polling failures
Give getUpdates a wider HTTP timeout than the long-poll window, log transient SSL/network disconnects as warnings, apply exponential backoff with recovery logging, and only escalate to error after five consecutive failures.
2026-10-31 22:01:05 +08:00
kairee 2d42d8ed55 fix(telegram): handle expired callback queries gracefully
Parse Telegram HTTP error bodies so the real description is logged, fall back to a normal message when answerCallbackQuery rejects an expired callback ID, and remove inline buttons after a successful action.
2026-10-31 21:59:04 +08:00
kairee e2e4dc3336 fix(telegram): dedupe candidates before sending
Deduplicate candidates by aid at the notifier boundary so duplicate queue entries cannot produce repeated message bodies and button rows. The discovery layer already deduped by aid; this adds defense in depth with a regression test.
2026-10-31 21:55:10 +08:00
kairee d971e718e9 feat(p3): add discovery, telegram notifications, and one-click favorites
Implement WBI video search with legacy fallback, classification scoring, candidate pool, permanent seen-aid dedupe, blacklist filtering, and batched Telegram notifications. Add write client for fav deal/sort, target-folder selection, insertion position calculation, read-back verification, fav_action locking, retry on failure, ignore and blacklist actions. Wire discovery, candidate cleanup, Telegram long polling, and new discover/candidates CLI commands into the scheduler. Add migration v3 for candidate duration and index stats.
2026-10-31 21:23:12 +08:00
kairee 6a21b5d905 fix: close data integrity and hot-reload review findings
Backfill same-day snapshots for newly added or restored videos, preserve successful fan snapshots on resume, persist incomplete state before forced re-runs, and split collection completion from backup completion so failed backups can retry without API calls. Reject missing data payloads instead of treating them as empty folders, guard against mass-unfav on suspicious empty remote folders, rebuild Bilibili clients when credentials change, recompute primary folder ownership from active relations with per-folder fav_time, preserve original titles for dropped invalid videos, poll config every 60 seconds, and fix favsort verify interval and mixed resource types.
2026-10-31 20:58:36 +08:00
kairee 178ab64b18 feat(auth): separate read and write bilibili accounts 2026-10-31 20:01:21 +08:00
kairee 5c2ab7b187 feat(p1): add daily snapshots and fan tracking
Implement P1: seven-metric view snapshots, relation/stat fan snapshots, failure placeholders, resume by daily completion markers, Cookie login warnings, daily SQLite backups, Shanghai daily scheduling, and CLI snapshot/auth-check commands. Real read-only run captured 795/795 videos successfully over 1124s with a verified daily backup.
2026-10-31 19:19:24 +08:00
kairee e2cdf997af feat(p0): add favorite folder sync and sqlite data foundation
Implement P0 of the reaction dashboard: config loading with hot reload, SQLite migrations with backups, single-writer queue, read-only Bilibili fav client, folder import/diff sync, invalid-resource handling, blacklist seed, scheduler, and JSON redacted logging. Includes offline unit and transport-level contract tests; all existing and new tests pass.
2026-10-31 18:08:33 +08:00