diff --git a/services/api-server/src/api_server/html5.py b/services/api-server/src/api_server/html5.py
index b0aa39f..6f59f5c 100644
--- a/services/api-server/src/api_server/html5.py
+++ b/services/api-server/src/api_server/html5.py
@@ -223,6 +223,7 @@ def render_html5_editor(
+
Object context
+
Выберите объект метаданных, чтобы сервер собрал schema/impact контекст проекта {escape(project_id)}.
+
+ """
+ obj = getattr(schema, "object", None) or getattr(impact, "object", None)
+ name = getattr(obj, "qualified_name", None) or getattr(obj, "name", None) or "object"
+ attributes = getattr(schema, "attributes", []) or []
+ sections = getattr(schema, "tabular_sections", []) or []
+ modules = getattr(impact, "modules", []) or []
+ routines = getattr(impact, "routines", []) or []
+ forms = getattr(impact, "forms", []) or []
+ roles = getattr(impact, "roles", []) or []
+ jobs = getattr(impact, "jobs", []) or []
+ return f"""
+
+
Object context
+
+ {escape(str(name))}
+ {escape(str(getattr(obj, "kind", "object")))}
+
+
+ {_metric("Attrs", len(attributes))}
+ {_metric("Tables", len(sections))}
+ {_metric("Modules", len(modules))}
+ {_metric("Routines", len(routines))}
+ {_metric("Forms", len(forms))}
+ {_metric("Roles", len(roles))}
+
+
+ {''.join(_named_node_item("attr", item) for item in attributes[:6]) or '
Реквизиты не найдены
'}
+ {''.join(_tabular_section_item(item) for item in sections[:4])}
+ {''.join(_named_node_item("routine", item) for item in routines[:6])}
+ {''.join(_named_node_item("job", item) for item in jobs[:4])}
+
+
+ """
+
+
def render_html5_authoring_changes(project_id: str, changes: Iterable[object] | None) -> str:
if changes is None:
return f"""
@@ -1204,12 +1247,29 @@ def _tree_item(project_id: str, node: object) -> str:
kind = getattr(node, "kind", "")
kind_value = str(kind.value if hasattr(kind, "value") else kind)
lineage_id = str(getattr(node, "lineage_id", ""))
+ object_kinds = {
+ NodeKind.CATALOG.value,
+ NodeKind.DOCUMENT.value,
+ NodeKind.REGISTER.value,
+ NodeKind.COMMON_MODULE.value,
+ NodeKind.REPORT.value,
+ NodeKind.DATA_PROCESSOR.value,
+ }
+ if kind_value in object_kinds:
+ htmx_attrs = (
+ f'hx-get="/html5/projects/{quote(project_id)}/objects/context/{quote(str(name), safe="")}" '
+ 'hx-target="[data-html5-object-context]" hx-swap="outerHTML"'
+ )
+ else:
+ htmx_attrs = (
+ f'hx-get="/html5/projects/{quote(project_id)}/source/{quote(lineage_id, safe="")}" '
+ 'hx-target="[data-html5-source]" hx-swap="outerHTML"'
+ )
return (
f'