from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
# Создаем презентацию
prs = Presentation()
# Функция для добавления слайда с заголовком и текстом
def add_text_slide(title, content):
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = title
tf = slide.shapes.placeholders[1].text_frame
tf.text = content
for paragraph in tf.paragraphs:
paragraph.font.size = Pt(14)
paragraph.font.name = "Arial"
paragraph.font.color.rgb = RGBColor(50, 50, 50)
# Функция для добавления слайда с таблицей
def add_table_slide(title, headers, rows):
slide = prs.slides.add_slide(prs.slide_layouts[5])
slide.shapes.title.text = title
rows_count = len(rows) + 1
cols_count = len(headers)
table = slide.shapes.add_table(rows_count, cols_count, Inches(0.5), Inches(1.5), Inches(9), Inches(4)).table
# Заголовки
for col, header in enumerate(headers):
cell = table.cell(0, col)
cell.text = header
cell.text_frame.paragraphs[0].font.bold = True
cell.text_frame.paragraphs[0].font.size = Pt(12)
cell.text_frame.paragraphs[0].font.color.rgb = RGBColor(255, 255, 255)
cell.fill.solid()
cell.fill.fore_color.rgb = RGBColor(0, 102, 204)
# Данные
for row_idx, row_data in enumerate(rows, start=1):
for col_idx, value in enumerate(row_data):
cell = table.cell(row_idx, col_idx)
cell.text = value
cell.text_frame.paragraphs[0].font.size = Pt(11)
cell.text_frame.paragraphs[0].font.color.rgb = RGBColor(50, 50, 50)
# Титульный слайд
slide = prs.slides.add_slide(prs.slide_layouts[0])
slide.shapes.title.text = "Использование и оплата сервисов\nличного кабинета интернет-магазина"
slide.placeholders[1].text = "Деловой минимализм с цветовыми акцентами"
# Слайд 1 - Общая информация
add_text_slide("1. Общая информация",
"""Для сайта на платформе Tilda разработан функциональный личный кабинет (ЛК), который позволяет пользователю:
- отслеживать историю заказов;
- просматривать состав заказа;
- видеть статус оплаты;
- производить оплату заказа через CloudPayments.
Особенность: так как Tilda не имеет встроенного полноценного функционала ЛК, система реализована с помощью внешних сервисов и интеграций.
Процесс работы:
1. Все заказы проходят через менеджера (администратора).
2. Менеджер проверяет стоимость заказа и доставки, корректирует данные.
3. После проверки клиенту отображается итоговая сумма к оплате.
4. Проверка заказа осуществляется в течение 1 часа.
5. Оплата доступна только после подтверждения менеджером.
""")
# Слайд 2 - Архитектура решения
add_text_slide("2. Архитектура решения",
"""1. Tilda — отображает каталог и принимает заказы через форму.
2. NocoDB — база данных заказчиков, заказов, их состава и оплат.
3. Адаптер — интегрирует формы Tilda с API, передавая данные в NocoDB.
4. Nodul — автоматизирует передачу данных между Tilda, NocoDB и CloudPayments.
5. Менеджер — через интерфейс NocoDB вносит проверенные данные.
6. Клиент — оплачивает заказ через CloudPayments.
7. Информация об оплате — обновляется в ЛК (Tilda) через Nodul → NocoDB → Tilda.
""")
# Слайд 3 - Таблица технологий
add_table_slide("3. Используемые технологии и сервисы",
["Сервис / инструмент", "Назначение", "Примечания"],
[
["Tilda", "Витрина, формы заказа", "Сбор заявок"],
["NocoDB", "База данных заказов", "Self-host или облако Reg.ru"],
["Nodul", "API / автоматизация", "Интеграция Tilda и NocoDB"],
["Адаптер", "Обработка форм Tilda", "Преобразует в API-запрос"],
["CloudPayments", "Прием онлайн-платежей", "Поддержка банковских карт"],
["Менеджер", "Обработка заказов", "Проверка суммы и данных"]
])
# Слайд 4 - Таблица стоимости
add_table_slide("4. Стоимость и даты оплаты сервисов",
["Сервис", "Стоимость", "Дата следующей оплаты / Примечания"],
[
["Tilda", "750 ₽/мес.", "Оплачено до 15.06.2026"],
["Nodul", "1700 ₽/мес.", "Следующая оплата 15.08.2025"],
["Адаптер", "600 ₽/мес.", "Оплачено до 06.09.2025 (автосписание)"],
["NocoDB (Reg.ru)", "630 ₽/мес.", "Последняя оплата 22.07.2025 (пополнить счёт заранее)"]
])
# Слайд 5 - Доступы
add_text_slide("5. Доступы",
"""Tilda: https://tilda.ru/
Логин: a.makarenkov@ca-plastic.ru
Пароль: Deflektor
Reg.ru: https://www.reg.ru/
Логин: nis1807@yandex.ru
Пароль: tXRvqA6_
Адаптер:
Логин: deflectormsk@mail.ru
Пароль: 7SSDwPwT*r4a
CloudPayments: https://merchant.cloudpayments.ru/next/dashboard/
Логин: deflectormsk@mail.ru
Пароль: Deflector2025$
SMTP.BZ:
Логин: deflectormsk@mail.ru
Пароль: S6u*iF@##YPr44
NocoDB: https://ncdb.caplastic-msk.ru
Логин: deflectormsk@mail.ru
Пароль: Deflector2025
Отдельные входы для менеджеров:
- Иван: nis1807@yandex.ru / Пароль: Deflector1807
- Андрей: a.makarenkov@ca-plastic.ru / Пароль: 4u*n^nYjjtDoo5
""")
# Сохраняем файл
pptx_path = "/mnt/data/Использование_и_оплата_сервисов_ЛК.pptx"
prs.save(pptx_path)
pptx_path