Compare commits
2 Commits
809802e655
...
b88ddc92d6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b88ddc92d6 | ||
|
|
82a34ff1ab |
59
README.md
59
README.md
@ -564,7 +564,62 @@ else:
|
|||||||
#### 数据一致性
|
#### 数据一致性
|
||||||
修复后,新的投注记录将使用正确的期号,现有的错误记录需要等待对应期号开奖后才能正确更新中奖状态。
|
修复后,新的投注记录将使用正确的期号,现有的错误记录需要等待对应期号开奖后才能正确更新中奖状态。
|
||||||
|
|
||||||
|
### 周六投注周日中奖检查问题 ⚠️ 新发现
|
||||||
|
|
||||||
|
#### 问题描述
|
||||||
|
用户反馈周六投注的号码在周日没有完整的中奖比对信息,经调查发现定时任务逻辑存在错误。
|
||||||
|
|
||||||
|
#### 根本原因
|
||||||
|
在`scheduler.py`的`check_previous_day_wins_job`函数中存在错误逻辑:
|
||||||
|
```python
|
||||||
|
if current_weekday == 6: # 周六
|
||||||
|
logger.info("周六休息,不推送中奖检查")
|
||||||
|
return
|
||||||
|
```
|
||||||
|
|
||||||
|
**问题分析**:
|
||||||
|
- 周六投注大乐透,周六晚上开奖
|
||||||
|
- 周日早上9:30的定时任务应该检查周六的投注中奖情况
|
||||||
|
- 但错误的判断逻辑导致周日跳过了检查,因为昨天是周六
|
||||||
|
|
||||||
|
#### 彩票开奖时间安排
|
||||||
|
- **双色球**:周二、周四、周日开奖
|
||||||
|
- **大乐透**:周一、周三、周六开奖
|
||||||
|
- **推荐安排**:一三六推荐大乐透,二四日推荐双色球,周五休息
|
||||||
|
|
||||||
|
#### 解决方案
|
||||||
|
修正`check_previous_day_wins_job`中的工作日判断逻辑:
|
||||||
|
1. 移除错误的"周六休息"逻辑
|
||||||
|
2. 根据**昨天的日期**来判断彩票类型,而不是今天
|
||||||
|
3. 只有昨天是周五(休息日)才跳过检查
|
||||||
|
|
||||||
|
**修复后的逻辑**:
|
||||||
|
```python
|
||||||
|
yesterday_weekday = yesterday.isoweekday()
|
||||||
|
|
||||||
|
if yesterday_weekday in [1, 3, 6]: # 昨天是周一、三、六,投注的是大乐透
|
||||||
|
lottery_type = 'dlt'
|
||||||
|
elif yesterday_weekday in [2, 4, 7]: # 昨天是周二、四、日,投注的是双色球
|
||||||
|
lottery_type = 'ssq'
|
||||||
|
else: # 昨天是周五,休息日,没有投注
|
||||||
|
logger.info("昨日是周五休息日,没有投注记录,跳过中奖检查")
|
||||||
|
return
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 验证结果
|
||||||
|
修复后测试显示:
|
||||||
|
- ✅ 7月12日(周六)4条大乐透投注记录
|
||||||
|
- ✅ 所有记录都正确更新了中奖信息
|
||||||
|
- ✅ 开奖号码和中奖状态完全匹配
|
||||||
|
- ✅ Telegram推送正常工作
|
||||||
|
|
||||||
|
#### 影响范围
|
||||||
|
此修复解决了:
|
||||||
|
1. 周六投注周日无中奖比对信息的问题
|
||||||
|
2. 确保所有工作日的投注都能正确进行中奖检查
|
||||||
|
3. 保持Telegram每日推送的完整性
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*最后更新:2025-07-04*
|
*最后更新:2025-07-14*
|
||||||
*问题状态:已修复期号逻辑,等待验证*
|
*问题状态:✅ 已完全修复并验证*
|
||||||
@ -216,31 +216,44 @@ class LotteryScheduler:
|
|||||||
yesterday = datetime.now() - timedelta(days=1)
|
yesterday = datetime.now() - timedelta(days=1)
|
||||||
target_date = yesterday.strftime('%Y-%m-%d')
|
target_date = yesterday.strftime('%Y-%m-%d')
|
||||||
current_weekday = datetime.now().isoweekday()
|
current_weekday = datetime.now().isoweekday()
|
||||||
if current_weekday == 6: # 周六
|
|
||||||
logger.info("周六休息,不推送中奖检查")
|
# 移除错误的周六休息逻辑 - 周六投注的大乐透在周日需要检查中奖
|
||||||
return
|
# 根据昨天的日期确定彩票类型
|
||||||
if current_weekday in [1, 3, 5, 7]:
|
yesterday_weekday = yesterday.isoweekday()
|
||||||
lottery_type = 'ssq'
|
|
||||||
BetModel = SSQLotteryBetRecord
|
if yesterday_weekday in [1, 3, 6]: # 昨天是周一、三、六,投注的是大乐透
|
||||||
LotteryModel = SSQLottery
|
|
||||||
fixed_numbers = {'red': [4, 6, 7, 12, 18, 19], 'blue': [9]}
|
|
||||||
else:
|
|
||||||
lottery_type = 'dlt'
|
lottery_type = 'dlt'
|
||||||
BetModel = DLTLotteryBetRecord
|
BetModel = DLTLotteryBetRecord
|
||||||
LotteryModel = DLTLottery
|
LotteryModel = DLTLottery
|
||||||
fixed_numbers = {'red': [4, 6, 9, 18, 19], 'blue': [7, 12]}
|
fixed_numbers = {'red': [4, 6, 9, 18, 19], 'blue': [7, 12]}
|
||||||
|
elif yesterday_weekday in [2, 4, 7]: # 昨天是周二、四、日,投注的是双色球
|
||||||
|
lottery_type = 'ssq'
|
||||||
|
BetModel = SSQLotteryBetRecord
|
||||||
|
LotteryModel = SSQLottery
|
||||||
|
fixed_numbers = {'red': [4, 6, 7, 12, 18, 19], 'blue': [9]}
|
||||||
|
else: # 昨天是周五,休息日,没有投注
|
||||||
|
logger.info("昨日是周五休息日,没有投注记录,跳过中奖检查")
|
||||||
|
return
|
||||||
|
|
||||||
db = SessionLocal()
|
db = SessionLocal()
|
||||||
try:
|
try:
|
||||||
target_batch_id_pattern = f"{yesterday.strftime('%Y%m%d')}%"
|
target_batch_id_pattern = f"{yesterday.strftime('%Y%m%d')}%"
|
||||||
bet_records = db.query(BetModel).filter(
|
bet_records = db.query(BetModel).filter(
|
||||||
BetModel.batch_id.like(target_batch_id_pattern)
|
BetModel.batch_id.like(target_batch_id_pattern)
|
||||||
).all()
|
).all()
|
||||||
|
|
||||||
|
# 先执行中奖检查更新
|
||||||
self.updater.check_and_update_bet_wins(lottery_type, db)
|
self.updater.check_and_update_bet_wins(lottery_type, db)
|
||||||
|
|
||||||
|
# 重新查询更新后的记录
|
||||||
updated_records = db.query(BetModel).filter(
|
updated_records = db.query(BetModel).filter(
|
||||||
BetModel.batch_id.like(target_batch_id_pattern)
|
BetModel.batch_id.like(target_batch_id_pattern)
|
||||||
).all()
|
).all()
|
||||||
|
|
||||||
|
# 查询昨天的开奖数据
|
||||||
last_draw = db.query(LotteryModel).filter(
|
last_draw = db.query(LotteryModel).filter(
|
||||||
LotteryModel.open_time == yesterday.date()).first()
|
LotteryModel.open_time == yesterday.date()).first()
|
||||||
|
|
||||||
open_code_str = ""
|
open_code_str = ""
|
||||||
if last_draw:
|
if last_draw:
|
||||||
if lottery_type == 'ssq':
|
if lottery_type == 'ssq':
|
||||||
@ -258,6 +271,7 @@ class LotteryScheduler:
|
|||||||
red_str = ' '.join(f"{n:02d}" for n in open_red)
|
red_str = ' '.join(f"{n:02d}" for n in open_red)
|
||||||
blue_str = ' '.join(f"{n:02d}" for n in open_blue)
|
blue_str = ' '.join(f"{n:02d}" for n in open_blue)
|
||||||
open_code_str = f"{red_str} | {blue_str}"
|
open_code_str = f"{red_str} | {blue_str}"
|
||||||
|
|
||||||
# 固定号码开奖比对
|
# 固定号码开奖比对
|
||||||
fixed_result = None
|
fixed_result = None
|
||||||
if last_draw:
|
if last_draw:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user