feat(reports): add quarterly and technique HTML templates [FASE-2.2]
Introduce quarterly_summary and technique_detail Jinja layouts; use SVG logo asset across report covers.
This commit is contained in:
72
backend/app/templates/reports/quarterly_summary.html
Normal file
72
backend/app/templates/reports/quarterly_summary.html
Normal file
@@ -0,0 +1,72 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="styles/report.css">
|
||||
<title>Quarterly Summary — {{ company_name }}</title>
|
||||
</head>
|
||||
<body>
|
||||
<section class="cover-page">
|
||||
<img src="assets/logo.svg" class="logo" alt="Logo">
|
||||
<h1>Quarterly Security Summary</h1>
|
||||
<h2>{{ quarter_label }}</h2>
|
||||
<p class="date">{{ generated_at }}</p>
|
||||
<p class="classification">{{ classification | default('INTERNAL') }}</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>1. Quarter Overview</h2>
|
||||
<div class="stats-grid">
|
||||
<div class="stat">
|
||||
<span class="number">{{ tests_this_quarter }}</span>
|
||||
<span class="label">Tests Executed</span>
|
||||
</div>
|
||||
<div class="stat">
|
||||
<span class="number">{{ org_score.overall | default(0) }}%</span>
|
||||
<span class="label">Org Score</span>
|
||||
</div>
|
||||
<div class="stat">
|
||||
<span class="number">{{ detection_rate }}%</span>
|
||||
<span class="label">Detection Rate</span>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>2. Coverage Trend</h2>
|
||||
<table class="data-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Date</th>
|
||||
<th>Validated</th>
|
||||
<th>Total Techniques</th>
|
||||
<th>Org Score</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for row in trend_rows %}
|
||||
<tr>
|
||||
<td>{{ row.date }}</td>
|
||||
<td>{{ row.validated_count }}</td>
|
||||
<td>{{ row.total_techniques }}</td>
|
||||
<td>{{ row.organization_score }}%</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>3. Top Gaps</h2>
|
||||
<ul>
|
||||
{% for gap in top_gaps %}
|
||||
<li><strong>{{ gap.tactic }}</strong>: {{ gap.coverage_pct }}% coverage</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
<p>{{ company_name }} — Confidential</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user