{% extends "pmo_base.html" %} {% block title %}{{ p.name }} — Etki{% endblock %} {% block screen %}
{{ t('common.back_projects') }}

{{ p.name }}

{% if p.indexed %} {{ t('common.indexed_full') }} {% else %} {{ t('common.no_index') }} {% endif %}

{{ p.contract_id }} {{ t('pd.freshness') }}: {{ p.freshness }} {% if p.freshness_days is not none and p.freshness_days > 7 %} ⚠ {{ t('pd.stale_badge', n=p.freshness_days) }} {% endif %} {{ t('ih.link') }} {{ t('pd.work_items') }}: {{ p.work_items }} {% for h in degraded %} ⚠ {{ t('pd.degraded_' + h.port, name=h.adapter) }} {% endfor %}

{{ t('projects.stat_modules') }}
{{ p.modules }}
{{ t('pd.stat_modules_sub') }} →
{{ t('projects.stat_clauses') }}
{{ p.clauses }}
{{ p.included }} {{ t('common.included_word') }} · {{ p.excluded }} {{ t('common.excluded_word') }}
{{ t('pd.stat_baseline') }}
v{{ p.baseline_version }}
{{ t('pd.stat_baseline_sub') }} →
{{ t('pd.stat_documents') }}
{{ documents|length }}
{{ t('pd.documents_linked_repos', r=repos|length) }}
{# ===== Reports / KPI panel (merged from the old Raporlar screen; /raporlar redirects here) ===== #} {% if k %}

{{ t('nav.reports') }}

{{ t('rep.subtitle') }}
{# Each tile links to the list that answers "which ones?" #}

{{ t('rep.decisions_dist') }}

{% if k.by_decision %}
{% for name, count in k.by_decision.items() %} {{ name|tr_decision }}: {{ count }} {% endfor %}
{% else %}

{{ t('rep.no_decisions') }}

{% endif %}

{{ t('rep.effort_pool') }}

{% if degraded|selectattr('port', 'equalto', 'work_items')|list %}

⚠ {{ t('rep.pool_degraded_note') }}

{% endif %}
{% for category, pool in k.effort_pools.items() %}
{{ category }} {{ t('pool.breakdown') }} {{ pool.consumed|round(0)|int }}/{{ pool.pool|round(0)|int }} {{ t('common.hours_short') }}
{% set ratio = (pool.ratio * 100)|round(0)|int %}
{% else %}

{{ t('rep.no_effort_pool') }}

{% endfor %}
{{ t('rep.kpi_defs') }}
{{ t('rep.def_override_t') }}
{{ t('rep.def_override_d') }}
{{ t('rep.def_recon_t') }}
{{ t('rep.def_recon_d') }}
{{ t('rep.def_cr_t') }}
{{ t('rep.def_cr_d') }}
{{ t('rep.def_baseline_t') }}
{{ t('rep.def_baseline_d') }}
{{ t('rep.def_pool_t') }}
{{ t('rep.def_pool_d')|safe }}
{{ t('rep.calibration_summary', n=k.calibration|length) }}
    {% for s in k.calibration %}
  • {{ s }}
  • {% else %}
  • {{ t('rep.no_override_suggestions') }}
  • {% endfor %}

{{ t('rep.calibration_note') }}

{% endif %}

{{ t('pd.scope_items') }}

{{ scope_items|length }}
{% for s in scope_items %} {% if s.polarity.value == 'EXCLUDED' %} {{ t('badge.excluded') }} {% else %} {{ t('badge.included') }} {% endif %}
{{ s.description }}
{{ s.id }}{% if s.category and s.category != 'genel' %} · {{ s.category }}{% endif %}
{% else %}

{{ t('pd.scope_empty') }}

{% endfor %}

{{ t('pd.recent_requests') }}

{% for c in cases %}
{{ c.request }}
{% for d in c.decisions %}{{ d.label }}{% endfor %} {{ c.status.label }}
{% else %}

{{ t('pd.recent_empty') }}

{% endfor %}

{{ t('pd.repos') }}

{% for r in repos %}
{{ r.name }} {{ r.engine }}
{{ r.source }}
{% else %}

{{ t('pd.repos_empty') }}

{% endfor %}

{{ t('deps.card_title') }} {% if dependencies %}({{ dependencies|length }}){% endif %}

{% if dependencies %}
{{ t('deps.package') }}{{ t('deps.spec') }}{{ t('deps.ecosystem') }}{{ t('deps.used_by') }}
{% for d in dependencies %}
{{ d.name }}{% if d.dev %} dev{% endif %} {{ d.spec }} {{ d.ecosystem }} {% if d.used_by %}{{ d.used_by|join(', ') }}{% else %}—{% endif %}
{% endfor %}
{% else %}

{{ t('deps.none') }}

{% endif %} {% if dependencies and deps_online %}
{{ t('vd.loading') }}
{% endif %}

{{ t('pd.documents') }}

{% for doc in documents %}
{{ doc.name }} {% if doc.id is defined %} {{ t('pf.preview') }} {% endif %}
{% else %}

{{ t('pd.documents_empty') }}

{% endfor %}
{% endblock %}