Files
sbnews/业务进度管理.md
T
2026-06-10 13:10:20 +08:00

29 KiB
Raw Blame History

业务进度管理

本文档用于跟踪 Sport Era 项目所有功能模块的开发状态、待办事项与避坑记录。每完成一个功能或发现一个坑,及时在对应章节追加。

目录


一、已完成事项

25. 社区帖子 RAG 生成模型切换到 Qwen3.7

  • 状态:已完成 - 时间:2026-06-10

完成内容:

  • 排查 /api/community/aiAnalysis 仍返回 DeepSeek 返回异常: Insufficient Balance 的原因,确认图片识别已走 DashScope Qwen,但帖子 RAG 最终 JSON 生成仍复用默认 DeepSeek 配置。
  • 已将 KbRagService::analyzePost() 的最终生成阶段改为 DashScope OpenAI 兼容接口,模型固定为 qwen3.7-plus,使用 server/.envDASHSCOPE_API_KEY
  • DeepSeekClient 作为 OpenAI 兼容 HTTP 客户端保留,但现在会按调用方传入的 provider_label 返回错误提示;帖子分析失败时将显示 DashScope(Qwen),不再误导为 DeepSeek。
  • AiService::saveResult() 已改为记录下游返回的真实模型名,帖子 AI 日志会写入 qwen3.7-plus

涉及模块:

  • server/app/common/service/ai/KbRagService.php
  • server/app/common/service/ai/DeepSeekClient.php
  • server/app/common/service/ai/AiService.php

24. 社区帖子 AI 分析改为统一分析页并显示分析计时

  • 状态:已完成 - 时间:2026-06-10

完成内容:

  • 社区列表页与首页社区流中的六合彩帖子 AI分析 入口已改为直接跳转统一分析页 /pages/ai_analysis/ai_analysis?type=post&id=...,不再先进帖子详情页再等待页内分析。
  • 帖子详情页中的 AI分析 按钮也已切换为直接跳统一分析页;旧的 show_ai=1 链路改为兼容重定向,避免历史入口失效。
  • 统一分析页已新增 post 类型支持,接入 /api/community/aiAnalysis,并展示帖子卡片、综合结论、下期预测、可信线索、风险提示、相似历史和知识库证据。
  • AI 分析加载阶段新增“分析用时 0m1s”计时显示;赛事分段分析的后续阶段 loading 也会继续显示累计分析时长,避免长耗时场景下用户无感等待。

涉及模块:

  • uniapp/src/pages/ai_analysis/ai_analysis.vue
  • uniapp/src/packages_community/pages/post_detail.vue
  • uniapp/src/packages_community/pages/index.vue
  • uniapp/src/pages/empty/empty.vue

23. 六合图片分析升级到 Qwen3.7 并移除代码内密钥

  • 状态:已完成 - 时间:2026-06-10

完成内容:

  • AiService::analyzeLotteryPostImages() 已将 DashScope 视觉模型从旧版 qwen-vl-max-latest 切换为新版统一多模态模型 qwen3.7-plus,继续沿用 OpenAI 兼容接口 https://dashscope.aliyuncs.com/compatible-mode
  • 移除了 AiService 中硬编码的 DashScope API Key,改为统一从 server/.envDASHSCOPE_API_KEY 读取,避免密钥继续直接写入代码文件。
  • 同步补充 server/.example.env 的 DashScope Key 占位配置,便于后续环境初始化和部署时对齐。

涉及模块:

  • server/app/common/service/ai/AiService.php
  • server/.env
  • server/.example.env

22. 六合图片分析 404 链路修复

  • 状态:已完成 - 时间:2026-06-09

完成内容:

  • 排查 /api/community/translatePost旧澳六合/新澳六合 图片分析分支返回 HTTP 404 的问题,确认不是帖子不存在,而是 Qwen 视觉模型请求地址被拼成了 .../v1/v1/chat/completions
  • 已将 AiService 中 DashScope 兼容接口基地址收敛为 https://dashscope.aliyuncs.com/compatible-mode,并在 DeepSeekClient 中补充聊天接口地址规范化,兼容 base_url 传入根地址、/v1 地址或完整 /chat/completions 地址,避免后续再次重复拼接。
  • 同步把多模型错误提示统一改为带 provider 名称返回,后续如果 DashScope/Qwen 鉴权或模型权限异常,接口会更容易直接看出来自哪个下游。

涉及模块:

  • server/app/common/service/ai/AiService.php
  • server/app/common/service/ai/DeepSeekClient.php

