vincent
|
e4e66f3826
|
BIZ-102 v1.1: 记录-比对 中奖金额展示 PRD 与 UI 原型
v1.0: 3 字段增量扩展(prize_amount/total_prize/prize_summary)+ 前端 3 处扩展
v1.1: 落实架构评审 3 点意见
- 金额字段统一'(单位:元)'与量级安全说明
- prize_summary key 改英文枚举(first_prize..sixth_prize),新增 prize_level 中文名
- floating 标记落 results[i] 与 prize_summary[key] 两粒度
- 兼容性条款:每次实时计算,不依赖持久化
Co-authored-by: multica-agent <github@multica.ai>
|
2026-08-30 15:19:33 +08:00 |
|
vincent
|
4bfb9964db
|
merge: BIZ-87 中奖比对算法修复 + P2/P3 迭代
修复中奖比对算法(BIZ-87):
- 新增 find_draw_by_gen_time() 窗口归属模型
- 修复所有生成记录都比对最新一期的 bug
P2/P3 代码质量改进:
- 删除死代码 load_latest_draw / find_next_draw_after
- 抽取 _row_to_draw 公共函数
- compare_type 细化为 same_day / cross_day / waiting
- 边界条件 <= 改为 < 严格对齐规则 2.2
- 删除不可达 elif 死分支
审核通过:架构/产品/COO/运维 四方审核 ✅
|
2026-07-09 08:33:40 +08:00 |
|
vincent
|
93295db357
|
refactor(BIZ-87): P2/P3 迭代——代码质量改进
P2-1: 删除死代码 load_latest_draw() 和 find_next_draw_after()
- 两个函数在修复后已无任何调用点,删除避免误导维护者
P2-2: 抽取 row_to_draw 为模块级 _row_to_draw() 公共函数
- 消除三处重复代码,统一调用入口
P2-3: compare_type 细化为 same_day / cross_day / waiting
- 原 'current' 语义模糊,现区分同日 vs 跨日归属
P2-4: 边界条件修复 <= → <
- 严格对齐规则 2.2:生成时间 ≥ 20:00 归属下一期
- 恰好 20:00:00 现在正确归属下一期
P3: 删除不可达的 elif 死分支
- 移除注释已说明不会到达的防御性代码
验证:8 个测试用例全部通过(含 20:00:00 边界)
Co-authored-by: multica-agent <github@multica.ai>
|
2026-07-09 08:23:21 +08:00 |
|
vincent
|
52bee5f2e5
|
fix(BIZ-87): 修复中奖比对算法——按生成时间匹配正确期号
问题:所有生成记录都在比对最新一期开奖,而非根据生成时间匹配对应期号。
修复:
- 新增 find_draw_by_gen_time() 函数,采用窗口归属模型
- 每个开奖日 D 的归属窗口为 (D_prev 20:00, D 20:00]
- 生成时间落在哪个窗口内 → 与该开奖日 D 比对
- 规则 2.1:生成时间 < 开奖日 20:00 → 与当日开奖比对
- 规则 2.2:生成时间 ≥ 开奖日 20:00 → 与下次开奖日比对
- 超过所有开奖日 → 返回 waiting 状态
修改 api_compare_record() 使用新函数替换 load_latest_draw + find_next_draw_after 逻辑
测试验证:
- gen 6/29 10:00 → 6/30 2026074 ✅
- gen 6/28 19:00 → 6/28 2026073 ✅
- gen 6/28 21:00 → 6/30 2026074 ✅
- gen 7/4 18:22 → waiting(7/5 未开奖)✅
Co-authored-by: multica-agent <github@multica.ai>
|
2026-07-09 07:56:43 +08:00 |
|
vincent
|
e43862be9f
|
feat: 生成记录预览 + 中奖比对功能
功能一:生成记录预览
- 新增 API /api/records/<id>/preview 读取 Excel 返回号码数据
- 前端记录列表新增「预览」按钮,弹窗展示号码表格
- 支持最多显示100注,完整数据可通过下载按钮获取
功能二:中奖比对
- 新增 API /api/records/<id>/compare 根据生成时间匹配开奖数据
- 比对规则:生成时间 < 开奖日20:00 → 与当日开奖比对;≥ 20:00 → 与下次开奖日比对
- 按双色球官方规则判断一等奖至六等奖
- 前端记录列表新增「比对」按钮,弹窗展示比对结果
- 中奖号码高亮显示,未中奖号码半透明
- 若下次开奖尚未举行,返回等待状态提示
Co-authored-by: multica-agent <github@multica.ai>
|
2026-07-06 04:06:42 +08:00 |
|
vincent
|
462f1505ee
|
fix: 修复代码审查P2/P3问题
P2:
- lottery.py 改为引用 history_loader.py 公共模块,删除独立 Excel 加载逻辑
- 删除 lottery.py 中不再使用的 _normalize_history_format 方法(已迁移到 history_loader)
P3:
- app.py: 删除未使用的 import shutil
- app.py: 删除不可达代码 return stats
- app.py: 修复 api_history 中奇偶形态字段映射错误(奇偶比→奇偶形态)
- app.py: api_history columns 列表补充奇偶比和奇偶形态字段
- 开发文档目录结构补充 history_loader.py 和 web_executor.py 废弃标记
Co-authored-by: multica-agent <github@multica.ai>
|
2026-07-04 09:21:43 +08:00 |
|
vincent
|
5cebbfa433
|
fix: 修复代码审查反馈全部问题
审查意见修复清单:
P1 列映射语义修复 (lottery.py):
- _normalize_history_format() 不再将红球2-6映射到开机号/和值特征/奇偶比等
格式A不含这些特征字段,缺失列留空,前端做降级显示
- 删除已用于构建号码列的原始分列,避免数据重复
P2 架构优化:
- 提取 Excel 兼容逻辑到公共模块 history_loader.py
lottery.py 和 app.py 共同引用,消除三处重复代码
- web_executor.py 标记为已废弃,功能已整合到 app.py
部署修复:
- 删除 deploy/lotto-web.service (旧服务),仅保留 lotto-app.service
- 更新 deploy/DEPLOY.md: 端口5000→8085, 接口清单更新, 添加迁移说明
安全加固:
- API Token 改为环境变量读取: os.environ.get('LOTTO_API_TOKEN')
- 错误信息不再暴露内部异常,改为通用错误消息+日志记录
- 目录遍历防护改用 os.path.realpath 检查最终路径
其他:
- .gitignore 补充排除 双色球历史数据.xlsx
- app.py 引用公共模块,简化 get_statistics_data 和 load_history_dataframe
测试验证: 全部 API 测试通过,120条历史数据正确解析
Issue: BIZ-75
|
2026-07-04 01:28:57 +08:00 |
|
vincent
|
5d5e77000e
|
fix: 修复历史数据Excel格式兼容问题 + 完善开发文档
核心修复:
- lottery.py: load_history_data() 添加多格式Excel检测逻辑
支持 格式A(双行header: 新列名+旧列名) 和 格式B(标准列名)
- lottery.py: parse_numbers() 新增拼接字符串(14位无分隔符)直接解析
避免 re.findall 将整个号码串视为单个数字的问题
- app.py: load_history_dataframe() 同步修复多格式兼容逻辑
新增:
- docs/开发文档-双色球WebUI-v1.0.md: 完整开发文档
- deploy/backup.sh: 备份脚本
测试结果:
- 120条历史数据全部正确解析
- 号码生成API正常工作
- 全部API接口测试通过
Issue: BIZ-75
|
2026-07-03 23:05:58 +08:00 |
|
vincent
|
cf4b5764b5
|
feat: BIZ-75 双色球系统改进
1. P1: 合并双 Flask 服务 — web_executor.py 功能整合到 app.py
- /fetch → 抓取控制台页面
- /api/fetch/status → 抓取状态查询
- /api/fetch/execute → 触发抓取(后台线程异步)
- web_console.html API 路径已更新
2. P1: fetch_data.py 增加重试机制 + 请求间隔
- REQUEST_DELAY=2s, MAX_RETRIES=3, RETRY_DELAY=5s
- 修复缩进 bug(try/except 块缩进错误)
3. P0: 修复 Excel 数据格式兼容性
- fetch_data.py: 跳过网页 header 行,使用标准列名保存
- app.py: 新增 load_history_dataframe() 智能加载函数
- 兼容新旧两种 Excel 格式(一行/两行 header)
- 统一列名: 开奖时间|期数|号码|开机号|和值特征|奇偶比|大小比|奇偶形态|跨度|其他
4. 运维: 创建 lotto-app.service systemd 单元
5. 修复 .gitignore(排除运行时数据文件和备份)
6. 创建 requirements.txt
|
2026-07-03 17:41:15 +08:00 |
|
vincent
|
ae5d7a08ff
|
fix: P0 — records 并发写入加锁 + 原子写入
BIZ-74 P0 改进项:
- 新增 threading.Lock (records_lock) 保护 .generation_records.json
- load_records / save_records / add_record 全部持锁
- api_delete_record 也加锁保护读-改-写
- 原子写入:先写 .tmp 再 os.replace,防止写入中途崩溃
并发测试验证:
- 10 线程并发写入,0 丢失
- 并发读写互不阻塞
- 无残留 .tmp 文件
评审②改进项,BIZ-74
|
2026-07-03 16:41:57 +08:00 |
|
vincent
|
13a259b0f8
|
chore: initial commit — existing lottoData codebase
Files:
- lottery.py (1189 lines) — DoubleColorBallGenerator core engine
- fetch_data.py (131 lines) — history data fetcher from 55128.cn
- web_executor.py (216 lines) — data fetch Web console (Flask :5000)
- app.py (505 lines) — number generation Web service (Flask :8085)
- index.html (1171 lines) — frontend SPA
- web_console.html (323 lines) — fetch console frontend
- deploy/ — systemd service + cron script + logs
BIZ-74 architecture review baseline
|
2026-07-03 16:39:21 +08:00 |
|