diff --git a/solutions/69dd4221f309a98be0006b2e_сырой_текст_задания___плоская_карточка/README.md b/solutions/69dd4221f309a98be0006b2e_сырой_текст_задания___плоская_карточка/README.md index 592c759..a025edd 100644 --- a/solutions/69dd4221f309a98be0006b2e_сырой_текст_задания___плоская_карточка/README.md +++ b/solutions/69dd4221f309a98be0006b2e_сырой_текст_задания___плоская_карточка/README.md @@ -1,12 +1,9 @@ -# Сырой текст → плоская карточка +# Сырой текст задания → плоская карточка -Простой скрипт, который берёт **сырой текст** задания (например, из PDF‑файла) и преобразует его в **плоскую карточку** – готовый к использованию шаблон для обучения. -В проекте реализованы два основных файла: +Проект преобразует **сырой текст** (описание задачи, требования и т.д.) в **плоскую карточку**, пригодную для визуализации в системах управления задачами (Jira, Trello, Notion и др.). +Он разбирает входной файл, выделяет ключевые элементы (название, описание, критерии приёмки, сроки) и генерирует готовую Markdown‑карточку. -| Файл | Что делает | -|------|------------| -| `extract_text.py` | Извлекает текст из PDF‑файла (или другого источника) и сохраняет его в `.txt`. | -| `flatten_card.py` | Читает сырой текст, разбивает его на логические блоки (описание, условия, примеры), форматирует и выводит «плоскую карточку» в консоль или в файл. | +> **Важно** – проект написан на Python 3.10+ и использует только стандартную библиотеку и небольшие сторонние пакеты для парсинга Markdown. --- @@ -17,92 +14,121 @@ python -m venv .venv source .venv/bin/activate # Windows: .\.venv\Scripts\activate -# Установите зависимости из requirements.txt +# Установите зависимости из файла requirements.txt pip install -r requirements.txt ``` `requirements.txt` содержит: ```text -PyPDF2==3.0.1 -python-docx==0.8.11 # если понадобится работа с DOCX +markdown==3.4.1 +rich==13.7.0 # для красивого вывода в консоли (необязательно) ``` --- -## 🚀 Запуск файлов +## 📁 Структура проекта -### 1️⃣ Извлечение текста из PDF +| Файл | Описание | +|------|----------| +| `raw_to_card.py` | Главный скрипт, который читает сырой текст и выводит карточку. | +| `parse_raw_text.py` | Модуль парсинга – выделяет заголовки, списки, блоки кода и т.д. | +| `card_generator.py` | Формирует финальный Markdown‑файл с нужным шаблоном. | +| `tests/` | Юнит‑тесты для каждого модуля. | + +--- + +## 🚀 Запуск + +### 1️⃣ Простой запуск из командной строки ```bash -python extract_text.py --input path/to/assignment.pdf --output assignment.txt +python raw_to_card.py --input task.txt --output card.md ``` -- `--input` – путь к исходному файлу (PDF, DOCX и т.д.). -- `--output` – куда сохранить извлечённый текст. +- **--input** – путь к файлу с сырой задачей (может быть `.txt`, `.md`). +- **--output** – куда сохранить готовую карточку (`.md`). Если опустить, вывод будет в stdout. -### 2️⃣ Форматирование в плоскую карточку +### 2️⃣ Запуск через `make` ```bash -python flatten_card.py --input assignment.txt --output card.txt +make run INPUT=task.txt OUTPUT=card.md ``` -- `--input` – файл с сырым текстом. -- `--output` – путь, где будет сохранена «плоская» карточка. - Если опция не указана, результат выводится в консоль. +### 3️⃣ Тестирование + +```bash +pytest tests/ +``` --- ## 📄 Пример использования -### Исходный PDF (`assignment.pdf`) +**Входной файл (`task.txt`):** -``` -Задание: Написать программу, которая считает сумму двух чисел. -Условие: -- Вводятся два целых числа. -- Вывести их сумму. -Пример: -Ввод: 3 5 -Вывод: 8 +```text +# Разработка API для обработки заказов + +Нужно создать REST‑API, которое будет принимать POST запросы с JSON‑объектом заказа и сохранять его в БД. + +## Требования к функционалу +- Валидация входных данных. +- Ответ 201 при успешном создании. +- Ошибки возвращаются с кодами 400/422. + +## Критерии приёмки +1. API принимает корректный JSON и сохраняет заказ. +2. При некорректном JSON клиент получает 400 со списком ошибок. +3. Тесты покрывают все ветви логики. + +## Сроки +- Дедлайн: **2026‑06‑30**. ``` -### Команды +**Запуск:** ```bash -python extract_text.py --input assignment.pdf --output raw.txt -python flatten_card.py --input raw.txt --output card.txt +python raw_to_card.py --input task.txt --output card.md ``` -### Полученная карточка (`card.txt`) +**Выход (`card.md`):** -``` -Задание: -Написать программу, которая считает сумму двух чисел. +```markdown +# Разработка API для обработки заказов -Условие: -- Вводятся два целых числа. -- Вывести их сумму. +Нужно создать REST‑API, которое будет принимать POST запросы с JSON‑объектом заказа и сохранять его в БД. -Пример: -Ввод: 3 5 -Вывод: 8 +## Требования к функционалу +- Валидация входных данных. +- Ответ 201 при успешном создании. +- Ошибки возвращаются с кодами 400/422. + +## Критерии приёмки +1. API принимает корректный JSON и сохраняет заказ. +2. При некорректном JSON клиент получает 400 со списком ошибок. +3. Тесты покрывают все ветви логики. + +**Сроки:** 2026‑06‑30 ``` --- -## 📚 Что дальше? +## 📚 Документация -* Добавить поддержку Markdown‑форматирования (`--format markdown`). -* Интегрировать с Anki для автоматической импорта карточек. -* Расширить парсер, чтобы корректно обрабатывать таблицы и списки. +- `parse_raw_text.py` – парсинг текста с помощью регулярных выражений и библиотеки `markdown`. +- `card_generator.py` – шаблон карточки, который можно изменить в файле `templates/card_template.md`. + +Для более подробной информации смотрите комментарии внутри файлов. --- -### Контрибьюторы +## 🤝 Вклад -Если хотите помочь – откройте issue или pull request. -Пожалуйста, соблюдайте стиль кода из `PEP8` и добавляйте тесты в папку `tests/`. +Если хотите улучшить проект: +1. Форкните репозиторий. +2. Создайте ветку (`feature/имя-изменения`). +3. Добавьте тесты и отправьте Pull Request. ---