21. 六合图片分析切换到 DashScope Qwen 视觉模型

  • 状态:已完成 - 时间:2026-06-09

完成内容:

  • AiService::analyzeLotteryPostImages() 已按当前需求固定改为调用阿里云 DashScope OpenAI 兼容接口,不再读取后台 lottery_image_analysis_*deepseek_vision_model 配置。
  • 当前六合彩图片分析分支硬编码使用 Qwen 视觉模型 qwen-vl-max-latest,兼容接口基地址统一为 https://dashscope.aliyuncs.com/compatible-mode,由客户端自动补齐聊天接口路径,并使用指定的 DashScope API Key。
  • 错误提示中的 provider 标识已改为 DashScope(Qwen),方便后续定位图片分析失败是否来自 Qwen 视觉链路。
  • 同步收紧图片分析提示词,新增“先过滤噪音再逐项分析”的规则,只保留当期号码、图表结论、推荐组合等有效信息,忽略水印、口号、装饰边框、重复标题和低置信度杂讯。

涉及模块:

  • server/app/common/service/ai/AiService.php

20. 六合帖子 translatePost 收紧为纯图片分析

  • 状态:已完成 - 时间:2026-06-09

完成内容:

  • /api/community/translatePost新澳六合 / 旧澳六合 已改为只走当前帖子图片分析,不再接受旧版六合彩分析缓存直接命中。
  • 新增 lottery_analysis_source=image_onlylottery_analysis_images_hash 标记,只有明确由当前帖子图片生成的分析结果才会复用;旧缓存或图片已变更时会重新按图片分析。
  • 移除了六合彩图片分析失败时写入“虚拟历史分析文案”的兜底逻辑,当前图片无法识别时接口会直接返回失败,避免返回看似真实、实则并非基于当前图片的内容。
  • 同步收紧图片分析提示词,明确禁止引用往期内容、历史期数、知识库信息或模型记忆;社区列表侧也只展示 image_only 来源的六合彩分析结果。

涉及模块:

  • server/app/api/controller/CommunityController.php
  • server/app/api/lists/community/CommunityPostLists.php
  • server/app/common/service/ai/AiService.php

19. 社区帖子分支链路收紧为“普通/特朗普/六合”三类

  • 状态:已完成 - 时间:2026-06-09

完成内容:

  • 重新梳理社区帖子链路后,已将普通帖子、特朗普帖子、新澳六合/旧澳六合 帖子的入口分支彻底拆开:普通帖子不再显示或触发 AI 分析;特朗普帖子只保留本地 MTranServer 翻译链路;六合帖子才显示 AI 入口。
  • post-card/pages/empty/empty、社区分包列表页、帖子详情页已统一按 旧澳六合/新澳六合 标签控制 AI 按钮和 show_ai=1 跳转,避免普通帖误入 /api/community/aiAnalysis
  • 后端 CommunityController::aiAnalysis() 已改为只接受六合帖,并在进入知识库分析前先确保 lottery_analysis_content 已由视觉模型完成图片识别;translatePost() 的彩票图片分析分支也同步从泛 彩票 收紧为 a6/xa6
  • KbRagService::analyzePost()AiService::analyzePost() 已补强:当前帖子本身只要识别为 a6/xa6 就稳定输出 next_prediction,并跳过缺少预测字段的旧缓存,避免仍回落到历史错误结果。

涉及模块:

  • uniapp/src/pages/empty/empty.vue
  • uniapp/src/packages_community/pages/index.vue
  • uniapp/src/packages_community/components/post-card.vue
  • uniapp/src/packages_community/pages/post_detail.vue
  • server/app/api/controller/CommunityController.php
  • server/app/api/lists/community/CommunityPostLists.php
  • server/app/common/service/ai/AiService.php
  • server/app/common/service/ai/KbRagService.php

18. 世界杯资讯与特朗普帖子翻译切换 GPT-4o

  • 状态:已完成 - 时间:2026-06-09

