|
{% extends "base.html" %}
|
|
|
|
{% block extra_head %}
|
|
<link rel="stylesheet" href="{{ static_url('/static/css/deepsearch.css') }}">
|
|
{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="ds-session" data-deepsearch-session data-uid="{{ uid }}"
|
|
{% if chat_ws_url %}data-chat-ws="{{ chat_ws_url }}"{% endif %}>
|
|
<div class="ds-session-main">
|
|
<header class="ds-session-head">
|
|
<h1>{{ query }}</h1>
|
|
<div class="ds-metrics" role="group" aria-label="Research metrics">
|
|
<span class="ds-metric"><strong>{{ score }}</strong> score</span>
|
|
<span class="ds-metric"><strong>{{ confidence }}</strong> confidence</span>
|
|
<span class="ds-metric"><strong>{{ source_diversity }}</strong> diversity</span>
|
|
<span class="ds-metric"><strong>{{ page_count }}</strong> sources</span>
|
|
<span class="ds-metric"><strong>{{ chunk_count }}</strong> chunks</span>
|
|
</div>
|
|
{% if export_md_url %}
|
|
<div class="ds-exports">
|
|
<a class="btn ds-export" href="{{ export_md_url }}">Markdown</a>
|
|
<a class="btn ds-export" href="{{ export_json_url }}">JSON</a>
|
|
<a class="btn ds-export" href="{{ export_pdf_url }}">PDF</a>
|
|
</div>
|
|
{% endif %}
|
|
</header>
|
|
|
|
{% if synthesis == "heuristic" %}
|
|
<section class="ds-card ds-degraded">
|
|
<strong>Degraded report.</strong> Automatic synthesis failed for this run, so the sections below show raw source material instead of an analysed report. Re-run the research to try again.
|
|
</section>
|
|
{% endif %}
|
|
|
|
{% if summary %}
|
|
<section class="ds-card">
|
|
<h2>{{ "Report" if synthesis == "agents" else "Summary" }}</h2>
|
|
<div class="ds-summary rendered-content">{{ link_citations(render_content(summary), sources|length) }}</div>
|
|
</section>
|
|
{% endif %}
|
|
|
|
{% if findings %}
|
|
<section class="ds-card">
|
|
<h2>Findings</h2>
|
|
<div class="ds-findings">
|
|
{% for finding in findings %}
|
|
<details class="ds-finding" open>
|
|
<summary>
|
|
<span class="ds-finding-title">{{ finding.title }}</span>
|
|
<span class="ds-finding-confidence">{{ finding.confidence }}</span>
|
|
</summary>
|
|
<div class="ds-finding-detail">{{ link_citations(finding.detail|e, sources|length) }}</div>
|
|
{% if finding.citations %}
|
|
<div class="ds-finding-cites">
|
|
{% for cite in finding.citations %}
|
|
{% if cite is number and cite >= 1 and cite <= sources|length %}
|
|
<a class="ds-cite" href="#ds-source-{{ cite }}" data-cite="{{ cite }}">[{{ cite }}]</a>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
</details>
|
|
{% endfor %}
|
|
</div>
|
|
</section>
|
|
{% endif %}
|
|
|
|
{% if sources %}
|
|
<section class="ds-card">
|
|
<h2>Sources</h2>
|
|
<ol class="ds-sources">
|
|
{% for source in sources %}
|
|
<li id="ds-source-{{ loop.index }}">
|
|
<a href="{{ source.url }}" target="_blank" rel="noopener nofollow">{{ source.title or source.url }}</a>
|
|
<span class="ds-source-tag">{{ source.source }}</span>
|
|
</li>
|
|
{% endfor %}
|
|
</ol>
|
|
</section>
|
|
{% endif %}
|
|
</div>
|
|
|
|
<aside class="ds-chat-pane" aria-label="Ask the research">
|
|
<div class="ds-chat-head" role="heading" aria-level="2">Ask the research</div>
|
|
{% if chat_ws_url %}
|
|
<dp-deepsearch-chat uid="{{ uid }}" chat-ws="{{ chat_ws_url }}"></dp-deepsearch-chat>
|
|
{% else %}
|
|
<p class="ds-chat-pending">Chat opens once the research finishes.</p>
|
|
{% endif %}
|
|
</aside>
|
|
</div>
|
|
{% endblock %}
|
|
|
|
{% block extra_js %}
|
|
<script type="module">
|
|
import "{{ static_url('/static/js/components/AppDeepsearchChat.js') }}";
|
|
</script>
|
|
{% endblock %}
|