profile drill-down/source-link preservation

This commit is contained in:
2026-04-26 00:13:45 +02:00
parent e8fdfe6e17
commit 5aa76af78c
8 changed files with 88 additions and 11 deletions

View File

@@ -927,11 +927,11 @@ def render_ability_map(ability_map: dict) -> str:
capabilities = []
for capability in ability["capabilities"]:
features = "".join(
f'<li>{escape(feature["name"])} <span class="pill">{escape(feature["type"])}</span> <span class="source">{escape(feature["location"])}</span></li>'
render_approved_feature(feature)
for feature in capability["features"]
)
evidence = "".join(
f'<li>{escape(item["type"])} <span class="pill">{escape(item["strength"])}</span> <span class="source">{escape(item["reference"])}</span></li>'
render_approved_evidence(item)
for item in capability["evidence"]
)
capabilities.append(
@@ -955,6 +955,28 @@ def render_ability_map(ability_map: dict) -> str:
return f'<div class="tree"><ul>{"".join(items)}</ul></div>'
def render_approved_feature(feature: dict) -> str:
return f"""
<li>
{escape(feature["name"])}
<span class="pill">{escape(feature["type"])}</span>
<span class="source">{escape(feature["location"])}</span>
{render_sources(feature.get("source_refs", []))}
</li>
"""
def render_approved_evidence(evidence: dict) -> str:
return f"""
<li>
{escape(evidence["type"])}
<span class="pill">{escape(evidence["strength"])}</span>
<span class="source">{escape(evidence["reference"])}</span>
{render_sources(evidence.get("source_refs", []))}
</li>
"""
def search_result_href(result: dict) -> str:
href = f"/ui/repos/{result['repository_id']}"
if result.get("capability_id"):
@@ -968,7 +990,7 @@ def render_sources(source_refs: list[dict]) -> str:
if not source_refs:
return ""
sources = ", ".join(
f'<span class="source">{escape(ref["kind"])}:{escape(ref["path"] or ref["name"])}</span>'
f'<span class="source">{escape(ref["kind"])}:{escape(source_ref_label(ref))}</span>'
for ref in source_refs[:5]
)
if len(source_refs) > 5:
@@ -976,6 +998,13 @@ def render_sources(source_refs: list[dict]) -> str:
return f"<p>{sources}</p>"
def source_ref_label(ref: dict) -> str:
label = ref["path"] or ref["name"]
if ref.get("line"):
label = f"{label}:{ref['line']}"
return label
def render_search_context(result: dict) -> str:
details = []
if result.get("ability_name"):