14 KiB
14 KiB
业务进度管理
本文件用于跟踪 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.mdserver/AGENTS.mdadmin/AGENTS.mduniapp/AGENTS.mdpc/AGENTS.mdqa/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.pyserver/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.phpserver/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.pyserver/public/dongqiudi-crawler/main.pyserver/app/common/command/CrawlerCommand.phpserver/public/dongqiudi-crawler/insert_crontab_lottery_community.sql
5. 项目级文档归档到根目录
- 状态:已完成
- 时间:2026-05-14
完成内容:
- 将项目级文档
01-产品方案文档.md、02-实现流程文档.md、爬虫任务脚本文档.md从docs/目录移动到项目根目录统一维护。 - 在根目录
AGENTS.md中补充项目级文档存放规则,明确协作类与业务类总文档默认放根目录。 - 同步修正文档引用路径,避免后续继续引用旧的
docs/路径。
涉及模块:
AGENTS.md业务进度管理.md01-产品方案文档.md02-实现流程文档.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.pyserver/public/dongqiudi-crawler/main.pyserver/public/dongqiudi-crawler/insert_crontab_fifa_worldcup_news.sqlserver/app/common/command/CrawlerCommand.phpserver/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、worldCupSchedule3 个前台接口,供用户端世界杯中心使用。- 用户端
pages/match/match在“足球 > 世界杯”分类下新增“赛程对阵图”顶部入口卡,并新增packages_match/pages/worldcup世界杯专属页,提供“对阵图 / 积分榜 / 射手榜 / 助攻榜 / 赛程”5 个 tab。 - 已在测试库执行 SQL 并手动跑通一次采集,当前写入结果为:
la_match104 场、la_worldcup_standing48 条、la_worldcup_person_ranking的goals/assists暂为空。 - 已验证测试服
/api/match/leagues和/api/match/lists?league_name=世界杯可返回世界杯分类与赛程;worldCupStandings / worldCupRankings / worldCupSchedule仍需等待后端自动同步到测试服后再做最终联调。
涉及模块:
server/public/dongqiudi-crawler/dqd_worldcup.pyserver/public/dongqiudi-crawler/main.pyserver/public/dongqiudi-crawler/insert_crontab_dqd_worldcup.sqlserver/app/common/command/CrawlerCommand.phpserver/app/common/model/match/WorldCupStanding.phpserver/app/common/model/match/WorldCupPersonRanking.phpserver/app/api/controller/MatchController.phpuniapp/src/api/match.tsuniapp/src/pages/match/match.vueuniapp/src/packages_match/pages/worldcup.vueuniapp/src/pages.json
8. 赛事中心顶部世界杯专题入口优化
- 状态:已完成
- 时间:2026-05-20
完成内容:
- 参考世界杯专题设计稿,将用户端
pages/match/match的世界杯入口从赛事列表区上移到页面头部,放在标题与运动分类之间。 - 新入口改为蓝色专题卡样式,展示
2026年国际足联世界杯与赛事时间区间,点击继续跳转现有世界杯专属页。 - 移除原先仅在“足球 > 世界杯”分类下显示的列表内入口,避免同页重复出现两个世界杯入口。
- 调整赛事页列表高度计算逻辑,改为按实际头部高度回算,避免新增专题卡后遮挡分类条或压缩列表区域。
- 已完成
npm run build:h5构建,并通过浏览器在本地 H5 验证专题入口已出现在赛事页顶部。
涉及模块:
uniapp/src/pages/match/match.vue业务进度管理.md设计稿映射.md
9. 世界杯专题页排名导航组件化
- 状态:已完成
- 时间:2026-05-20
完成内容:
- 参考世界杯专题页“排名”设计稿,将排名区从
worldcup.vue页面内联结构拆分为独立组件。 - 新增排名导航组件
RankingNav.vue,统一承载积分榜 / 射手榜 / 助攻榜切换。 - 新增积分榜组件
StandingsPanel.vue,单独负责分组标题、表头与球队积分表格渲染。 - 新增球员榜组件
PlayerRankingPanel.vue,单独负责射手榜与助攻榜列表渲染。 - 积分榜布局按专题设计稿细化为“球队固定在左、场次/胜平负/进失/积分集中在右”的双区块表格结构,移动端表头与数据列保持对齐。
worldcup.vue只保留专题主导航、数据加载与 ranking 组件调度,降低页面耦合,便于后续继续按设计稿细化榜单样式。- 已执行
npm run build:h5并通过本地 H5 校验“排名”页可正常展示组件化后的导航与积分榜内容。
涉及模块:
uniapp/src/packages_match/pages/worldcup.vueuniapp/src/packages_match/pages/worldcup/components/ranking/RankingNav.vueuniapp/src/packages_match/pages/worldcup/components/ranking/StandingsPanel.vueuniapp/src/packages_match/pages/worldcup/components/ranking/PlayerRankingPanel.vue业务进度管理.md
10. 世界杯专题页对阵图按真实球队映射
- 状态:已完成
- 时间:2026-05-20
完成内容:
- 用户端
packages_match/pages/worldcup对阵图页新增基于worldCupStandings的分组名次索引,将A1/A2/.../L4直接映射为当前积分榜中的真实球队名称与队徽。 1/16决赛中的第三名组合占位符(如A3/B3/C3/D3/F3)改为逐项替换后再拼接展示,避免继续显示字母占位符。- 对仍然是“第X场胜者/败者”的后续轮次占位保持原样,不伪造未产生的晋级结果;对无法确定真实队徽的组合占位不再显示默认占位图。
- 为多球队组合名称增加两行展示样式,避免长文本在专题对阵卡片中被单行截断。
- 已执行
uniapp构建验证:npm run build:h5通过。
涉及模块:
uniapp/src/packages_match/pages/worldcup.vue业务进度管理.md
11. 短信助手同步短信与来电记录入库
- 状态:已完成
- 时间:2026-05-22
完成内容:
- 扩展
/api/sms/uploadSms,同时接收手机端上传的smsList与callList,统一写入la_sms_upload。 - 保持短信验证码链路兼容:短信记录仍沿用
type=1/2、status=0/1;来电记录使用type=11/13/15区分“已接/未接/拒接”,并使用status=2表示“不适用”。 - 登录/绑手机号的短信验证码校验规则调整为:只要
la_sms_upload中存在该手机号的任意上传记录,即视为验证通过,不再要求短信内容与输入验证码完全匹配,也不再限制 7 天内或短信类型。 - 助手端采集范围收紧为:短信只上传收到的短信,来电只上传打进来的号码,过滤自己发出去的短信和主动拨出的通话记录。
- 助手端恢复来电真实上传,不再将来电请求按“短信列表为空”视作跳过,并增加助手端请求/响应打印,便于排查实际上传内容。
- 管理端“系统设置 -> 系统维护 -> 验证码”列表同步支持展示来电记录,新增“记录类型”列,并补充“不适用”状态展示。
- 新增 SQL 脚本
docs/sql/alter_la_sms_upload_for_call_records.sql,用于将la_sms_upload.status注释扩展为0=待验证 1=已使用 2=不适用。
涉及数据库变更:
la_sms_upload.status
涉及模块:
server/app/api/controller/SmsController.phpserver/app/api/logic/LoginLogic.phpserver/app/api/logic/UserLogic.phpserver/app/adminapi/lists/setting/SmsUploadLists.phpadmin/src/views/setting/system/sms_upload.vuesport-era-msg/pages/index/index.vuesport-era-msg/pages/logs/logs.vuedocs/sql/alter_la_sms_upload_for_call_records.sql业务进度管理.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 等方式处理。
文档维护规范
- 每完成一个 issue / 功能点 → 立即追加到「已完成事项」。
- 每发现一个坑 → 立即追加到「避坑记录」。
- 每周清理一次「进行中」与「待办」状态。
- 章节序号连续递增,不重排,保留历史可追溯。
- 涉及数据库变更必须列出表名和字段。