diff --git a/backend/app/services/generative/exporters/pdf.py b/backend/app/services/generative/exporters/pdf.py
index ef3d1414..7ec34e11 100644
--- a/backend/app/services/generative/exporters/pdf.py
+++ b/backend/app/services/generative/exporters/pdf.py
@@ -66,9 +66,7 @@ def _strategy_label(strategy: str) -> str:
def _teap_table(variants: Sequence[ConceptVariant]) -> str:
"""HTML-таблица ТЭП по всем вариантам (строки — показатели, колонки — стратегии)."""
- headers = "".join(
- f"
{html.escape(_strategy_label(v.strategy))} | " for v in variants
- )
+ headers = "".join(f"{html.escape(_strategy_label(v.strategy))} | " for v in variants)
rows: list[tuple[str, list[str]]] = [
("Пятно застройки, кв.м", [_fmt_int(v.teap.built_area_sqm) for v in variants]),
("Общая площадь (GFA), кв.м", [_fmt_int(v.teap.total_floor_area_sqm) for v in variants]),
@@ -107,9 +105,7 @@ def _fmt_irr(financial: FinancialModel) -> str:
def _financial_table(variants: Sequence[ConceptVariant]) -> str:
"""HTML-таблица финмодели (деньги в млн руб; полный каскад + БДР + DCF)."""
- headers = "".join(
- f"{html.escape(_strategy_label(v.strategy))} | " for v in variants
- )
+ headers = "".join(f"{html.escape(_strategy_label(v.strategy))} | " for v in variants)
rows: list[tuple[str, list[str]]] = [
(
"Выручка — жильё, млн руб",
@@ -188,9 +184,13 @@ def _build_html(variants: Sequence[ConceptVariant]) -> str:
"точность метрик зависит от реального графика. Где IRR помечен «оценочный» — поток "
"вырожденный (нет смены знака), показан аннуализированный ROI вместо DCF-IRR. "
"НДС — реализация жилья и услуги застройщика по ДДУ освобождены (ст. 149 НК РФ), "
- "входной НДС по СМР встроен в себестоимость; НДС начисляется только на нежилую часть "
- "(машиноместа). Налог на прибыль — 25% (с 2025). Цены и себестоимость "
- "— рыночные ориентиры. Коммерческие/офисные площади не учитываются (нет в ТЭП)."
+ "входной НДС по СМР встроен в себестоимость; НДС начисляется на нежилые части — "
+ "машиноместа и коммерцию/офисы 1-го этажа (встроенный НДС в добавленной стоимости "
+ "каждой части). Налог на прибыль — 25% (с 2025). Цены и себестоимость — рыночные "
+ "ориентиры. Коммерция/офисы 1-го этажа учтены по нормативной доле от общей площади "
+ "и продаются с умеренной наценкой к цене жилья того же класса; себестоимость СМР "
+ "нежилого — по той же ставке, что и жильё (отдельной строки затрат нет, повторного "
+ "учёта в затратах нет)."
"