[阶段2] FAM-Edge 重构为整视频分析+同步接口+人物服务 - 移除切片/抽帧/队列,新增 oracle_db/person_service/qa/watch_processor/video_processor,api_gateway 提供 /api/oracle/sync 与 /api/oracle/people/correct
This commit is contained in:
@@ -3,13 +3,21 @@
|
||||
|
||||
新增模型只需继承此类并实现方法:
|
||||
1. health_check() -> bool
|
||||
2. analyze_frames(frame_paths, frame_timestamps, known_members_context) -> Optional[dict]
|
||||
- 视觉分析:输入帧图片路径 + 时间戳 + 成员清单,直接输出**结构化结果 dict**
|
||||
(含 frame_details 等,详见 format_cloud_result 约定)。
|
||||
- 失败/超时返回 None。
|
||||
2. analyze_video(video_path, known_members_context, event_start_time) -> Optional[dict]
|
||||
- 整视频分析:直接把完整视频交给云端 VLM(本地不切片、不抽帧)。
|
||||
- 模型内部自行采样帧,输出结构化结果 dict。失败/超时返回 None。
|
||||
- 返回约定:
|
||||
{
|
||||
"global_summary": str, # 整段视频摘要
|
||||
"events": [ # 有用时间点 + 画面信息
|
||||
{"timestamp": "2026-08-21 08:15:30", # 绝对北京时间(event_start_time 推算)
|
||||
"description": str,
|
||||
"people": [str],
|
||||
"is_attention_event": bool}, ...],
|
||||
"people_mentioned": [str], # 本视频出现的人物标识/真名
|
||||
}
|
||||
3. chat(prompt) -> Optional[str]
|
||||
- 纯文本问答(智能问答场景),返回文本或 None。
|
||||
- 默认实现抛 NotImplementedError;文本/视觉模型按需实现。
|
||||
4. get_timeout() -> int
|
||||
5. get_circuit_breaker() -> CircuitBreaker
|
||||
"""
|
||||
@@ -36,22 +44,13 @@ class BaseModelAdapter(ABC):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def analyze_frames(self, frame_paths: List[str],
|
||||
frame_timestamps: List[str],
|
||||
known_members_context: str) -> Optional[Dict]:
|
||||
"""视觉分析:输入帧图片路径 + 时间戳 + 成员清单,
|
||||
直接输出结构化结果 dict(含 frame_details 等)。失败/超时返回 None。
|
||||
def analyze_video(self, video_path: str,
|
||||
known_members_context: str,
|
||||
event_start_time: str = '') -> Optional[Dict]:
|
||||
"""整视频分析:把完整视频交给云端 VLM,输出结构化结果 dict。
|
||||
|
||||
约定返回结构(云端模型直出,Edge 仅做格式化校验,不再本地融合):
|
||||
{
|
||||
"global_summary": "整个时段整体摘要(可选,缺失时由 Edge 格式化生成)",
|
||||
"entities_json": [{"person","action","clothing"}] (可选,缺失时由 frame_details 推导),
|
||||
"frame_details": [
|
||||
{"frame_index":int, "frame_timestamp":str, "person":str,
|
||||
"action":str, "clothing":str, "is_attention_event":bool,
|
||||
"source_providers":[provider]}
|
||||
]
|
||||
}
|
||||
本地不切片、不抽帧;模型内部自行采样帧。
|
||||
失败/超时返回 None。
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
Reference in New Issue
Block a user