-
需求文档 7.4 节's stated floor: an expired user_paid character (T36) or its videos must stay individually retrievable by their owner — "下线=不再出现在公开直播间和其他人的衣柜/随机池里",不是"下线=消失". GET /api/dance/my-works (login required, no emailVerified gate — this reads your own past purchases, doesn't spend anything) returns the requesting user's own characters/garments (ownerUserId match) each joined with their generated videos from library.json. New standalone page my-works.html (matches live.css's visual language) renders two sections with inline video players (same preload="none" pattern as admin.html), a status badge (播放中/已下线 for characters, 衣柜中/已下架 for garments), and a login gate for logged-out visitors — reusing GET /api/dance/my-works's 401 rather than duplicating dance.html's auth modal in a second page. Linked from dance.html's header once logged in. my-works.test.js: 401 without a session; a real user who uploaded one garment (T27) and one 1-segment character (T35, deliberately expired by test time) sees both with their videos still attached; a second, unrelated user sees neither. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011DUiYs6UjxDMkfvnjtsKFo