完成内容:

  • 世界杯资讯翻译链路已改为按文章分类识别:当资讯属于“世界杯”分类时,ArticleLogic::translate()autoTranslateArticle() 会优先走 GPT-4o 翻译,不影响其他资讯仍沿用原有翻译模型。
  • 特朗普帖子翻译链路已改为按帖子标签识别:社区列表自动预热、帖子详情自动补翻译、/api/community/translatePost 手动翻译这 3 条路径,命中“特朗普”标签时统一走 GPT-4o
  • 在 AI 配置层新增 openai_api_key / openai_base_url / openai_translation_model 约定,并补充幂等 SQL docs/sql/insert_ai_translation_gpt4o_config.sql;后台知识库配置列表已放开 openai_% 配置项,便于直接维护 GPT-4o 翻译参数。
  • 同步把 OpenAI 兼容翻译调用的错误文案改成按 provider 显示,避免 GPT-4o 未配置时仍提示成 DeepSeek API Key未配置

涉及模块:

  • server/app/common/service/ai/DeepSeekClient.php
  • server/app/common/service/ai/AiService.php
  • server/app/api/logic/ArticleLogic.php
  • server/app/api/controller/CommunityController.php
  • server/app/api/lists/community/CommunityPostLists.php
  • server/app/adminapi/lists/ai/KbConfigLists.php
  • docs/sql/insert_ai_translation_gpt4o_config.sql

17. 定时任务企业微信告警接入

  • 状态:已完成 - 时间:2026-06-08

完成内容:

  • 为 crawler 本地配置增加 alert.dispatch_enabled / alert.wecom_webhook / alert.cooldown_seconds,企业微信告警改走固定群机器人 Webhook,本地维护,不做后台配置页。
  • 新增统一告警表 la_crontab_alert,并在 Python Database 与 PHP CrontabAlertService 中同时补上建表与读写逻辑,支持告警创建、30 分钟冷却、成功恢复后自动关闭。
  • main.py 已增加 TASK_ALERT_POLICY 与标准化运行摘要;已启用的 crawler 任务按“采集型 saved_required / 维护型 saved_if_candidates / error_report 跳过自告警”规则统一落库告警。
  • ErrorCollector 已扩展为记录单次运行的 404 / 5xx / 网络异常 统计;error_report 任务已改为读取 la_crontab_alert 并尝试分发企业微信消息。
  • crawler 的 PHP 定时任务(如 sms_verifyworldcup_article_translate)已通过 Crontab.php 接入同一张告警表,仅在执行异常时产生 command_exception 告警。
  • 已新增幂等 SQL server/public/dongqiudi-crawler/update_crontab_error_report.sql,并已把测试服现有 error_report 任务频率从 */5 * * * * 调整为 */1 * * * *

涉及模块:

  • server/public/dongqiudi-crawler/config/settings.yaml
  • server/public/dongqiudi-crawler/main.py
  • server/public/dongqiudi-crawler/src/core/error_collector.py
  • server/public/dongqiudi-crawler/src/core/alert_manager.py
  • server/public/dongqiudi-crawler/src/storage/database.py
  • server/public/dongqiudi-crawler/src/scheduler/task_runner.py
  • server/app/common/command/Crontab.php
  • server/app/common/service/crontab/CrontabAlertService.php
  • server/public/dongqiudi-crawler/update_crontab_error_report.sql

16. 资讯无正文默认稿子并禁止发布

  • 状态:已完成 - 时间:2026-06-07

完成内容:

  • 为爬虫侧新增 article_publish_helper.py,统一判断资讯正文是否达到可发布标准;没有拉到正文、只有 RSS 摘要或占位文本的文章,采集入库时默认写成稿子状态(is_show=0)。
  • article_fetcher.py 已调整为优先处理稿子状态或正文明显不足的资讯;抓到真实正文后会自动写回 content,同时将文章切回发布状态并重置 content_retry
  • nba_news.pycba_news.pycrypto_news.pylottery_news.pyhkjc_lottery_news.pytaiwan_lottery_news.pyfifa_worldcup_news.py 已统一接入该规则,避免后续新采文章在正文未完成时直接暴露到前台。
  • 后台 ArticleLogic / ArticleController 已增加发布拦截:手动新增、编辑或切换状态时,如果正文未达到发布标准,会直接返回“暂不能发布,请先保存为稿子”。
  • 已在测试服先行回退当前可见的 NBA / CBA 占位稿:示例 19039061915226 的公开详情现已返回空数据,不再继续对前台暴露无正文资讯。

涉及模块:

  • server/public/dongqiudi-crawler/article_publish_helper.py
  • server/public/dongqiudi-crawler/article_fetcher.py
  • server/public/dongqiudi-crawler/nba_news.py
  • server/public/dongqiudi-crawler/cba_news.py
  • server/public/dongqiudi-crawler/crypto_news.py
  • server/public/dongqiudi-crawler/lottery_news.py
  • server/public/dongqiudi-crawler/hkjc_lottery_news.py
  • server/public/dongqiudi-crawler/taiwan_lottery_news.py
  • server/public/dongqiudi-crawler/fifa_worldcup_news.py
  • server/app/common/model/article/Article.php
  • server/app/adminapi/logic/article/ArticleLogic.php
  • server/app/adminapi/controller/article/ArticleController.php

