CalendarApp — это консольное приложение на C# для управления событиями с поддержкой CRON-выражений. Приложение позволяет создавать, просматривать, удалять и отслеживать события, которые срабатывают по заданному расписанию в формате CRON.
Основная цель проекта — предоставить удобный инструмент для планирования повторяющихся задач с автоматическими уведомлениями. Приложение периодически проверяет активные события и выводит в консоль уведомления, когда наступает время их выполнения согласно CRON-расписанию. Все события сохраняются в JSON-файл (events.json), что обеспечивает сохранность данных между запусками.
Проект демонстрирует практическое применение CRON-выражений в .NET-приложениях, реализует паттерн сервисного слоя, работу с файловым хранилищем и асинхронными операциями. Это учебный проект, который может быть расширен для интеграции с внешними системами уведомлений (email, Telegram, Slack) или использован как основа для более сложных планировщиков задач.
Корневая папка проекта, содержащая все исходные файлы и конфигурацию.
Содержит классы сущностей предметной области.
CalendarEvent.cs— основная сущность "Событие календаря". Определяет свойства события: уникальный идентификатор (Guid), заголовок, описание, CRON-выражение, время последнего срабатывания, дата создания и статус активности. Класс включает методы для валидации и сериализации/десериализации в JSON.
Содержит бизнес-логику и сервисы приложения.
CalendarService.cs— центральный сервис, управляющий событиями. Отвечает за периодическую проверку событий (через таймер), вызов обработчиков при срабатывании событий и предоставление API для работы с событиями (добавление, удаление, получение списка).CronService.cs— сервис для работы с CRON-выражениями. Использует библиотеку NCrontab для парсинга выражений, проверки их валидности, вычисления следующего времени срабатывания и получения описания расписания на человеческом языке.
Содержит логику хранения данных.
EventStorage.cs— класс для работы с файловым хранилищем событий. Обеспечивает загрузку и сохранение списка событий в JSON-файл (events.json), обработку ошибок ввода-вывода и сериализацию/десериализацию данных.
Program.cs— точка входа приложения. Содержит главное меню, обработку пользовательского ввода, инициализацию сервисов и координацию работы всех компонентов.CalendarApp.csproj— файл проекта .NET, определяющий целевую платформу, зависимости (NCrontab) и настройки компиляции.events.json— файл данных, в котором хранятся все события в формате JSON (создаётся автоматически при первом запуске).
-
Событие (CalendarEvent) — основная сущность приложения, представляющая запланированную задачу. Содержит заголовок, описание, CRON-выражение для определения расписания, время последнего срабатывания и статус активности.
-
CRON-выражение — строка из пяти полей (минуты, часы, день месяца, месяц, день недели), определяющая расписание повторения события. Например,
0 9 * * *означает "ежедневно в 9:00 утра". -
NCrontab — сторонняя библиотека .NET для парсинга и вычисления CRON-выражений. Используется в проекте для определения следующего времени срабатывания событий.
-
EventStorage — компонент, отвечающий за сохранение событий в файловой системе. Реализует паттерн репозитория, абстрагируя детали хранения от бизнес-логики.
-
CalendarService — основной сервис приложения, который запускает фоновую проверку событий по таймеру и генерирует уведомления при наступлении времени срабатывания.
-
CronService — сервис-обёртка над NCrontab, предоставляющий удобные методы для работы с CRON-выражениями: валидация, получение следующего времени срабатывания, человеко-читаемое описание.
-
JSON-сериализация — процесс преобразования объектов C# в формат JSON для сохранения в файл и обратного преобразования при загрузке. В проекте используется System.Text.Json.
Разработка приложения ведётся при помощи SourceCraft Code Assistant Agent — AI-агента, специализирующегося на программной инженерии. Агент обладает глубокими знаниями в области языков программирования (включая C#), фреймворков, паттернов проектирования и лучших практик разработки.
SourceCraft Code Assistant Agent помогает в:
- Анализе структуры существующего кода
- Создании и модификации файлов проекта
- Рефакторинге и оптимизации кода
- Написании документации (включая README.md)
- Отладке и решении проблем
Агент работает в режиме 💻 Code, что позволяет ему непосредственно редактировать исходный код, выполнять команды в терминале, читать и записывать файлы, а также использовать другие инструменты для эффективного выполнения задач разработки.
В проекте используется система правил и скиллов для управления процессом разработки AI-агентом. Все правила и скиллы находятся в директории .codeassistant/.
Правила определяют ограничения и требования к изменениям кода, обеспечивая сохранение критической логики и согласованность проекта.
-
logic_protection.yaml— защита критических компонентов приложения:- Запрет на изменение логики текстового меню в
Program.cs - Сохранение последовательности инициализации сервисов
- Защита формата консольного вывода
- Защита номеров команд меню и их функций
- Запрет на изменение логики текстового меню в
-
assumption_management.yaml— управление допущениями при реализации:- Обязательное документирование допущений
- Стандартизированный формат представления допущений
- Типы допустимых и запрещённых допущений
- Проверка допущений перед реализацией
- Требования к комментированию кода, связанного с допущениями
-
Примеры сценариев (scenario_*.yaml) — типовые примеры реализации задач с соблюдением правил:
scenario_adding_functionality.yaml— добавление новой функциональности (команда меню для поиска событий)scenario_test_coverage.yaml— покрытие модуля тестами (модульные тесты для EventStorage)scenario_refactoring.yaml— рефакторинг без изменения поведения (улучшение читаемости метода AddEvent)
Скиллы предоставляют инструкции для выполнения конкретных типов задач, стандартизируя подход к разработке.
clarifying_questions.md— руководство по задаванию уточняющих вопросов для сбора необходимой информацииunified_code_style.md— единые стандарты оформления кода для проектаunified_validation.md— стандартизированный подход к валидации данных и обработке ошибок
AI-агент автоматически проверяет применимость скиллов к каждой задаче и загружает соответствующие инструкции. Правила применяются для валидации всех изменений кода, предотвращая нарушение защищённой логики и обеспечивая документирование допущений.
Эта система позволяет поддерживать высокое качество кода, предсказуемость изменений и эффективное взаимодействие между разработчиками и AI-агентом.
Для запуска приложения необходимо:
- Установить .NET Core SDK
- Скачать и распаковать архив с исходным кодом
- Открыть терминал в папке с проектом
- Выполнить команду
dotnet run
Приложение будет запущено и готово к использованию. Работа с приложением производится при попомощи выбора пунктов текстового меню и ввода ответов в терминале.