Files
web_huakui_web/tests/fixtures/templates/play-data.json
T
谢宇宁andClaude Opus 5.5 d2ddb1c321 [Ai] feat: 花魁短剧 Next.js 站点初始提交
- 原生 Next.js App Router + 严格 TypeScript 实现花魁短剧 PC/H5 页面,按 src/features/{catalog,content,playback} 组织,保留完整 SEO(metadata、JSON-LD、canonical、robots、llms、sitemap、IndexNow)。
- 主域名通过 SITE_URL=https://huakuidj.com 强制覆盖后端 foreverUrlAddr(config/*.env、src/server/config.ts、src/server/seo/shared.ts、src/server/services/shared.ts),支持邮箱改为 support@huakuidj.com。
- 移除登录与账户体系:删除 /account 全部页面、登录/注册/充值弹窗、收藏点赞、评论、金币解锁及对应 BFF 接口;旧账户地址 GET/HEAD 统一 301 到首页(src/lib/routes.ts REMOVED_ACCOUNT_PATHS),保留游客会话、反馈、图片上传、观看上报与搜索联想。
- 播放页:评论位改为同类推荐 + 热播榜单,锁定集改为 App 观看遮罩与底部弹层,新增简介标签、分集图例与独立视觉皮肤(src/features/playback、src/styles/pages/playback.css)。
- 卡片:短剧/视频卡状态与时长移至信息行胶囊标签,封面角标移至左上角(src/components/catalog/Cards.tsx、src/styles/foundations/base.css)。
- 同步更新单元测试、浏览器冒烟脚本、路由清单与 README。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 11:33:31 +07:00

1 line
6.8 KiB
JSON

