Files
lofyerandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 71db82393a Initial commit
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-13 15:38:41 +08:00

145 lines
6.2 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{# 单个维度详细分析(在 for 循环内 include #}
{# 需要外部传入: dim_name, dim_data, part_id #}
{% set dim_display = t.dim(dim_name) %}
{% set part_num = part_id | replace('part', '') %}
<div class="section" id="{{ part_id }}">
<h1>{{ t.part(part_id) }}</h1>
<h2>{{ t.dim_section_overall }}</h2>
<div class="score-cards">
<div class="score-card">
<div class="label">{{ t.dim_score_label.format(name=dim_display) }}</div>
<div class="value">{{ "%.1f"|format(dim_data.score) }}</div>
<div class="diff {{ 'positive' if dim_data.diff_district > 0 else 'negative' }}">
{{ "%+.1f"|format(dim_data.diff_district) }} {{ t.vs_district_avg }}
</div>
</div>
<div class="score-card">
<div class="label">{{ t.same_type_avg }}</div>
<div class="value" style="font-size:24px">{{ "%.1f"|format(dim_data.same_type_avg) }}</div>
</div>
<div class="score-card">
<div class="label">{{ t.rank_in_district }}</div>
<div class="value">{{ dim_data.rank_in_district }}/{{ overall.total_schools }}</div>
{% if overall.total_schools_in_city and dim_data.rank_in_city is defined %}
<div class="diff" style="color: var(--gray-500); font-size: 12px;">
{{ t.sd_city_rank_prefix }} {{ dim_data.rank_in_city }}/{{ overall.total_schools_in_city }}
</div>
{% endif %}
</div>
<div class="score-card">
<div class="label">{{ t.performance }}</div>
<div class="value" style="font-size:14px">
{# 基于实际数据判断表现标签,而非聚类标签 #}
{% set diff = dim_data.diff_district %}
{% set rank = dim_data.rank_in_district %}
{% set total = overall.total_schools %}
{% set rank_pct = rank / total if total else 1 %}
{% if diff > 3 and rank_pct <= 0.33 %}
<span class="type-badge good">{{ t.perf_good }}</span>
{% elif diff > 0 and rank_pct <= 0.5 %}
<span class="type-badge good">{{ t.perf_above }}</span>
{% elif diff >= -2 and rank_pct <= 0.67 %}
<span class="type-badge neutral">{{ t.perf_neutral }}</span>
{% elif diff < -3 or rank_pct > 0.8 %}
<span class="type-badge weak">{{ t.perf_weak }}</span>
{% else %}
<span class="type-badge neutral">{{ t.perf_below }}</span>
{% endif %}
</div>
</div>
</div>
<!-- 维度独立得分柱状图 + 子维度雷达/柱状图 -->
<div class="chart-row">
<div class="chart-box">
<div id="dim-score-{{ part_id }}" class="chart"></div>
<div class="chart-title">{{ t.dim_fig_score.format(n=part_num, name=dim_display) }}</div>
</div>
<div class="chart-box">
<div id="sub-radar-{{ part_id }}" class="chart"></div>
<div class="chart-title">{{ t.dim_fig_subradar.format(n=part_num, name=dim_display) }}</div>
</div>
</div>
<div class="chart-caption">
{{ llm_sections.get(part_id + '_caption_dim_score', '') | safe }}
</div>
<!-- 子维度柱状图 + 水平分布堆叠图 -->
<div class="chart-row">
<div class="chart-box">
<div id="chart-{{ part_id }}" class="chart"></div>
<div class="chart-title">{{ t.dim_fig_subbar.format(n=part_num, name=dim_display) }}</div>
</div>
<div class="chart-box">
<div id="level-{{ part_id }}" class="chart"></div>
<div class="chart-title">{{ t.dim_fig_levels.format(n=part_num, name=dim_display) }}</div>
</div>
</div>
<div class="chart-caption">
{{ llm_sections.get(part_id + '_caption_sub_detail', '') | safe }}
</div>
<!-- 聚类散点图(2D或3D -->
<div class="chart-box">
<div id="scatter-{{ part_id }}" class="chart" style="height:450px"></div>
<div class="chart-title">{{ t.dim_fig_scatter.format(n=part_num, name=dim_display) }}</div>
</div>
<div class="chart-caption">
{{ llm_sections.get(part_id + '_caption_scatter', '') | safe }}
</div>
<!-- 维度整体LLM分析 -->
<div class="llm-analysis">
{{ llm_sections.get(part_id + '_overall', '<p>' + t.loading + '</p>') | safe }}
</div>
<!-- 水平对比表 -->
<h3>{{ t.dim_section_subdims.format(name=dim_display) }} ({{ t.tbl }} {{ part_num }}-1)</h3>
<table class="level-table">
<thead>
<tr>
<th>{{ t.sub_dimension }}</th>
<th>{{ school_display }}</th>
<th>{{ t.score }}</th>
<th>{{ t.district_avg }}</th>
<th>{{ t.rank_in_district }}</th>
{% if overall.total_schools_in_city %}<th>{{ t.rank_in_city }}</th>{% endif %}
</tr>
</thead>
<tbody>
{% for sub_dim in framework[dim_name].sub_dimensions %}
{% set sd = sub_dimensions.get(sub_dim, {}) %}
{% if sd %}
<tr>
<td>{{ t.sub(sub_dim) }}</td>
<td class="lv{{ sd.level }}">{{ t.level_label }} {{ sd.level }}</td>
<td>{{ "%.1f"|format(sd.score) }}</td>
<td>{{ "%.1f"|format(sd.district_avg) }}</td>
<td>{{ sd.rank_in_district }}/{{ overall.total_schools }}</td>
{% if overall.total_schools_in_city %}
<td>{{ sd.rank_in_city if sd.rank_in_city is defined else '-' }}/{{ overall.total_schools_in_city }}</td>
{% endif %}
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
<hr class="section-divider">
<!-- 各三级维度详细分析 -->
{% for sub_dim in framework[dim_name].sub_dimensions %}
{% set sd = sub_dimensions.get(sub_dim, {}) %}
{% if sd %}
{% set sub_index = loop.index %}
{% include 'sections/sub_dimension.html' %}
{% if not loop.last %}
<hr class="section-divider">
{% endif %}
{% endif %}
{% endfor %}
</div>