Skip to main content

Модуль ритуала начала задачи — помогает студентам преодолеть прокрастинацию через правила «если-то»

Project description

White-sheet-breaker

PyPI version Python 3.10+ License: MIT

CLI-инструмент для преодоления прокрастинации через правила «если-то».

Превращение размытого намерения в конкретное правило «ЕСЛИ [сигнал] → ТО [действие]» и немедленное выполнение микро-шага снижает психологическое сопротивление.


О проекте

White-sheet-breaker помогает преодолеть барьер начала работы. Вместо того чтобы писать код за пользователя (как Copilot), модуль помогает сделать первый шаг: сформулировать правило, создать файл с шаблоном и мягко подтолкнуть к действию, если пользователь завис.

Возможности

  • Формулировка правил «если-то» через интерактивный диалог
  • Библиотека готовых шаблонов правил с редактором
  • Создание и открытие файлов с автоопределением шаблона по расширению
  • Встроенный Pomodoro-таймер с кроссплатформенным звуком
  • Фоновое наблюдение за активностью пользователя
  • Адаптивные меню помощи при бездействии (2 уровня)
  • Параллельная работа таймера и наблюдения
  • Логирование в NDJSON и отправка xAPI-стейтментов в LRS
  • Статистика выполненных ритуалов

Быстрый старт

Требования

  • Python 3.10+
  • pip

Установка

Из PyPI (рекомендуется):

pip install white-sheet-breaker

Из исходного кода:

# Клонировать репозиторий
git clone https://github.com/waqque/white-list-breaker.git
cd white-list-breaker

# Создать виртуальное окружение
python3 -m venv venv

# Активировать
source venv/bin/activate        # macOS/Linux
venv\Scripts\activate           # Windows

# Установить зависимости
pip install -e .

Запуск

# Интерактивный режим
python -m breaker

# Демо-режим (без ввода)
python -m breaker --demo

# Без Pomodoro-таймера
python -m breaker --no-timer

Сценарии работы

Сценарий 1: С Pomodoro-таймером

  1. Пользователь создаёт правило: «ЕСЛИ файл пуст → ТО напишу класс → classes.py»
  2. Создаётся файл classes.py с python-шаблоном
  3. Параллельно запускаются:
    • Pomodoro-таймер (обратный отсчёт)
    • Фоновое наблюдение (отслеживание файла)
  4. При бездействии 1 минута — меню уровня 1, через 3 минуты — уровень 2
  5. При активности >100 символов — «Работа началась» и модуль останавливается
  6. После завершения таймера — наблюдение не останавливается
  7. Логирование в NDJSON + отправка xAPI-стейтмента

Сценарий 2: Без таймера

  1. Пользователь создаёт правило
  2. Создаётся файл
  3. Запускается только фоновое наблюдение
  4. Наблюдение работает до:
    • Активности пользователя (>100 символов) → успех
    • Таймаута (5 минут) → завершение
  5. Логирование + xAPI

Пример использования

$ python -m breaker

[1] Создать правило с нуля

Сигнал: файл пуст
Действие: напишу класс
Режим: Создать файл
Файл: classes.py

ЕСЛИ:  файл пуст
ТО:    напишу класс
ЦЕЛЬ:  classes.py

Подтверждаете? [y/n]: y

Файл создан: classes.py
Запускаю фоновое наблюдение...

Запустить Pomodoro-таймер? [y/n]: y
Сколько минут? (5): 25

Осталось: 00:32 ━━━━╸━━━  47%   ← таймер идёт
[1] Шаблон функции              ← меню помощи появилось
[2] Шаблон класса               ← пользователь выбрал
...
Осталось: 00:26 ━━━━━╸━━  57%   ← таймер продолжает идти!
Шаблон 'class' добавлен в конец файла

Осталось: 00:16 ━━━━━━╺━━  73%
Отлично! Работа началась.

Тестирование

# Все тесты
make test

# С покрытием
python -m pytest tests/ --cov=breaker --cov-report=term-missing -v

# Отдельные группы
make test-core      # schema, tracker, xapi
make test-engine    # executor, templates
make test-ui        # dialog, timer, help_menu, activity_monitor

Статистика

Метрика Значение
Всего тестов 315
Покрытие кода ~88%
Платформы Windows, macOS, Linux, WSL

Команды Makefile

Команда Назначение
make install Установка зависимостей
make install-dev Установка + dev-инструменты
make test Запуск всех тестов
make run-cli Запуск CLI в mock-режиме
make demo Демо-режим без ввода
make lint Проверка стиля (flake8)
make format Форматирование (black)
make logs Последние 50 строк лога
make clean Очистка артефактов

Конфигурация

Переменные окружения (в .env или экспортом):

# LRS (Learning Record Store)
LRS_URL=http://localhost:8080/xAPI
LRS_KEY=your_key
LRS_SECRET=your_secret
LRS_MODE=mock              # или "real"

# Идентификация учащегося
LEARNER_ID=student123
LEARNER_NAME=Иван Иванов
COURSE_ID=course-python-101

Структура проекта

white-list-breaker/
├── src/breaker/
│   ├── core/          # Модели данных, логирование, xAPI
│   ├── engine/        # Исполнение действий, шаблоны
│   ├── storage/       # Хранилище шаблонов правил
│   ├── ui/            # Интерфейс, таймер, наблюдение
│   └── main.py        # Оркестратор
├── tests/             # 315 теста
├── docs/              # Документация
├── logs/              # NDJSON-логи
└── Makefile

Команда

Участник Зона Модули
А Core schema.py, tracker.py, xapi_client.py
Б Engine + Storage executor.py, file_templates.py, templates.py
В UI dialog.py, timer.py, activity_monitor.py, help_menu.py, template_editor.py

Документация

Подробная документация находится в директории docs/:

  • DOMAIN.md — предметная область и психологическая основа
  • SPECIFICATION.md — функциональные и нефункциональные требования
  • ARCHITECTURE.md — архитектура системы и структура проекта
  • IMPLEMENTATION.md — описание реализованной системы

Зависимости

Runtime

rich>=13.0.0
requests>=2.31.0

Development

pytest>=7.4.0
pytest-cov>=4.1.0
flake8>=6.1.0
black>=23.7.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

white_sheet_breaker-0.1.2.tar.gz (60.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

white_sheet_breaker-0.1.2-py3-none-any.whl (43.7 kB view details)

Uploaded Python 3

File details

Details for the file white_sheet_breaker-0.1.2.tar.gz.

File metadata

  • Download URL: white_sheet_breaker-0.1.2.tar.gz
  • Upload date:
  • Size: 60.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for white_sheet_breaker-0.1.2.tar.gz
Algorithm Hash digest
SHA256 bd7200690125e97ae6910489490c550ca720f4d35e56a12079509377f65783e9
MD5 1e4c4adb294d617898f67f97ef287b10
BLAKE2b-256 95883b0aaade295ddf83bbe17fa7acdb22e9858b5b368ba56b0a6558449b8fc2

See more details on using hashes here.

File details

Details for the file white_sheet_breaker-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for white_sheet_breaker-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 dbd4ae70a6e897a9cde2a327f1ef7fa2caa2f95da31ae3640930d6233ce37867
MD5 971baac4f509f03361ba518251ef3f29
BLAKE2b-256 6041abea4480ad8aa96b04dded96ca4bbae08ba116f730634ee97008e504224c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page