15. NBA / CBA 资讯正文抓取补回退链路

  • 状态:已完成 - 时间:2026-06-07

完成内容:

  • 继续排查发现,NBA / CBA 资讯列表入库后,详情正文并不是完全没跑,而是由 article_content_fetch 每轮按分类各抓 3 条慢慢补;因此刚采集完的一大批文章会先以 RSS 摘要占位,随后逐轮补正文。
  • 测试服执行日志确认 article_content_fetch 一直在跑,但部分 Google News 解码后的真实地址(如 m.sohu.comsports.sina.cnsports.cctv.com)在 scrapling Fetcher 路径下会返回 HTTP 403,导致正文抓取失败并累计 content_retry
  • 已为 server/public/dongqiudi-crawler/article_fetcher.py 增加 requests + BeautifulSoup 回退抓取链路:当 scrapling 返回 403 或抛异常时,改用普通请求抓页面并复用同一套正文抽取规则,降低这类站点的正文缺失率。
  • 同步补充 server/public/dongqiudi-crawler/requirements.txtbeautifulsoup4 依赖声明,避免后续环境重装时漏掉回退解析库。

涉及模块:

  • server/public/dongqiudi-crawler/article_fetcher.py
  • server/public/dongqiudi-crawler/requirements.txt

14. NBA / CBA 资讯定时任务补注册与恢复拉取

  • 状态:已完成 - 时间:2026-06-07

完成内容:

  • 排查发现 server/public/dongqiudi-crawler/main.pynba_news.pycba_news.py 代码入口都已存在,article_content_fetch 也已覆盖 cid=17/18 的正文补全,但测试服 la_dev_crontab 中缺少 nba_newscba_news 两个定时任务,所以后台从未自动触发 NBA / CBA 资讯采集。
  • 已补充幂等 SQL insert_crontab_nba_news.sqlinsert_crontab_cba_news.sql,分别注册 crawler nba_newscrawler cba_news
  • 已在测试服后台实际创建两条任务,当前执行规则分别为 10 * * * *NBA)和 20 * * * *CBA),状态均为“运行”。
  • 已手动验证一次:NBA 任务成功抓取 100 条,新增 99 条;CBA 任务成功抓取 169 条,新增 152 条。
  • 已继续验证正文抓取链路:article_content_fetch 在 2026-06-07 00:50 自动处理了新入库的 NBA / CBA 文章,成功补全 4 篇正文;另有 2 篇源站返回 HTTP 403,已按现有 content_retry 机制记录重试。

涉及模块:

  • server/public/dongqiudi-crawler/main.py
  • server/public/dongqiudi-crawler/nba_news.py
  • server/public/dongqiudi-crawler/cba_news.py
  • server/public/dongqiudi-crawler/article_fetcher.py
  • server/public/dongqiudi-crawler/insert_crontab_nba_news.sql
  • server/public/dongqiudi-crawler/insert_crontab_cba_news.sql

13. 赛事 AI 分段分析接入知识库召回

  • 状态:已完成 - 时间:2026-06-06

完成内容:

  • 排查发现 /api/ai/matchPredictSection 原链路只会组装 match_info / head_to_head / home_recent / away_recent 后直接调用 DeepSeekClient::chatJson(),并不会进入知识库检索层。
  • 现已为赛事分析补充 KbRagService::analyzeMatch()analyzeMatchSection(),先根据主队、客队、联赛名到知识库中召回相关资讯/帖子,再把召回证据与结构化交手记录、近期战绩、赔率一起交给 LLM。
  • AiService::predictMatch()predictMatchSection() 已切换到赛事专用 RAG 链路,返回结果增加 evidence_list / similar_history / from_kb / retrieval_meta 等知识库增强字段。
  • 为避免旧的赛事分段缓存继续短路新链路,当前逻辑只接受带知识库字段痕迹的新缓存;老缓存会自动跳过并重新走 RAG 生成。
  • 当前赛事 RAG 仍未把 match_event / match_history / match_recent 建成独立知识库 domain,交手记录和近期战绩继续直接从业务表读取;知识库侧主要召回相关资讯与帖子。

