'表格api调用失败日志写入,失败原因写入'

This commit is contained in:
zelong 2026-01-14 16:52:18 +08:00
parent 93f12f8d5a
commit 104198e918
6 changed files with 137 additions and 6 deletions

View File

@ -19,4 +19,4 @@ sync_interval = 30
# 企业微信应用ID
agentid = 1000615
# 接收人列表用户ID多个用|分隔,@all表示全部成员
receivers = 046364
receivers = 04636 4

View File

@ -1,4 +1,4 @@
{
"access_token": "LKCPU6VM1ckPpMUcnhs_71hNs0gn9zhRO5yZvSshEQ4_ISK4g74xBH8B9YBicKkOxdn9CIxvJ_Pt3Hg7L9tyKdgNibMproAE90aS9YWg83dAcjZHv-vt7_flcvMMC3ytOaHy1PiKuJZ2YWk137ojcXpYv_6GHLdXpiTMyyEPjmuWQrSmV0k20q3m_c_lD-XhX_uUrbGs9ag8d21JhJx-2H2H_yXHurXu3K1EdSbePdQ",
"fetch_time": 1768366140.5126395
"access_token": "wTDckSfv2tq6P_xM2lBqSirg8qEsUHRjLqisLLQxNX4ZDEhOxXhR9v5dLF0nV5obkkTSa87p1R_Cu-FLcVp439_xVYbFb66ENSmuJcTT-2sYoJ_4JkSbAPmfKy_8-6jqF995MOmJcoCbZU1PdB0QbLyIWe_U1du7nnZ3o0uqFdPI_cAVa1EWPLjWNvkxYrjW5rVWBIPwPvlK7VaACfsSzevBwvEO89-UbHBrZLn07dI",
"fetch_time": 1768380602.07453
}

View File

