diff --git a/src/repo_registry/web_ui/views.py b/src/repo_registry/web_ui/views.py index 6f0492b..c1bc4fe 100644 --- a/src/repo_registry/web_ui/views.py +++ b/src/repo_registry/web_ui/views.py @@ -2,6 +2,7 @@ from __future__ import annotations from dataclasses import asdict from html import escape +from urllib.parse import quote_plus from fastapi import APIRouter, Depends, Form, HTTPException, Query from fastapi.responses import HTMLResponse, PlainTextResponse, RedirectResponse @@ -527,6 +528,7 @@ def repository_detail( facts_count=None, base_href=f"/ui/repos/{repository_id}/elements?scope=approved", )} + {render_approved_registry_actions(repository_id, asdict(ability_map))}

Latest Candidate Graph

{render_latest_candidate_counts(repository_id, latest_candidate, service)} {render_ability_map(asdict(ability_map), repository_id)} @@ -1768,6 +1770,24 @@ def render_count_pills( return "".join(items) +def render_approved_registry_actions(repository_id: int, ability_map: dict) -> str: + abilities = ability_map.get("abilities", []) + if not abilities: + return "" + search_query = abilities[0]["name"] + return f""" +
+

Use Approved Registry

+
+ Search Profile + Discovery + Export + Approved Elements +
+
+ """ + + def graph_element_rows(graph: dict, item_type: str) -> list[dict]: rows: list[dict] = [] for ability in graph.get("abilities", []): diff --git a/tests/test_web_api.py b/tests/test_web_api.py index e3586f3..e286f0e 100644 --- a/tests/test_web_api.py +++ b/tests/test_web_api.py @@ -1166,6 +1166,12 @@ def test_ui_register_analyze_and_approve_loop(tmp_path): assert "2 candidate capabilities" in approved_detail.text assert "2 candidate features" in approved_detail.text assert "7 candidate facts" in approved_detail.text + assert "Use Approved Registry" in approved_detail.text + assert "Search Profile" in approved_detail.text + assert "Discovery" in approved_detail.text + assert "Export" in approved_detail.text + assert "Approved Elements" in approved_detail.text + assert "q=Report+Service+Status" in approved_detail.text assert ( f"/ui/repos/{repository_id}/elements?scope=approved&type=abilities" in approved_detail.text diff --git a/workplans/RREG-WP-0003-automatic-repository-exploration.md b/workplans/RREG-WP-0003-automatic-repository-exploration.md index 2173bd1..5f514be 100644 --- a/workplans/RREG-WP-0003-automatic-repository-exploration.md +++ b/workplans/RREG-WP-0003-automatic-repository-exploration.md @@ -85,7 +85,7 @@ against feature granularity collapsing into one feature per observed fact. ```task id: RREG-WP-0003-T03 -status: in_progress +status: done priority: medium state_hub_task_id: "5c4b5bb1-390c-4782-bb70-104b0006fe67" ```