feat: 交接班报告支持 Confluence/Jira 集成,添加 N/A 记录时间归属功能
- 集成 Confluence API 获取船舶报告数据 - 集成 Jira API 查询故障数量 - 支持船号显示 (462#、463# 等) - 支持故障次数/故障率、人工介入次数/介入率显示 - 跨班作业使用 Card 69 按时间查询效率 - 不跨班作业使用整船效率(剔除异常) - N/A 记录根据作业时间归属到对应船舶 - 更新 AGENTS.md 和 README.md 文档 - 删除 daily_report_gui.py
This commit is contained in:
@@ -339,6 +339,77 @@ class TimeOperationsClient:
|
||||
"teu": overview.get("teu"),
|
||||
}
|
||||
|
||||
def get_efficiency_by_time(self, start_time: str, end_time: str) -> Optional[float]:
|
||||
"""
|
||||
获取指定时间段内的效率(剔除异常)
|
||||
|
||||
Args:
|
||||
start_time: 开始时间,格式 "YYYY-MM-DD HH:MM:SS"
|
||||
end_time: 结束时间,格式 "YYYY-MM-DD HH:MM:SS"
|
||||
|
||||
Returns:
|
||||
效率值(cycle/h),如果没有数据则返回 None
|
||||
"""
|
||||
time_params = self._build_time_parameters(start_time, end_time)
|
||||
|
||||
# 查询剔除异常后的效率指标(Card 69)
|
||||
efficiency_response = self._query_card(
|
||||
self._CARD_IDS["efficiency_filtered"], time_params
|
||||
)
|
||||
efficiency_data = self._extract_row_data(efficiency_response) or {}
|
||||
cycle_h_filtered = efficiency_data.get("cycle/h")
|
||||
|
||||
if cycle_h_filtered is not None:
|
||||
return round(cycle_h_filtered, 2)
|
||||
return None
|
||||
|
||||
def get_vessel_efficiency_by_time(
|
||||
self, vessel_visit_id: str, start_time: str, end_time: str
|
||||
) -> Optional[float]:
|
||||
"""
|
||||
获取指定船舶在指定时间段内的效率(剔除异常)
|
||||
|
||||
Args:
|
||||
vessel_visit_id: 船舶访问ID,格式如 "260313-信荣海"
|
||||
start_time: 开始时间,格式 "YYYY-MM-DD HH:MM:SS"
|
||||
end_time: 结束时间,格式 "YYYY-MM-DD HH:MM:SS"
|
||||
|
||||
Returns:
|
||||
效率值(cycle/h),如果没有数据则返回 None
|
||||
|
||||
Example:
|
||||
>>> client = TimeOperationsClient()
|
||||
>>> efficiency = client.get_vessel_efficiency_by_time(
|
||||
... "260313-信荣海",
|
||||
... "2026-03-13 08:00:00",
|
||||
... "2026-03-13 20:00:00"
|
||||
... )
|
||||
>>> print(f"效率: {efficiency}") # 1.66
|
||||
"""
|
||||
# 构建时间参数
|
||||
time_params = self._build_time_parameters(start_time, end_time)
|
||||
|
||||
# 添加船舶参数(使用驼峰命名)
|
||||
vessel_param = {
|
||||
"type": "string/=",
|
||||
"target": ["variable", ["template-tag", "vesselVisitId"]],
|
||||
"value": vessel_visit_id,
|
||||
}
|
||||
|
||||
# 合并参数
|
||||
params = time_params + [vessel_param]
|
||||
|
||||
# 查询剔除异常后的效率指标(Card 69)
|
||||
efficiency_response = self._query_card(
|
||||
self._CARD_IDS["efficiency_filtered"], params
|
||||
)
|
||||
efficiency_data = self._extract_row_data(efficiency_response) or {}
|
||||
cycle_h_filtered = efficiency_data.get("cycle/h")
|
||||
|
||||
if cycle_h_filtered is not None:
|
||||
return round(cycle_h_filtered, 2)
|
||||
return None
|
||||
|
||||
|
||||
# 工厂函数(推荐用于简单场景)
|
||||
def create_time_operations_client(
|
||||
|
||||
Reference in New Issue
Block a user