diff --git a/services/api-server/src/api_server/html5.py b/services/api-server/src/api_server/html5.py index 33fac02..3db79cf 100644 --- a/services/api-server/src/api_server/html5.py +++ b/services/api-server/src/api_server/html5.py @@ -437,6 +437,7 @@ def render_html5_object_context( privacy: object | None = None, integrations: Iterable[object] | None = None, flowchart: object | None = None, + mode: str = "overview", ) -> str: if schema is None or impact is None: return f""" @@ -466,9 +467,50 @@ def render_html5_object_context( integration_items = list(integrations or []) flow_nodes = getattr(flowchart, "nodes", []) if flowchart is not None else [] flow_edges = getattr(flowchart, "edges", []) if flowchart is not None else [] + normalized_mode = mode if mode in {"overview", "schema", "impact", "privacy"} else "overview" + if normalized_mode == "schema": + compact_body = ( + ''.join(_named_node_item("attr", item) for item in attributes[:12]) + or '

Реквизиты не найдены

' + ) + compact_body += ''.join(_tabular_section_item(item) for item in sections[:8]) + compact_body += ''.join(_ui_form_item(item) for item in ui_forms[:8]) + elif normalized_mode == "impact": + compact_body = ''.join(_integration_endpoint_item(item) for item in integration_items[:8]) + compact_body += ''.join(_named_node_item("command", item) for item in commands[:8]) + compact_body += ''.join(_named_node_item("read", item) for item in query_tables[:8]) + compact_body += ''.join(_named_node_item("write", item) for item in writes[:8]) + compact_body += ''.join(_named_node_item("call", item) for item in callees[:8]) + compact_body += ''.join(_flowchart_edge_item(item, flow_nodes) for item in flow_edges[:8]) + compact_body += ''.join(_named_node_item("routine", item) for item in routines[:8]) + compact_body += ''.join(_named_node_item("job", item) for item in jobs[:6]) + compact_body = compact_body or '

Impact-связи не найдены

' + elif normalized_mode == "privacy": + compact_body = ''.join(_role_access_item(item) for item in grants[:12]) + compact_body += ''.join(_privacy_marker_item(item) for item in privacy_markers[:12]) + compact_body = compact_body or '

Доступы и privacy-маркеры не найдены

' + else: + compact_body = ( + ''.join(_named_node_item("attr", item) for item in attributes[:6]) + or '

Реквизиты не найдены

' + ) + compact_body += ''.join(_tabular_section_item(item) for item in sections[:4]) + compact_body += ''.join(_ui_form_item(item) for item in ui_forms[:4]) + compact_body += ''.join(_role_access_item(item) for item in grants[:6]) + compact_body += ''.join(_integration_endpoint_item(item) for item in integration_items[:4]) + compact_body += ''.join(_named_node_item("command", item) for item in commands[:6]) + compact_body += ''.join(_named_node_item("read", item) for item in query_tables[:4]) + compact_body += ''.join(_named_node_item("write", item) for item in writes[:4]) + compact_body += ''.join(_named_node_item("call", item) for item in callees[:6]) + compact_body += ''.join(_flowchart_edge_item(item, flow_nodes) for item in flow_edges[:8]) + compact_body += ''.join(_runtime_summary_item(item) for item in runtime_items[:6]) + compact_body += ''.join(_knowledge_record_item(item) for item in knowledge_items[:6]) + compact_body += ''.join(_privacy_marker_item(item) for item in privacy_markers[:6]) + compact_body += ''.join(_named_node_item("routine", item) for item in routines[:6]) + compact_body += ''.join(_named_node_item("job", item) for item in jobs[:4]) return f""" -
-
Object context
+
+
Object context · {escape(normalized_mode)}
{escape(str(name))} {escape(str(getattr(obj, "kind", "object")))} @@ -493,21 +535,7 @@ def render_html5_object_context( {_metric("Privacy", len(privacy_markers))}
- {''.join(_named_node_item("attr", item) for item in attributes[:6]) or '

Реквизиты не найдены

'} - {''.join(_tabular_section_item(item) for item in sections[:4])} - {''.join(_ui_form_item(item) for item in ui_forms[:4])} - {''.join(_role_access_item(item) for item in grants[:6])} - {''.join(_integration_endpoint_item(item) for item in integration_items[:4])} - {''.join(_named_node_item("command", item) for item in commands[:6])} - {''.join(_named_node_item("read", item) for item in query_tables[:4])} - {''.join(_named_node_item("write", item) for item in writes[:4])} - {''.join(_named_node_item("call", item) for item in callees[:6])} - {''.join(_flowchart_edge_item(item, flow_nodes) for item in flow_edges[:8])} - {''.join(_runtime_summary_item(item) for item in runtime_items[:6])} - {''.join(_knowledge_record_item(item) for item in knowledge_items[:6])} - {''.join(_privacy_marker_item(item) for item in privacy_markers[:6])} - {''.join(_named_node_item("routine", item) for item in routines[:6])} - {''.join(_named_node_item("job", item) for item in jobs[:4])} + {compact_body}
""" @@ -1539,9 +1567,27 @@ def _object_action_links(project_id: str, object_name: str, lineage_id: object, ) return f"""