{html.escape(item['label'])}
{html.escape(item['detail'])}
" f"" "import html
from typing import Any
from review_studio_gates import status_label
SCRIPT_INTERFACE = "internal-module"
SCRIPT_INTERFACE_REASON = "Imported by render_review_studio.py to keep small Review Studio panel renderers out of the main page composer."
def render_gate_list(gates: list[dict[str, str]]) -> str:
items = []
for item in gates:
link_html = f"证据" if item.get("link") else ""
items.append(
" {html.escape(item['detail'])} {html.escape(item['detail'])} 无。{html.escape(item['label'])}
{html.escape(title)}
当前没有 reviewer 批注。
" cards = [] for item in annotations: line_suffix = f":{item['line']}" if item.get("line") else "" target_label = f"{item.get('target_path', '')}{line_suffix}" meta = " · ".join( part for part in [ str(item.get("gate_key", "")), str(item.get("reviewer", "")), str(item.get("created_at", "")), ] if part ) cards.append( "{html.escape(str(item.get('body', '')))}
" f"{html.escape(target_label)}