kairee
742c67a1c3
feat(classify): tighten scoring with reaction co-occurrence and date negatives
...
强正向 reaction 需标题同时含 require_title;移除听/看等宽泛词,新增弱正向组;charge 命中>=2 记+3、==1 记+1;负向补充录播/录像并新增标题带日期强负向;时长仅在已命中 reaction/charge 时加权;discover 关键词改为单个咻咻满、pages=3、window_days=7,notify.min_score=4;同步示例配置、project.md/README 与相关测试。
2026-11-01 19:00:48 +08:00
kairee
e04908ccad
Merge branch 'fix/up-search-name-only'
2026-11-01 17:57:34 +08:00
kairee
003e65086e
fix(web): up list search matches up name only, not video titles
2026-11-01 17:57:34 +08:00
kairee
a6bd910d9d
Merge branch 'feat/home-candidate-notice'
2026-11-01 17:52:03 +08:00
kairee
ff88e91640
feat(web): restore candidate notice on home for logged-in users
2026-11-01 17:52:03 +08:00
kairee
0518397492
Merge branch 'fix/sidebar-brand-wrap'
2026-11-01 17:48:18 +08:00
kairee
f96781027e
fix(web): keep sidebar brand text intact, stack topbar entries below
2026-11-01 17:48:18 +08:00
kairee
b71f0ce04d
Merge branch 'feat/remove-preview-pill'
2026-11-01 17:45:25 +08:00
kairee
bc4655c143
feat(web): drop redundant preview pill from topbar
2026-11-01 17:45:25 +08:00
kairee
6e2910af62
Merge branch 'feat/topbar-entry-nav'
2026-11-01 17:43:42 +08:00
kairee
3cb9b92361
feat(web): move candidates/system nav to topbar, free mobile bottom nav
2026-11-01 17:43:42 +08:00
kairee
4253779501
Merge branch 'feat/home-public-cleanup'
2026-11-01 17:38:30 +08:00
kairee
85b0f625a9
feat(web): clean public home header (data date, 7d fans, video count), drop status panel
2026-11-01 17:38:30 +08:00
kairee
a392453851
Merge branch 'feat/home-grid-6items'
2026-11-01 17:30:52 +08:00
kairee
14a4cab48b
feat(web): home media grid 2-up mobile / 3-up PC, 6 items, drop folder panel
2026-11-01 17:30:52 +08:00
kairee
b9c77ab7b8
Merge branch 'feat/home-media-grid'
2026-11-01 17:27:10 +08:00
kairee
e00331c4c6
feat(web): home media sections use 5-up PC / 1-up mobile grid, growth top5
2026-11-01 17:27:10 +08:00
kairee
1bb5718328
Merge branch 'feat/home-unified-cards'
2026-11-01 17:18:42 +08:00
kairee
e40905da24
feat(web): unify home published/growth cards with heat-strip vertical layout
2026-11-01 17:18:42 +08:00
kairee
59fa38b6e3
Merge branch 'feat/up-interactions-per-hour'
2026-11-01 17:09:26 +08:00
kairee
7907216c1b
feat(web): add interactions-per-hour stat to up page
2026-11-01 17:09:25 +08:00
kairee
9757415ee3
Merge branch 'feat/access-stats-polish'
2026-11-01 17:06:32 +08:00
kairee
84ce1e41e8
feat(web): visit 204 response, up page header/sort, trim system page
2026-11-01 17:06:26 +08:00
kairee
e3bd2e601b
fix(web): always drain visit request body to keep keep-alive connections aligned
2026-11-01 15:41:47 +08:00
kairee
a3e7589ad3
Merge branch 'feat/access-stats': basic PV/UV access statistics
2026-11-01 15:40:53 +08:00
kairee
ff5e05998a
docs(deploy): document PV/UV stats and real client IP via nginx realip
2026-11-01 15:40:22 +08:00
kairee
b215f8eb09
feat(web): report page views via sendBeacon and show stats on system page
2026-11-01 15:36:42 +08:00
kairee
3c16caac1a
feat(stats): buffer visits in memory and expose POST /api/visit + /api/stats
2026-11-01 15:34:53 +08:00
kairee
cdd11823b9
feat(stats): add migration v7 visit table and client-ip helpers
2026-11-01 15:29:43 +08:00
kairee
b0c53e8a2f
fix(ingest): raise ref cap to 50 and clarify invalid bvid error
2026-11-01 15:05:17 +08:00
kairee
b5bf7d9b8f
feat(web): drop decoupled folder badge from video detail
2026-11-01 14:45:28 +08:00
kairee
5d7521075a
feat(web): show first-RE time on up page, drop decoupled folder badges
2026-11-01 14:41:32 +08:00
kairee
2ff3e7952b
feat(web): up avatars, follower count, and dedupe views/avg secondary
2026-11-01 14:34:23 +08:00
kairee
1ed3746f4b
feat(web): clickable home stats, drop recent-ingest panel, rename watch link
2026-11-01 14:19:27 +08:00
kairee
bfde231b90
feat(cli): capture up follower on manual ingest
2026-11-01 14:10:05 +08:00
kairee
0d6e62f9ee
docs: decouple favorites, manual ingest, write-for-sort-only
2026-11-01 14:09:09 +08:00
kairee
6c4287b43a
refactor(sync): drop favorite-folder tracking and deal
2026-11-01 13:59:10 +08:00
kairee
62abbd7ea1
feat(ingest): db-only library ingest and telegram manual ingest
2026-11-01 13:50:03 +08:00
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
b405fc5fd7
docs: record round 9 verification results
2026-11-01 11:43:44 +08:00
kairee
4adb54abe1
docs(config): add analytics section to example configs
2026-11-01 11:38:20 +08:00
kairee
b017af7593
docs: update readme for video/up split and follower backfill
2026-11-01 11:37:40 +08:00
kairee
cb9e8e031b
docs: document duration efficiency, up follower snapshot and nav split
2026-11-01 11:36:34 +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
707ed7d7d7
docs: document dashboard cache
2026-11-01 03:27:50 +08:00
kairee
9fd277c05f
feat(web): cache dashboard aggregations with version invalidation
2026-11-01 03:27:49 +08:00
kairee
91aa3e1f95
docs: describe partial page protection
2026-11-01 03:09:21 +08:00
kairee
6aefe9ce87
feat(web): require login only for candidates and system
2026-11-01 03:09:21 +08:00
kairee
55c40db047
fix(tools): resolve config path inside container
2026-11-01 02:58:56 +08:00
kairee
b0aa919e18
build: include tools in image for server-side imports
2026-11-01 02:55:31 +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
e9fbbc1650
docs: document fan range modes and delta column
2026-11-01 02:36:48 +08:00
kairee
274eccba93
feat(web): add fan date range modes and delta column
2026-11-01 02:36:48 +08:00
kairee
998d0fd0c0
fix(tools): guard csv replace against newer fan records
2026-11-01 02:25:18 +08:00
kairee
dd6b09807d
docs: document csv fan import
2026-11-01 02:23:10 +08:00
kairee
c4c9c0b038
feat(tools): replace xxm fan import with bilibili csv
2026-11-01 02:23:09 +08:00
kairee
58df38814a
docs: describe fan recent window and cumulative range
2026-11-01 02:14:10 +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
4bb3d3bef5
docs: document path routing and in-place filter updates
2026-11-01 01:55:37 +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
fcca14c0f9
docs: document docker deployment workflow
2026-11-01 00:52:06 +08:00
kairee
b9d82e54c7
feat(deploy): add Dockerfile and compose for server sync
2026-11-01 00:51:57 +08:00
kairee
7674fc2c47
docs: update ranking labels, palette and export removal
2026-11-01 00:37:28 +08:00
kairee
c2ef998720
feat(web): refresh palette, simplify ranking toolbar and drop export
2026-11-01 00:37:20 +08:00
kairee
6a053bdfe8
docs: document UP ranking defaults and fan history import
2026-11-01 00:06:59 +08:00
kairee
ff101803cd
feat(tools): import 90-day fan history from public data source
2026-11-01 00:06:52 +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
40cdfaf3e5
docs: add analytics and preview tool to structure
2026-10-31 23:51:53 +08:00
kairee
c745d889e7
fix(tools): derive preview task counts from source data
2026-10-31 23:51:31 +08:00
kairee
60d7b0f24f
fix(web): center active filters and compact mobile cards
2026-10-31 23:50:19 +08:00
kairee
d18ebbfb2f
docs: document read-only dashboard and preview workflow
2026-10-31 23:47:02 +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
e7cae035e0
fix(tools): backfill fan counts in chronological order
2026-10-31 23:10:54 +08:00
kairee
94ee9aefd1
feat(tools): add deterministic preview database seeder
2026-10-31 23:05:43 +08:00
kairee
8ffac5103f
feat(analytics): add heat, growth and interaction metrics
2026-10-31 23:03:20 +08:00
kairee
8a87ebfb7c
refactor(favsort): send bilibili requests through httpx
...
Reuse a pooled httpx client for favsort GET and POST requests, share the raw-request-derived browser headers, and add folder-specific referers for ids, infos and sort. Add transport tests for header parity and anonymous-to-authenticated fallback.
2026-10-31 22:36:48 +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