mirror of
https://devops.liangqichi.top/qichi.liang/Orbitin.git
synced 2026-02-10 07:41:29 +08:00
fix: 修复排班表读取时缓存优先的问题
- 移除了缓存优先逻辑,改为每次从飞书获取最新数据 - 每次都覆盖保存到数据库,确保人员变动能及时更新 - 移除了 check_sheet_update 检查(因为飞书表格即使人员变动,版本号也可能不变)
This commit is contained in:
@@ -114,6 +114,8 @@ class FeishuScheduleManager:
|
||||
"""
|
||||
获取指定日期的排班信息
|
||||
|
||||
修复:每次都从飞书获取最新数据并覆盖数据库,确保日报中显示最新排班信息
|
||||
|
||||
参数:
|
||||
date_str: 日期字符串,格式 "2025-12-30"
|
||||
|
||||
@@ -135,22 +137,13 @@ class FeishuScheduleManager:
|
||||
|
||||
logger.info(f"获取 {date_str} 的排班信息 (格式: {target_date_mm_dd}/{target_date_chinese})")
|
||||
|
||||
# 1. 首先尝试从数据库获取
|
||||
cached_schedule = self.db.get_schedule(date_str)
|
||||
if cached_schedule:
|
||||
logger.info(f"从数据库获取 {date_str} 的排班信息")
|
||||
return self._format_db_result(cached_schedule)
|
||||
|
||||
# 2. 数据库中没有,需要从飞书获取
|
||||
logger.info(f"数据库中没有 {date_str} 的排班信息,从飞书获取")
|
||||
|
||||
# 获取表格信息
|
||||
# 1. 获取表格信息
|
||||
sheets = self.client.get_sheets_info()
|
||||
if not sheets:
|
||||
logger.error("未获取到表格信息")
|
||||
return self._empty_result()
|
||||
|
||||
# 选择最合适的表格
|
||||
# 2. 选择最合适的表格
|
||||
selected_sheet = self._select_sheet_for_date(sheets, target_year_month)
|
||||
if not selected_sheet:
|
||||
logger.error("未找到合适的表格")
|
||||
@@ -166,23 +159,12 @@ class FeishuScheduleManager:
|
||||
return self._empty_result()
|
||||
|
||||
values = sheet_data.get('valueRange', {}).get('values', [])
|
||||
revision = sheet_data.get('revision', 0)
|
||||
|
||||
if not values:
|
||||
logger.error("表格数据为空")
|
||||
return self._empty_result()
|
||||
|
||||
# 4. 检查表格是否有更新
|
||||
need_update = self.db.check_sheet_update(
|
||||
sheet_id, sheet_title, revision, {'values': values}
|
||||
)
|
||||
|
||||
if not need_update and cached_schedule:
|
||||
# 表格无更新,且数据库中有缓存,直接返回
|
||||
logger.info(f"表格无更新,使用数据库缓存")
|
||||
return self._format_db_result(cached_schedule)
|
||||
|
||||
# 5. 解析数据 - 根据表格类型选择合适的日期格式
|
||||
# 4. 解析数据 - 根据表格类型选择合适的日期格式
|
||||
# 如果是年度表格,使用中文日期格式;否则使用mm/dd格式
|
||||
if '年' in sheet_title and '排班表' in sheet_title:
|
||||
target_date = target_date_chinese # "1月1日"
|
||||
@@ -192,10 +174,12 @@ class FeishuScheduleManager:
|
||||
logger.info(f"使用日期格式: {target_date} 解析表格: {sheet_title}")
|
||||
result = self.parser.parse(values, target_date, sheet_title)
|
||||
|
||||
# 6. 保存到数据库
|
||||
# 5. 每次都保存到数据库,覆盖旧数据,确保人员变动能及时更新
|
||||
if result['day_shift'] or result['night_shift']:
|
||||
self.db.save_schedule(date_str, result, sheet_id, sheet_title)
|
||||
logger.info(f"已保存 {date_str} 的排班信息到数据库")
|
||||
logger.info(f"已更新 {date_str} 的排班信息到数据库: 白班={result['day_shift']}, 夜班={result['night_shift']}")
|
||||
else:
|
||||
logger.warning(f"解析结果为空,{date_str} 未保存到数据库")
|
||||
|
||||
return result
|
||||
|
||||
|
||||
Reference in New Issue
Block a user