涉及模块:

  • server/app/common/service/ai/AiService.php
  • server/app/common/service/ai/KbRagService.php
  • server/app/common/service/ai/KbService.php
  • server/app/api/controller/AiController.php

12. 全站 AI 知识库与 RAG 分析底座

  • 状态:已完成 - 时间:2026-06-06

完成内容:

  • 新增 AI 知识库底座表设计与 SQL:la_ai_kb_documentla_ai_kb_chunkla_ai_kb_sync_jobla_ai_kb_query_log,并补充知识库菜单与 Embedding / KB 配置初始化 SQL。
  • 后端新增 KbService / KbSyncService / EmbeddingClient / KbRagService,支持资讯、帖子、彩票历史内容统一建档、切片、Embedding、全文候选、向量重排、规则混排和查询日志记录。
  • 新增控制台命令 php think kb:rebuildphp think kb:consume,支持全量回填与增量消费;文章新增/编辑/上下架、帖子发布/删除/翻译缓存更新已接入同步任务队列,彩票历史通过消费命令补录扫描。
  • 现有 AiService 已接入知识库增强分析:资讯分析、彩票总分析、彩票分模块分析统一增加 from_kb / evidence_list / similar_history / retrieval_meta;新增帖子专属接口 GET /api/community/aiAnalysis?post_id={id}
  • 管理后台新增知识库配置、知识文档、同步任务、查询日志页面与对应 API,且扩展了 AI 分析记录 / AI 日志类型展示。
  • 新增 qa/backend/test_kb_article_analysis.pyqa/backend/test_kb_post_analysis.py 作为知识库增强接口的最小冒烟脚本。

