Загрузка данных


Вот полный текст из файла **IMG_20260614_233203_809.jpg** один в один, без изменений:
### Курсовой проект: «Терминальный планировщик задач»
#### 1. Общее описание
**Цель проекта:** разработать консольное приложение (CLI) на JavaScript — терминальный планировщик задач с возможностью управления списком дел через командную строку.
**Основные функции:**
 * добавление новых задач с указанием параметров;
 * просмотр списка задач (с фильтрацией и сортировкой);
 * редактирование существующих задач;
 * удаление задач;
 * сохранение данных в JSON-файле для долговременного хранения;
 * загрузка данных из файла при запуске программы.
#### 2. Технические требования
**Язык и среда:** JavaScript (Node.js).
**Используемые конструкции и типы данных:**
 * **Массивы** — для хранения списка задач.
 * **Объекты** — для представления отдельной задачи со свойствами:
   * id (уникальный идентификатор);
   * title (название задачи);
   * description (описание);
   * category (категория: «Учёба», «Дом» и др.);
   * dueDate (срок выполнения в формате ISO string);
   * isUrgent (флаг срочности, boolean);
   * completed (статус выполнения, boolean).
 * **Строки** — для ввода/вывода данных, формирования сообщений, работы с путями файлов.
**Взаимодействие с пользователем:**
 * консольный интерфейс (CLI) с текстовым меню;
 * ввод команд через readline или inquirer;
 * вывод списка задач в табличном формате (например, с использованием console.table или форматирования вручную).
**Хранение данных:**
 * файл tasks.json в корне проекта;
 * при запуске программа читает файл, при изменениях — перезаписывает.
#### 3. Функциональные требования
 1. **Добавление задачи:**
   * запрос у пользователя: название, описание, категория, срок, срочность;
   * автоматическая генерация id;
   * сохранение в массив и запись в файл.
 2. **Просмотр задач:**
   * вывод всех задач или отфильтрованных по:
     * категории (--category=Учёба);
     * срочности (--urgent);
     * статусу (--completed, --pending);
   * сортировка по сроку выполнения.
 3. **Редактирование задачи:**
   * выбор задачи по id;
   * изменение любых полей (кроме id);
   * обновление в массиве и запись в файл.
 4. **Удаление задачи:**
   * ввод id задачи;
   * удаление из массива и файла.
 5. **Сохранение и загрузка:**
   * при запуске: чтение tasks.json, если файл существует;
   * после каждого изменения: перезапись файла.
 6. **Дополнительное:**
   * проверка корректности ввода (например, формат даты);
   * обработка ошибок (отсутствие файла, неверный id и т. п.);
   * приветственное сообщение и инструкция по командам.