напиши программу на питоне, которая возьмет такие входные данные:

class InputData(BaseModel):
    # Из 1 части формы
    business_type: BusinessType = Field(default=BusinessType.others)
    clients_per_month: int = Field(ge=1, default=default_cpm(business_type))
    averege_price: int = Field(ge=1, default=default_ap(business_type))
    averege_payment_count: float = Field(ge=1, default=default_pc(business_type))
    
    # Из 2 части формы
    retantion_rate: int = Field(ge=0, le=100, default=30)
    repeat_purchase_rate: int = Field(ge=0, le=100, default=25)
    referral_rate: int = Field(ge=0, le=100, default=10)
    
    # Из 3 части формы
    bonus_rate: int = Field(ge=0, le=100, default=10)
    involved_clients_rate: int = Field(ge=0, le=100, default=60)
    
    # Из всплывающего окна
    name: str
    email: EmailStr

произведет с данными необходимые расчеты и вернет html файл, вот шаблон для него
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Ваш персональный расчет ROI</title>
    <style>
        body {
            font-family: 'Inter', Arial, sans-serif;
            line-height: 1.6;
            color: #000000;
            max-width: 600px;
            margin: 0 auto;
            padding: 0;
            background-color: #ffffff;
            position: relative;
            overflow-x: hidden;
        }
        .bg-circle {
            position: absolute;
            top: -100px;
            left: 50%;
            transform: translateX(-50%);
            width: 300px;
            height: 300px;
            background: radial-gradient(circle, rgba(184,235,0,0.15) 0%, rgba(184,235,0,0) 70%);
            filter: blur(20px);
            z-index: 0;
        }
        .header {
            text-align: center;
            margin-bottom: 30px;
            padding: 40px 20px 20px;
            position: relative;
        }
        h1 {
            color: #000000;
            font-size: 28px;
            margin-bottom: 10px;
            position: relative;
        }
        h1:after {
            content: "";
            position: absolute;
            bottom: -10px;
            left: 50%;
            transform: translateX(-50%);
            width: 80px;
            height: 3px;
            background: #b8eb00;
        }
        .logo {
            color: #b8eb00;
            font-weight: bold;
            font-size: 24px;
            margin-bottom: 15px;
            display: inline-block;
            position: relative;
        }
        .intro-text {
            background: #f5f5f5;
            padding: 20px;
            border-radius: 12px;
            margin: 0 20px 25px;
            font-size: 15px;
            line-height: 1.6;
        }
        .card {
            background-color: #f5f5f5;
            border-radius: 12px;
            padding: 25px;
            margin: 0 20px 25px;
            box-shadow: 0 4px 12px rgba(0,0,0,0.05);
            position: relative;
            overflow: hidden;
        }
        .card:before {
            content: "";
            position: absolute;
            top: 0;
            right: 0;
            width: 60px;
            height: 60px;
            background: #b8eb00;
            border-radius: 0 0 0 100%;
            opacity: 0.1;
        }
        .chart-container {
            display: flex;
            justify-content: space-between;
            margin: 30px 0;
            flex-wrap: wrap;
        }
        .chart-item {
            width: 48%;
            margin-bottom: 20px;
            text-align: center;
        }
        .chart-circle {
            width: 100px;
            height: 100px;
            border-radius: 50%;
            background: conic-gradient(#b8eb00 0% 65%, #f0f0f0 65% 100%);
            margin: 0 auto 10px;
            display: flex;
            align-items: center;
            justify-content: center;
            color: #000;
            font-weight: bold;
            font-size: 20px;
            position: relative;
        }
        .chart-circle:before {
            content: "";
            position: absolute;
            width: 80px;
            height: 80px;
            background: #f5f5f5;
            border-radius: 50%;
        }
        .chart-circle span {
            position: relative;
            z-index: 1;
        }
        .chart-label {
            font-size: 14px;
            color: #555;
        }
        .comparison-chart {
            height: 200px;
            display: flex;
            align-items: flex-end;
            justify-content: center;
            margin: 30px 0;
            position: relative;
        }
        .chart-bar {
            width: 30%;
            margin: 0 5px;
            position: relative;
        }
        .bar-market {
            height: 100px;
            background: linear-gradient(to top, #aaa, #ccc);
            border-radius: 8px 8px 0 0;
        }
        .bar-before {
            height: 120px;
            background: linear-gradient(to top, #ddd, #eee);
            border-radius: 8px 8px 0 0;
        }
        .bar-after {
            height: 180px;
            background: linear-gradient(to top, #b8eb00, #c8f020);
            border-radius: 8px 8px 0 0;
        }
        .chart-bar-label {
            position: absolute;
            bottom: -25px;
            width: 100%;
            text-align: center;
            font-size: 12px;
        }
        .chart-value {
            position: absolute;
            top: -25px;
            width: 100%;
            text-align: center;
            font-weight: bold;
            font-size: 14px;
        }
        .timeline {
            display: flex;
            justify-content: space-between;
            margin: 30px 0;
            position: relative;
        }
        .timeline:before {
            content: "";
            position: absolute;
            top: 20px;
            left: 0;
            right: 0;
            height: 3px;
            background: #ddd;
            z-index: 0;
        }
        .timeline-item {
            text-align: center;
            width: 23%;
            position: relative;
            z-index: 1;
        }
        .timeline-dot {
            width: 16px;
            height: 16px;
            background: #b8eb00;
            border: 3px solid #fff;
            border-radius: 50%;
            margin: 0 auto 10px;
            box-shadow: 0 0 0 2px #b8eb00;
        }
        .timeline-dot.inactive {
            background: #ddd;
            box-shadow: 0 0 0 2px #ddd;
        }
        .timeline-label {
            font-size: 12px;
            color: #555;
            margin-top: 5px;
        }
        .btn {
            display: block;
            background-color: #b8eb00;
            color: #ffffff;
            text-align: center;
            padding: 16px 28px;
            border-radius: 8px;
            text-decoration: none;
            font-weight: bold;
            margin: 40px auto;
            width: 80%;
            max-width: 300px;
            font-size: 18px;
            box-shadow: 0 4px 12px rgba(0,0,0,0.1);
            transition: all 0.3s ease;
        }
        .btn:hover {
            transform: translateY(-2px);
            box-shadow: 0 6px 16px rgba(0,0,0,0.15);
            background-color: #b8eb00;
        }
        .market-comparison {
            background: #fff;
            border-radius: 8px;
            padding: 15px;
            margin: 20px 0;
            box-shadow: 0 2px 8px rgba(0,0,0,0.05);
        }
        .comparison-row {
            display: flex;
            justify-content: space-between;
            padding: 10px 0;
            border-bottom: 1px solid #eee;
        }
        .comparison-category {
            font-weight: 500;
            width: 50%;
        }
        .comparison-value {
            width: 16%;
            text-align: center;
            font-size: 13px;
        }
        .comparison-value.market {
            color: #777;
        }
        .comparison-value.you {
            color: #000;
            font-weight: bold;
        }
        .comparison-value.result {
            color: #b8eb00;
            font-weight: bold;
        }
        .footer {
            text-align: center;
            font-size: 12px;
            color: #777777;
            margin: 40px 20px 20px;
            padding-top: 20px;
            border-top: 1px solid #eee;
        }
        .disclaimer {
            background: #f9f9f9;
            padding: 15px;
            border-radius: 8px;
            margin-top: 20px;
            font-size: 11px;
            line-height: 1.5;
        }
        .benefit-card {
            background: #fff;
            border-radius: 8px;
            padding: 15px;
            margin: 15px 0;
            display: flex;
            align-items: center;
        }
        .benefit-icon {
            width: 40px;
            height: 40px;
            background: #b8eb00;
            border-radius: 8px;
            display: flex;
            align-items: center;
            justify-content: center;
            margin-right: 15px;
            flex-shrink: 0;
            color: #000;
            font-weight: bold;
            font-size: 18px;
        }
        .benefit-text {
            font-size: 14px;
        }
        .benefit-title {
            font-weight: bold;
            margin-bottom: 5px;
        }
    </style>
</head>
<body>
    <div class="bg-circle"></div>
    
    <div class="header">
        <div class="logo">Teyca</div>
        <h1>Ваш персональный расчет ROI</h1>
        <p>Как программа лояльности увеличит прибыль вашего бизнеса</p>
    </div>

    <div class="intro-text">
        На основе данных вашего бизнеса (<strong>розничная торговля</strong>) мы рассчитали потенциальный эффект от внедрения программы лояльности Teyca. В отчете представлено сравнение с текущими показателями и средними значениями по рынку.
    </div>

    <div class="card">
        <h2>Ключевые показатели вашего бизнеса</h2>
        <div class="chart-container">
            <div class="chart-item">
                <div class="chart-circle"><span>2 250 ₽</span></div>
                <div class="chart-label">Средний чек</div>
                <div style="font-size: 12px; color: #777; margin-top: 5px;">(Среднее по рынку: 1 950 ₽)</div>
            </div>
            <div class="chart-item">
                <div class="chart-circle" style="background: conic-gradient(#b8eb00 0% 75%, #f0f0f0 75% 100%);"><span>2 000</span></div>
                <div class="chart-label">Клиентов/месяц</div>
                <div style="font-size: 12px; color: #777; margin-top: 5px;">(Среднее по рынку: 1 700)</div>
            </div>
        </div>
    </div>

    <div class="card">
        <h2>Сравнение с рынком после внедрения</h2>
        
        <div class="comparison-chart">
            <div class="chart-bar">
                <div class="chart-value">32%</div>
                <div class="bar-market"></div>
                <div class="chart-bar-label">Рынок</div>
            </div>
            <div class="chart-bar">
                <div class="chart-value">25%</div>
                <div class="bar-before"></div>
                <div class="chart-bar-label">Ваш текущий</div>
            </div>
            <div class="chart-bar">
                <div class="chart-value">42%</div>
                <div class="bar-after"></div>
                <div class="chart-bar-label">С Teyca</div>
            </div>
        </div>
        
        <div class="market-comparison">
            <div class="comparison-row" style="font-weight: bold; border-bottom: 2px solid #eee;">
                <div class="comparison-category">Показатель</div>
                <div class="comparison-value market">Рынок</div>
                <div class="comparison-value you">Вы сейчас</div>
                <div class="comparison-value result">С Teyca</div>
            </div>
            <div class="comparison-row">
                <div class="comparison-category">Удержание клиентов</div>
                <div class="comparison-value market">28%</div>
                <div class="comparison-value you">25%</div>
                <div class="comparison-value result">42%</div>
            </div>
            <div class="comparison-row">
                <div class="comparison-category">Средний чек</div>
                <div class="comparison-value market">1 950 ₽</div>
                <div class="comparison-value you">2 250 ₽</div>
                <div class="comparison-value result">2 700 ₽</div>
            </div>
            <div class="comparison-row">
                <div class="comparison-category">Лояльность</div>
                <div class="comparison-value market">3.2/5</div>
                <div class="comparison-value you">3.5/5</div>
                <div class="comparison-value result">4.3/5</div>
            </div>
            <div class="comparison-row" style="border-bottom: none;">
                <div class="comparison-category">Прибыль/клиент</div>
                <div class="comparison-value market">620 ₽</div>
                <div class="comparison-value you">750 ₽</div>
                <div class="comparison-value result">1 150 ₽</div>
            </div>
        </div>
    </div>

    <div class="card">
        <h2>Как программа улучшит ваш бизнес</h2>
        
        <div class="benefit-card">
            <div class="benefit-icon">+68%</div>
            <div class="benefit-text">
                <div class="benefit-title">Рост повторных покупок</div>
                <div>Клиенты возвращаются чаще благодаря персональным предложениям и бонусам</div>
            </div>
        </div>
        
        <div class="benefit-card">
            <div class="benefit-icon">+20%</div>
            <div class="benefit-text">
                <div class="benefit-title">Увеличение среднего чека</div>
                <div>Клиенты покупают больше, чтобы получить новый статус в программе</div>
            </div>
        </div>
        
        <div class="benefit-card">
            <div class="benefit-icon">15+</div>
            <div class="benefit-text">
                <div class="benefit-title">Новых клиентов в месяц</div>
                <div>Благодаря реферальной программе и виральному эффекту</div>
            </div>
        </div>
    </div>

    <div class="card">
        <h2>Прогноз роста выручки</h2>
        
        <div class="timeline">
            <div class="timeline-item">
                <div class="timeline-dot inactive"></div>
                <div>1 месяц</div>
                <div class="timeline-label">+5%</div>
            </div>
            <div class="timeline-item">
                <div class="timeline-dot inactive"></div>
                <div>2 месяца</div>
                <div class="timeline-label">+12%</div>
            </div>
            <div class="timeline-item">
                <div class="timeline-dot"></div>
                <div>3 месяца</div>
                <div class="timeline-label">+25%</div>
            </div>
            <div class="timeline-item">
                <div class="timeline-dot"></div>
                <div>4 месяца</div>
                <div class="timeline-label">+38%</div>
            </div>
        </div>
        
        <div style="text-align: center; margin-top: 30px;">
            <div style="font-size: 24px; font-weight: bold; color: #b8eb00;">+150 000 ₽/мес</div>
            <div style="color: #777; margin-top: 5px;">Средний прирост через 6 месяцев</div>
        </div>
    </div>

    <a href="https://teyca.com/register?source=roi_report" class="btn">Начать использовать</a>

    <div class="footer">
        <div class="disclaimer">
            *Расчеты основаны на средних показателях для вашей отрасли (розничная торговля) и могут отличаться 
            от фактических результатов. Данный отчет не является гарантией или обещанием 
            конкретных финансовых результатов. Для получения персонализированного расчета 
            свяжитесь с нашими специалистами.
        </div>
    </div>
</body>
</html>