Implement workspace history reconciliation

This commit is contained in:
2026-03-03 17:35:45 +00:00
parent 2898d9e832
commit 18351abb00
14 changed files with 556 additions and 57 deletions

View File

@@ -14,8 +14,25 @@
<div class="column is-12">
<h1 class="title is-4" style="margin-bottom: 0.35rem;">Insight Graphs: {{ person.name }}</h1>
<p class="is-size-7 has-text-grey">
Historical metrics for workspace {{ workspace_conversation.id }}. Points come from deterministic message-history snapshots (not only mitigation runs).
Historical metrics for workspace {{ workspace_conversation.id }}. Points are range-downsampled server-side with high-resolution recent data and progressively sparser older ranges.
</p>
<div class="buttons are-small" style="margin: 0.5rem 0 0.25rem;">
<a
class="button {% if graph_density == 'low' %}is-dark{% else %}is-light{% endif %}"
href="?density=low">
Density: Low (max {{ graph_density_caps.low }})
</a>
<a
class="button {% if graph_density == 'medium' %}is-dark{% else %}is-light{% endif %}"
href="?density=medium">
Density: Medium (max {{ graph_density_caps.medium }})
</a>
<a
class="button {% if graph_density == 'high' %}is-dark{% else %}is-light{% endif %}"
href="?density=high">
Density: High (max {{ graph_density_caps.high }})
</a>
</div>
{% include "partials/ai-insight-nav.html" with active_tab="graphs" %}
</div>
@@ -26,7 +43,9 @@
<div>
<p class="heading">{{ graph.group_title }}</p>
<p class="title is-6" style="margin-bottom: 0.2rem;">{{ graph.title }}</p>
<p class="is-size-7 has-text-grey">{{ graph.count }} point{{ graph.count|pluralize }}</p>
<p class="is-size-7 has-text-grey">
{{ graph.count }} displayed of {{ graph.raw_count }} source point{{ graph.raw_count|pluralize }}
</p>
</div>
<div class="buttons are-small" style="margin: 0;">
<a class="button is-light" href="{% url 'ai_workspace_insight_detail' type='page' person_id=person.id metric=graph.slug %}">

View File

@@ -66,13 +66,13 @@
<table class="table is-fullwidth is-striped is-size-7" style="margin-bottom:0.9rem;">
<thead><tr><th>Identifier</th><th>Service</th><th></th></tr></thead>
<tbody>
{% for row in person_identifiers %}
{% for row in person_identifier_rows %}
<tr>
<td><code>{{ row.identifier }}</code></td>
<td>{{ row.service }}</td>
<td class="has-text-right">
{% if selected_project %}
{% if tuple(selected_project.id, row.service, row.identifier) in mapping_pairs %}
{% if row.mapped %}
<span class="tag task-stat-tag">Linked</span>
{% else %}
<form method="post">

View File

@@ -130,7 +130,7 @@
<span class="icon is-small"><i class="fa-solid fa-chart-line"></i></span>
<span>Quick Insights</span>
</button>
<a class="button is-light is-rounded" href="{{ tasks_group_url }}">
<a class="button is-light is-rounded" href="{{ tasks_hub_url }}">
<span class="icon is-small"><i class="fa-solid fa-list-check"></i></span>
<span>Tasks</span>
</a>