ForcePilot/backend/package/yuxi/channel/extensions/confluence/mentions.py
Kris f943c31ce4 feat(confluence): 新增Confluence渠道插件完整实现
新增了完整的Confluence集成插件,包含以下核心功能:
1.  基础认证与配置管理,支持API Token和OAuth2两种认证方式
2.  评论去重、权限控制与提及解析
3.  知识库检索与页面内容处理
4.  评论收发、编辑删除与流式回复支持
5.  附件与页面标签管理
6.  内容属性存储与AI元数据管理
7.  Webhook事件接收与处理
8.  完整的插件配置与状态检查
2026-05-21 10:43:42 +08:00

38 lines
1.2 KiB
Python

import json
class ConfluenceMentions:
@staticmethod
def extract_mentions(raw_message: dict) -> list[dict]:
body = raw_message.get("body", {})
adf_raw = body.get("atlas_doc_format", {}).get("value", "")
try:
doc = json.loads(adf_raw) if isinstance(adf_raw, str) else adf_raw
except (json.JSONDecodeError, TypeError):
return []
mentions = []
def _walk(node):
if isinstance(node, dict):
if node.get("type") == "mention":
attrs = node.get("attrs", {})
mentions.append({
"account_id": attrs.get("id", ""),
"display_name": attrs.get("text", "").lstrip("@"),
})
for child in node.get("content", []):
_walk(child)
elif isinstance(node, list):
for item in node:
_walk(item)
_walk(doc)
return mentions
@staticmethod
def build_mention(account_id: str, display_name: str) -> dict:
from yuxi.channel.extensions.confluence.format import ADFBuilder
return ADFBuilder.mention(account_id, display_name)