From 1624f023a2c12a67581d14656bba2801a0358c37 Mon Sep 17 00:00:00 2001 From: hajimi Date: Wed, 20 May 2026 11:06:34 +0800 Subject: [PATCH] feat: add worldcup topic entry --- 业务进度管理.md | 244 ++++++++++++++++++++++++++++++++++++++++++++++++ 设计稿映射.md | 58 ++++++++++++ 2 files changed, 302 insertions(+) create mode 100644 业务进度管理.md create mode 100644 设计稿映射.md diff --git a/业务进度管理.md b/业务进度管理.md new file mode 100644 index 0000000..6f10382 --- /dev/null +++ b/业务进度管理.md @@ -0,0 +1,244 @@ +# 业务进度管理 + +> 本文件用于跟踪 Sport Era 项目所有功能模块的开发状态、待办事项与避坑记录。每完成一个功能或发现一个坑,及时在对应章节追加。 + +## 目录 + +- [一、已完成事项](#一已完成事项) +- [二、进行中事项](#二进行中事项) +- [三、待办事项](#三待办事项) +- [四、避坑记录](#四避坑记录) + +--- + +## 一、已完成事项 + +### 1. 项目基础文档与协作协议 + +- 状态:已完成 +- 时间:2026-05-07 + +完成内容: + +- 创建根目录 `AGENTS.md`,记录项目技术栈、子模块分工、数据库基准与协作规范。 +- 创建 `server/AGENTS.md`、`admin/AGENTS.md`、`uniapp/AGENTS.md`、`pc/AGENTS.md`、`qa/AGENTS.md`。 +- 创建 `业务进度管理.md` 和 `设计稿映射.md`,作为后续进度与设计稿映射维护入口。 + +涉及模块: + +- `AGENTS.md` +- `server/AGENTS.md` +- `admin/AGENTS.md` +- `uniapp/AGENTS.md` +- `pc/AGENTS.md` +- `qa/AGENTS.md` +- `业务进度管理.md` +- `设计稿映射.md` + +### 2. 新闻爬虫文章入库去重 + +- 状态:已完成 +- 时间:2026-05-09 + +完成内容: + +- 在懂球帝爬虫公共入库方法 `upsert_articles` 中增加同分类标题去重,阻止不同 `article_id` 的同标题文章重复写入。 +- 新闻和视频采集任务按已知频道传入对应文章分类 `cid`,减少新增 `cid=0` 数据。 +- 对已存在 `article_id` 且旧分类为 `cid=0` 的数据,后续带正确分类再次入库时可迁移到正确分类。 + +涉及模块: + +- `server/public/dongqiudi-crawler/src/storage/database.py` +- `server/public/dongqiudi-crawler/src/scheduler/task_runner.py` + +### 3. Truth Social 定时任务入口整理 + +- 状态:已完成 +- 时间:2026-05-09 + +完成内容: + +- 后台定时任务 `truth_social` 改为执行 `public/dongqiudi-crawler/main.py truth_social`。 +- 移除旧的 `server/public/truth-social` 独立采集目录,避免继续维护两套特朗普消息采集代码。 + +涉及模块: + +- `server/app/adminapi/logic/crontab/CrontabLogic.php` +- `server/public/dongqiudi-crawler/truth_social.py` + +### 4. 49宝典彩票社区爬虫接入 + +- 状态:已完成 +- 时间:2026-05-11 + +完成内容: + +- 新增 `lottery_community` 爬虫入口,拉取 49宝典首页 Astro props 数据并解析开奖与图库资料。 +- 自动创建或复用社区标签 `彩票`,自动创建或复用发布用户 `lottery_publisher`。 +- 按 `origin_id` 对彩票社区帖子做幂等新增/更新,并同步帖子图片和标签关联。 +- 接入 ThinkPHP `crawler` 命令白名单和 Python 主入口命令映射。 +- 提供幂等 SQL 注册定时任务 `crawler lottery_community`。 +- 修复 49宝典响应中文解码和图库图片域名规则,`prod/` 图片资源改用可直接访问的 `tk2cdn-ali.tprswe.com`。 + +涉及模块: + +- `server/public/dongqiudi-crawler/lottery_community.py` +- `server/public/dongqiudi-crawler/main.py` +- `server/app/common/command/CrawlerCommand.php` +- `server/public/dongqiudi-crawler/insert_crontab_lottery_community.sql` + +### 5. 项目级文档归档到根目录 + +- 状态:已完成 +- 时间:2026-05-14 + +完成内容: + +- 将项目级文档 `01-产品方案文档.md`、`02-实现流程文档.md`、`爬虫任务脚本文档.md` 从 `docs/` 目录移动到项目根目录统一维护。 +- 在根目录 `AGENTS.md` 中补充项目级文档存放规则,明确协作类与业务类总文档默认放根目录。 +- 同步修正文档引用路径,避免后续继续引用旧的 `docs/` 路径。 + +涉及模块: + +- `AGENTS.md` +- `业务进度管理.md` +- `01-产品方案文档.md` +- `02-实现流程文档.md` +- `爬虫任务脚本文档.md` + +### 6. FIFA 世界杯资讯定时采集接入 + +- 状态:已完成 +- 时间:2026-05-15 + +完成内容: + +- 新增 FIFA 世界杯资讯爬虫入口 `fifa_worldcup_news`,通过 FIFA CXM API 拉取世界杯页面新闻区块数据。 +- 增加世界杯文章分类幂等创建/复用逻辑,默认分类名为 `世界杯`,并自动启用显示。 +- 新增定时任务注册 SQL `insert_crontab_fifa_worldcup_news.sql`,采用 `crawler fifa_worldcup_news` 动作并按 10 分钟执行。 +- 将后端定时任务调度链路扩展到 `fifa_worldcup_news`,沿用现有 crawler 异步执行模式。 +- 已验证 FIFA API 可返回 20 条世界杯资讯;本地完整写库验证因 crawler 当前数据库配置指向 `127.0.0.1` 且 MySQL 拒绝连接,需在服务器/可用数据库环境执行。 + +涉及模块: + +- `server/public/dongqiudi-crawler/fifa_worldcup_news.py` +- `server/public/dongqiudi-crawler/main.py` +- `server/public/dongqiudi-crawler/insert_crontab_fifa_worldcup_news.sql` +- `server/app/common/command/CrawlerCommand.php` +- `server/app/adminapi/logic/crontab/CrontabLogic.php` + +### 7. 懂球帝世界杯专属采集与用户端世界杯中心 + +- 状态:已完成 +- 时间:2026-05-15 + +完成内容: + +- 新增 `dqd_worldcup` 专属采集任务,固定抓取懂球帝 2026 世界杯 `standing / schedule / person_ranking(goals|assists)`。 +- 世界杯赛程写入 `la_match`,统一使用 `league_name=世界杯`、`competition_id=61`、`sport_type=1`,并保留 `round_name` 与 `stage`。 +- 新增世界杯缓存表 `la_worldcup_standing`、`la_worldcup_person_ranking`,保留小组积分榜和球员榜结构。 +- 新增幂等 SQL `insert_crontab_dqd_worldcup.sql`,自动创建并启用足球二级分类“世界杯”,同时注册 `crawler dqd_worldcup` 定时任务。 +- `MatchController` 新增 `worldCupStandings`、`worldCupRankings`、`worldCupSchedule` 3 个前台接口,供用户端世界杯中心使用。 +- 用户端 `pages/match/match` 在“足球 > 世界杯”分类下新增“赛程对阵图”顶部入口卡,并新增 `packages_match/pages/worldcup` 世界杯专属页,提供“对阵图 / 积分榜 / 射手榜 / 助攻榜 / 赛程”5 个 tab。 +- 已在测试库执行 SQL 并手动跑通一次采集,当前写入结果为:`la_match` 104 场、`la_worldcup_standing` 48 条、`la_worldcup_person_ranking` 的 `goals/assists` 暂为空。 +- 已验证测试服 `/api/match/leagues` 和 `/api/match/lists?league_name=世界杯` 可返回世界杯分类与赛程;`worldCupStandings / worldCupRankings / worldCupSchedule` 仍需等待后端自动同步到测试服后再做最终联调。 + +涉及模块: + +- `server/public/dongqiudi-crawler/dqd_worldcup.py` +- `server/public/dongqiudi-crawler/main.py` +- `server/public/dongqiudi-crawler/insert_crontab_dqd_worldcup.sql` +- `server/app/common/command/CrawlerCommand.php` +- `server/app/common/model/match/WorldCupStanding.php` +- `server/app/common/model/match/WorldCupPersonRanking.php` +- `server/app/api/controller/MatchController.php` +- `uniapp/src/api/match.ts` +- `uniapp/src/pages/match/match.vue` +- `uniapp/src/packages_match/pages/worldcup.vue` +- `uniapp/src/pages.json` + +### 8. 赛事中心顶部世界杯专题入口优化 + +- 状态:已完成 +- 时间:2026-05-20 + +完成内容: + +- 参考世界杯专题设计稿,将用户端 `pages/match/match` 的世界杯入口从赛事列表区上移到页面头部,放在标题与运动分类之间。 +- 新入口改为蓝色专题卡样式,展示 `2026年国际足联世界杯` 与赛事时间区间,点击继续跳转现有世界杯专属页。 +- 移除原先仅在“足球 > 世界杯”分类下显示的列表内入口,避免同页重复出现两个世界杯入口。 +- 调整赛事页列表高度计算逻辑,改为按实际头部高度回算,避免新增专题卡后遮挡分类条或压缩列表区域。 +- 已完成 `npm run build:h5` 构建,并通过浏览器在本地 H5 验证专题入口已出现在赛事页顶部。 + +涉及模块: + +- `uniapp/src/pages/match/match.vue` +- `业务进度管理.md` +- `设计稿映射.md` + +--- + +## 二、进行中事项 + +暂无。 + +--- + +## 三、待办事项 + +### 1. 业务模块进度补录 + +- 优先级:中 +- 创建时间:2026-05-07 + +待确认: + +- 根据现有 `01-产品方案文档.md`、`02-实现流程文档.md` 和当前代码状态,补录已完成业务模块。 +- 按模块梳理后端接口、管理后台页面、uniapp 页面、PC 页面当前完成度。 + +### 2. 设计稿映射补录 + +- 优先级:中 +- 创建时间:2026-05-07 + +待确认: + +- 确认当前设计稿平台、项目链接和页面节点名称。 +- 将首页、新闻列表、新闻详情、个人中心、AI 分析等页面与实现路径建立映射。 + +--- + +## 四、避坑记录 + +### 1. ThinkPHP 时间字段自动转换 + +- BaseModel 子类查询后 `create_time` / `update_time` 已按配置转为日期字符串。 +- 不要对这些字段再次手动 `date()` 转换,避免字符串强转整数导致显示为 1970-01-01。 + +### 2. MySQL 保留字 + +- 原生 SQL 中 `system`、`order`、`group`、`key` 等字段必须使用反引号包裹。 + +### 3. 逗号分隔输入清理 + +- 手机号、关键词等逗号分隔输入,提交前必须执行 `split → trim → filter(Boolean) → join`。 + +### 4. 外站图片防盗链 + +- 新闻详情等富文本中的外站图片如出现 403,优先在前端渲染层设置 `referrerpolicy="no-referrer"`。 +- 不擅自清洗图片 URL 参数或改写原始路径。 + +### 5. 测试服务器代码同步 + +- 不通过 WSL `sshpass` / `scp` 上传业务代码。 +- 项目代码更新由用户通过 SFTP 等方式处理。 + +--- + +## 文档维护规范 + +1. **每完成一个 issue / 功能点 → 立即追加到「已完成事项」**。 +2. **每发现一个坑 → 立即追加到「避坑记录」**。 +3. **每周清理一次「进行中」与「待办」状态**。 +4. **章节序号连续递增,不重排**,保留历史可追溯。 +5. **涉及数据库变更必须列出表名和字段**。 diff --git a/设计稿映射.md b/设计稿映射.md new file mode 100644 index 0000000..635857a --- /dev/null +++ b/设计稿映射.md @@ -0,0 +1,58 @@ +# 设计稿映射 + +> 维护设计稿与前端页面/组件的映射关系。新增页面或还原设计稿前必查。 + +## 设计稿入口 + +| 平台 | 链接 | 项目 ID / 备注 | +| --- | --- | --- | +| 蓝湖 | 待补充 | 待补充 | +| Figma | 待补充 | 待补充 | + +## 状态图例 + +- ✅ 已完成 +- 🚧 部分完成(含具体未完成点) +- ⏳ 待开发 +- ⚠️ 仅需求备注(无视觉导出) + +--- + +## 移动端页面映射 + +| 设计稿名称 | uniapp 页面路径 | 状态 | 备注 | +| --- | --- | --- | --- | +| 赛事中心(含世界杯专题入口) | `uniapp/src/pages/match/match.vue` | ✅ 已完成 | 2026-05-20 按世界杯专题稿补充顶部蓝色专题入口,入口位于标题与运动分类之间 | +| 首页 | `uniapp/src/pages/index/index.vue` | 待核对 | 需结合实际设计稿补充 | +| 新闻详情 | `uniapp/src/pages/news_detail/news_detail.vue` | 待核对 | 富文本与图片渲染已存在相关实现 | +| 个人中心 | 待补充 | 待核对 | 需核对实际页面路径 | +| AI 分析 | 待补充 | 待核对 | 需核对实际页面路径 | + +--- + +## 管理后台页面映射 + +| 设计稿名称 | admin 页面路径 | 状态 | 备注 | +| --- | --- | --- | --- | +| 工作台 | 待补充 | 待核对 | 需核对实际页面路径 | +| 新闻/文章管理 | 待补充 | 待核对 | 需核对实际页面路径 | +| 系统配置 | 待补充 | 待核对 | 需核对实际页面路径 | + +--- + +## PC 前台页面映射 + +| 设计稿名称 | pc 页面路径 | 状态 | 备注 | +| --- | --- | --- | --- | +| PC 首页 | `pc/pages/index.vue` | 待核对 | 需结合实际设计稿补充 | +| 新闻详情 | 待补充 | 待核对 | 需核对实际页面路径 | + +--- + +## 维护规范 + +1. **新增设计稿 → 立即在对应表追加条目**,状态置为 ⏳。 +2. **页面开发完成 → 更新状态为 ✅**。 +3. **设计稿变更 → 在备注列写明变更日期与差异点**。 +4. **需求备注节点不导出视觉**:标 ⚠️,不要在前端开发时寻找视觉资源。 +5. **设计稿名称严格使用蓝湖/Figma 节点全称**,避免歧义。