涉及模块:

  • server/app/common/model/ai/*
  • server/app/common/service/ai/*
  • server/app/common/command/KbRebuild.php
  • server/app/common/command/KbConsume.php
  • server/app/api/controller/CommunityController.php
  • server/app/common/service/ai/AiService.php
  • server/app/adminapi/controller/ai/*
  • admin/src/views/ai/*
  • docs/sql/create_ai_kb_tables.sql
  • docs/sql/insert_ai_kb_config.sql
  • docs/sql/insert_menu_ai_kb.sql
  • qa/backend/test_kb_article_analysis.py
  • qa/backend/test_kb_post_analysis.py

11. 彩票资讯远程图片代理中转

  • 状态:已完成 - 时间:2026-06-03

完成内容:

  • 为前台资讯接口补充 ArticleImageProxyService,对白名单内的香港赛马会与台湾彩券远程图片生成站内代理地址。
  • 新增公开接口 /api/article/imageProxy,由服务器代拉 res.hkjc.comcdn.taiwanlottery.com.tw 等远程图片并回传,规避国内客户端无法直连的问题。
  • ArticleLogic::detail()ArticleLists::lists() 已统一接入代理改写,老文章无需重采即可让详情正文图片和列表封面图走服务器中转。
  • 代理按 ext.source 白名单控制,仅对 hkjc_racingnewstaiwan_lottery 两类彩票资讯生效,降低 SSRF 风险。

涉及模块:

  • server/app/common/service/article/ArticleImageProxyService.php
  • server/app/api/controller/ArticleController.php
  • server/app/api/logic/ArticleLogic.php
  • server/app/api/lists/article/ArticleLists.php

1. 项目基础文档与协作协议

  • 状态:已完成 - 时间:2026-05-07

完成内容:

  • 创建根目录 AGENTS.md,记录项目技术栈、子模块分工、数据库基准与协作规范。
  • 创建 server/AGENTS.mdadmin/AGENTS.mduniapp/AGENTS.mdpc/AGENTS.mdqa/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

10. 彩票 AI 趋势分析坏缓存容错

  • 状态:已完成 - 时间:2026-06-03

完成内容:

  • 排查 /api/lottery/aiTrend?code=XOMLHC 时发现,当前问题不是彩种不存在,也不是当前 DeepSeek key 鉴权失败,而是命中了 la_ai_analysis 中一条 type=4 的成功缓存,但该缓存 result 实际是 JSON 字符串 \"\"json_decode(..., true) 后得到的是字符串而不是数组。
  • server/app/common/service/ai/AiService.phpanalyzeLotteryModule() 已补充防守:彩票 AI 模块缓存只有在解码后为非空数组时才视为有效;若模型返回的 parsed 不是数组或为空,也不再写入“成功缓存”,而是按格式异常处理。
  • 这样可以避免旧的坏缓存继续让 LotteryController::aiTrend()aiHotCold()aiStats()aiColorZodiac() 走到 $this->data(string) 并触发类型错误。

涉及模块:

  • server/app/common/service/ai/AiService.php

9. 世界杯资讯翻译预热限制为列表前 50 条

  • 状态:已完成 - 时间:2026-06-03

完成内容:

  • 调整 server/app/common/command/WorldcupArticleTranslate.php,世界杯英文资讯翻译预热不再全量扫描全部文章。
  • 预热范围改为按前台资讯列表同口径排序:published_at desc, id desc,仅处理用户当前最先看到的前 50 条世界杯资讯。
  • 这样可以在 AI key 恢复后优先补齐前台首屏和专题页最靠前文章的翻译缓存,避免一次性处理历史文章拖慢恢复。

涉及模块:

  • server/app/common/command/WorldcupArticleTranslate.php

9. 世界杯比赛详情接口默认直播链接

  • 状态:已完成 - 时间:2026-06-03

完成内容:

  • server/app/api/controller/MatchController.php 在前台 /api/match/detail 接口中为世界杯比赛补充默认直播链接。
  • 当赛事 league_name=世界杯competition_id=61 且数据库 live_url 为空时,接口响应中的 live_url 默认返回 https://sports.cctv.com/?spm=C28340.P9mj1V5B06xk.E2XVQsMhlk44.7
  • 默认值仅在接口响应层兜底,不写回数据库;后台已维护的 live_url 仍优先返回,用户端继续只消费接口返回字段。

涉及模块:

  • server/app/api/controller/MatchController.php
  • admin/src/views/match/lists/index.vue
  • uniapp/src/pages/match_detail/match_detail.vue
  • 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-产品方案文档.md02-实现流程文档.md爬虫任务脚本文档.mddocs/ 目录移动到项目根目录统一维护。
  • 在根目录 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=61sport_type=1,并保留 round_namestage
  • 新增世界杯缓存表 la_worldcup_standingla_worldcup_person_ranking,保留小组积分榜和球员榜结构。
  • 新增幂等 SQL insert_crontab_dqd_worldcup.sql,自动创建并启用足球二级分类"世界杯",同时注册 crawler dqd_worldcup 定时任务。
  • MatchController 新增 worldCupStandingsworldCupRankingsworldCupSchedule 3 个前台接口,供用户端世界杯中心使用。
  • 用户端 pages/match/match 在"足球 > 世界杯"分类下新增"赛程对阵图"顶部入口卡,并新增 packages_match/pages/worldcup 世界杯专属页,提供"对阵图 / 积分榜 / 射手榜 / 助攻榜 / 赛程" 5 个 tab。
  • 已在测试库执行 SQL 并手动跑通一次采集,当前写入结果为:la_match 104 场、la_worldcup_standing 48 条、la_worldcup_person_rankinggoals/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

8. 49宝典新澳六合/旧奥六合爬取 API 格式适配修复

  • 状态:已完成 - 时间:2026-06-01

完成内容:

  • 发现新澳六合(xa6)和旧奥六合(a6)的 draw 类型帖子自 2026-05-29 起停止更新,根源为第三方 API 变更响应格式。
  • 字段变更:开奖号码数组从 openCode 迁移到 currentResult,期号从 issue 迁移到 currentCompleteIssue/currentIssue
  • 字段编码:五行由中文(金木水火土)变为字母编码(j/m/s/h/t),单双由中文(单双)变为字母编码(o/e),大小由中文(大小)变为字母编码(b/s),颜色新增 R/G/B 编码。
  • 时间格式:开奖时间从时间戳变为 "Y-m-d H:i:s" 字符串格式。
  • 修复 lottery_community.pybuild_draw_post 函数,添加 WUXING_MAPODD_EVEN_MAPSIZE_MAP 等映射表,增强 color_text 函数支持 R/G/B 编码,增强 format_time 函数支持字符串时间格式。
  • 修复后的代码在 2026-05-31 18:10 的执行中成功同步:xa6 新增 92 条(含 1 条 draw + 91 条 gallery),a6 更新 101 条。
  • 数据库验证:xa6 和 a6 的 draw 类型均已同步到最新 2026151 期,gallery 类型同步到最新数据。
  • 注意:2026149-2026150 期因 API 格式变更期间不可回溯(API 只返回当前期),已无法补回。 涉及模块:
  • server/public/dongqiudi-crawler/lottery_community.py