@ -20,6 +20,7 @@ from src.mapper import FieldMapper, BugCreationResult
from src.token_manager import TokenManager
from src.status_mapper import BugStatusMapper
from src.wework_notifier import WeWorkNotifier
from src.api_logger import get_logger
def parse_arguments():
@ -388,6 +389,17 @@ def create_tapd_bugs(valid_records: list, workspace_id: str, reporter: str, test
error_msg = f"字段映射失败: {e}"
print(f"{error_msg}")
# 记录失败日志
logger = get_logger()
logger.log_api_call(
api_type="task1",
operation="create_bug_failure",
request_data={"record_id": record_id, "title": title},
response_data={},
success=False,
error_message=error_msg
)
result = BugCreationResult(
record_id=record_id,
success=False,
@ -400,6 +412,17 @@ def create_tapd_bugs(valid_records: list, workspace_id: str, reporter: str, test
error_msg = f"TAPD API调用失败: {e}"
print(f"{error_msg}")
# 记录失败日志
logger = get_logger()
logger.log_api_call(
api_type="task1",
operation="create_bug_failure",
request_data={"record_id": record_id, "title": title},
response_data={},
success=False,
error_message=error_msg
)
result = BugCreationResult(
record_id=record_id,
success=False,
@ -412,6 +435,17 @@ def create_tapd_bugs(valid_records: list, workspace_id: str, reporter: str, test
error_msg = f"未预期的错误: {type(e).__name__}: {e}"
print(f"{error_msg}")
# 记录失败日志
logger = get_logger()
logger.log_api_call(
api_type="task1",
operation="create_bug_failure",
request_data={"record_id": record_id, "title": title},
response_data={},
success=False,
error_message=error_msg
)
result = BugCreationResult(
record_id=record_id,
success=False,
@ -638,11 +672,26 @@ def run_once(config_manager: ConfigManager, access_token: str, verbose: bool = F
for invalid_record in validation_result['invalid_records']:
record_data = invalid_record['record_data']
missing_fields = invalid_record['missing_fields']
error_msg = f"校验失败,缺失字段: {', '.join(missing_fields)}"
# 记录校验失败日志
logger = get_logger()
logger.log_api_call(
api_type="task1",
operation="validation_failure",
request_data={
"record_id": record_data.get('record_id', '未知'),
"title": record_data.get('标题', '(无标题)')
},
response_data={},
success=False,
error_message=error_msg
)
validation_failed_result = BugCreationResult(
record_id=record_data.get('record_id', '未知'),
success=False,
error_message=f"校验失败,缺失字段: {', '.join(missing_fields)}"
error_message=error_msg
)
validation_failed_results.append(validation_failed_result)

45
src2/smartsheet.py Normal file
View File

@ -0,0 +1,45 @@
"""
任务二专用的智能表格API模块
继承自任务一的 SmartSheetAPI使用任务二专用的日志记录器
设计说明
- 继承 src.smartsheet.SmartSheetAPI 的所有功能
- 重写 __init__ 方法使用 get_task2_logger() 替代 get_logger()
- 确保所有智能表格 API 调用日志写入 logs2/ 目录
"""
import sys
from pathlib import Path
# 将项目根目录添加到 Python 路径
project_root = Path(__file__).parent.parent
sys.path.insert(0, str(project_root))
from src.smartsheet import SmartSheetAPI
from src2.logger import get_task2_logger
class SmartSheetAPITask2(SmartSheetAPI):
"""任务二专用的智能表格API类"""
def __init__(self, access_token: str, docid: str, test_mode: bool = False):
"""
初始化智能表格API任务二专用
Args:
access_token: 企业微信access_token
docid: 智能表格文档ID
test_mode: 是否启用测试模式显示API返回结果
"""
# 调用父类初始化
super().__init__(access_token, docid, test_mode)
# 替换为任务二专用的日志记录器
self.logger = get_task2_logger()
if __name__ == "__main__":
print("=== 任务二智能表格API模块 ===\n")
print("此模块继承自 src.smartsheet.SmartSheetAPI")
print("使用任务二专用的日志记录器,日志写入 logs2/ 目录")
print("\n请通过 SmartSheetSync 类使用此模块")

View File

@ -18,7 +18,7 @@ from typing import Dict, List, Any, Optional, Tuple
project_root = Path(__file__).parent.parent
sys.path.insert(0, str(project_root))
from src.smartsheet import SmartSheetAPI
from src2.smartsheet import SmartSheetAPITask2
from src2.link_parser import parse_tapd_link, extract_story_id
from src2.logger import get_task2_logger
@ -58,7 +58,7 @@ class SmartSheetSync:
docid: 智能表格文档ID
test_mode: 是否启用测试模式
"""
self.api = SmartSheetAPI(access_token, docid, test_mode)
self.api = SmartSheetAPITask2(access_token, docid, test_mode)
self.logger = get_task2_logger()
self.test_mode = test_mode

View File

@ -357,6 +357,18 @@ class SyncService:
# 检查链接解析结果
if not record_info["parse_success"]:
record_result["error_message"] = record_info.get("parse_error", "链接解析失败")
# 记录链接解析失败日志
self.logger.log_api_call(
api_type="task2",
operation="link_parse_failure",
request_data={
"record_id": record_info["record_id"],
"tapd_link": record_info["tapd_link"]
},
response_data={},
success=False,
error_message=record_result["error_message"]
)
return record_result
story_id = record_info["story_id"]
@ -400,6 +412,18 @@ class SyncService:
except Exception as e:
record_result["error_message"] = str(e)
# 记录TAPD查询失败日志
self.logger.log_api_call(
api_type="task2",
operation="sync_record_failure",
request_data={
"record_id": record_info["record_id"],
"story_id": story_id
},
response_data={},
success=False,
error_message=record_result["error_message"]
)
return record_result
@ -518,6 +542,19 @@ class SyncService:
except Exception as e:
result["failed"] += 1
error_msg = str(e)
# 记录持续同步失败日志
self.logger.log_api_call(
api_type="task2",
operation="continuous_sync_failure",
request_data={
"record_id": record_info["record_id"],
"story_id": record_info["story_id"]
},
response_data={},
success=False,
error_message=error_msg
)
if self.test_mode:
print(f" ✗ 记录 {record_info['record_id']} 更新失败: {e}")