{"metaTitle": "花魁 & \"标题\" <test>", "metaDescription": "短剧'说明 & 安全", "trackerAppId": "app'\"</script>", "pageKey": "tags", "pageName": "标签", "siteName": "花魁", "siteURL": "https://drama.example", "canonicalURL": "https://drama.example/tags/", "ogType": "website", "robots": "index, follow", "appConfig": {"reportSdkConfig": "sdk-config</script>", "appAddr": "https://app.example/download", "newUrlAddr": "https://drama.example", "detailbannerList": [{"id": "a", "images": "https://img.example/banner-a.webp", "link": "https://ad.example", "title": "广告 A", "location": 1}, {"id": "empty", "images": ""}, {"id": "b", "images": "https://img.example/banner-b.webp", "link": "https://ad.example", "title": "广告 B", "location": 2}]}, "listCount": "共14部", "list": [{"id": 1, "slug": "热门 剧", "playName": "花魁 & 第一部", "title": "花魁", "cover": "https://example.com/图片?a=1&b=2", "totalEpisode": 4, "updateStatus": 2, "tagNames": ["都市"], "tagSlugs": ["都市"], "tagIds": [2], "heatValue": 12000, "countCollect": 1, "countLike": 2}, {"id": 2, "slug": "热门 剧", "playName": "花魁 & 第一部", "title": "花魁", "cover": "https://example.com/图片?a=1&b=2", "totalEpisode": 4, "updateStatus": 2, "tagNames": ["都市"], "tagSlugs": ["都市"], "tagIds": [2], "heatValue": 12000, "countCollect": 1, "countLike": 2}, {"id": 3, "slug": "热门 剧", "playName": "花魁 & 第一部", "title": "花魁", "cover": "https://example.com/图片?a=1&b=2", "totalEpisode": 4, "updateStatus": 2, "tagNames": ["都市"], "tagSlugs": ["都市"], "tagIds": [2], "heatValue": 12000, "countCollect": 1, "countLike": 2}, {"id": 4, "slug": "热门 剧", "playName": "花魁 & 第一部", "title": "花魁", "cover": "https://example.com/图片?a=1&b=2", "totalEpisode": 4, "updateStatus": 2, "tagNames": ["都市"], "tagSlugs": ["都市"], "tagIds": [2], "heatValue": 12000, "countCollect": 1, "countLike": 2}, {"id": 5, "slug": "热门 剧", "playName": "花魁 & 第一部", "title": "花魁", "cover": "https://example.com/图片?a=1&b=2", "totalEpisode": 4, "updateStatus": 2, "tagNames": ["都市"], "tagSlugs": ["都市"], "tagIds": [2], "heatValue": 12000, "countCollect": 1, "countLike": 2}, {"id": 6, "slug": "热门 剧", "playName": "花魁 & 第一部", "title": "花魁", "cover": "https://example.com/图片?a=1&b=2", "totalEpisode": 4, "updateStatus": 2, "tagNames": ["都市"], "tagSlugs": ["都市"], "tagIds": [2], "heatValue": 12000, "countCollect": 1, "countLike": 2}, {"id": 7, "slug": "热门 剧", "playName": "花魁 & 第一部", "title": "花魁", "cover": "https://example.com/图片?a=1&b=2", "totalEpisode": 4, "updateStatus": 2, "tagNames": ["都市"], "tagSlugs": ["都市"], "tagIds": [2], "heatValue": 12000, "countCollect": 1, "countLike": 2}, {"id": 8, "slug": "热门 剧", "playName": "花魁 & 第一部", "title": "花魁", "cover": "https://example.com/图片?a=1&b=2", "totalEpisode": 4, "updateStatus": 2, "tagNames": ["都市"], "tagSlugs": ["都市"], "tagIds": [2], "heatValue": 12000, "countCollect": 1, "countLike": 2}, {"id": 9, "slug": "热门 剧", "playName": "花魁 & 第一部", "title": "花魁", "cover": "https://example.com/图片?a=1&b=2", "totalEpisode": 4, "updateStatus": 2, "tagNames": ["都市"], "tagSlugs": ["都市"], "tagIds": [2], "heatValue": 12000, "countCollect": 1, "countLike": 2}, {"id": 10, "slug": "热门 剧", "playName": "花魁 & 第一部", "title": "花魁", "cover": "https://example.com/图片?a=1&b=2", "totalEpisode": 4, "updateStatus": 2, "tagNames": ["都市"], "tagSlugs": ["都市"], "tagIds": [2], "heatValue": 12000, "countCollect": 1, "countLike": 2}, {"id": 11, "slug": "热门 剧", "playName": "花魁 & 第一部", "title": "花魁", "cover": "https://example.com/图片?a=1&b=2", "totalEpisode": 4, "updateStatus": 2, "tagNames": ["都市"], "tagSlugs": ["都市"], "tagIds": [2], "heatValue": 12000, "countCollect": 1, "countLike": 2}, {"id": 12, "slug": "热门 剧", "playName": "花魁 & 第一部", "title": "花魁", "cover": "https://example.com/图片?a=1&b=2", "totalEpisode": 4, "updateStatus": 2, "tagNames": ["都市"], "tagSlugs": ["都市"], "tagIds": [2], "heatValue": 12000, "countCollect": 1, "countLike": 2}, {"id": 13, "slug": "热门 剧", "playName": "花魁 & 第一部", "title": "花魁", "cover": "https://example.com/图片?a=1&b=2", "totalEpisode": 4, "updateStatus": 2, "tagNames": ["都市"], "tagSlugs": ["都市"], "tagIds": [2], "heatValue": 12000, "countCollect": 1, "countLike": 2}, {"id": 14, "slug": "热门 剧", "playName": "花魁 & 第一部", "title": "花魁", "cover": "https://example.com/图片?a=1&b=2", "totalEpisode": 4, "updateStatus": 2, "tagNames": ["都市"], "tagSlugs": ["都市"], "tagIds": [2], "heatValue": 12000, "countCollect": 1, "countLike": 2}], "tagSlug": "", "tagId": 0, "sortType": 1, "config": {"appAddr": "https://app.example/download", "customerServiceHost": "https://service.example", "twitterAddr": "https://x.example/huakui"}, "advitise": {"detailbannerList": [{"id": "a", "images": "https://img.example/banner-a.webp", "link": "https://ad.example", "title": "广告 A", "location": 1}, {"id": "empty", "images": ""}, {"id": "b", "images": "https://img.example/banner-b.webp", "link": "https://ad.example", "title": "广告 B", "location": 2}], "nineGridList": []}, "requestPath": "/list/", "themeSlug": "", "themeId": 0, "updateStatus": 0, "categoryList": [{"id": 1, "name": "首页", "urlValue": "/home"}, {"id": 2, "name": "短剧", "urlValue": "/playlet"}, {"id": 3, "name": "下载APP", "urlValue": "/download-app"}], "themeList": [{"id": 1, "name": "都市", "slug": "都市"}], "homeConfigPlaylets": [], "playlet": {"id": 1, "slug": "都市", "playName": "花魁", "title": "花魁", "cover": "https://img.example/封面.webp", "horizontalCover": "https://img.example/横封.webp", "totalEpisode": 3, "updateStatus": 1, "countCollect": 0, "countLike": 0, "heatValue": 0, "isLike": 0, "isCollect": 0, "onlineAt": "2026-10-01", "playletChapterInfo": [{"id": 10, "currentEpisode": 1, "payType": 0, "canWatch": true}, {"id": 11, "currentEpisode": 2, "payType": 1, "needUnlock": true}]}, "chapter": {"id": 10, "mediaTime": 123, "payType": 0, "needUnlock": false, "needVip": false, "countComment": 0}, "chapterID": 10, "episode": 1, "canWatch": true, "mainURL": "/h5/videos/video.m3u8", "previewURL": "", "hasPreview": false, "unlockCost": 0, "balance": 0, "balanceText": "0", "hotList": [], "guessLike": [], "related": [], "commentSize": 4, "commentTotal": 0, "commentPage": 1, "commentObjectID": 10, "commentObjectType": 2, "rechargePackages": [], "rechargePayMethods": [], "trackerDrama": {"MediaID": "10", "DramaID": "1", "DramaTitle": "花魁", "Episode": 1, "TotalEpisode": 3, "VideoID": "10", "DramaTypeID": 0, "DramaTypeName": "短剧", "RecommendTraceID": "", "DramaTagKey": "", "DramaTagName": "", "DramaDuration": 123}, "comments": [], "hotMoreURL": "/list/all/0/2/"}