| name | ingest |
| description | Навичка імпорту та структурування нових даних про активності користувача, створення файлів вхідних матеріалів (raw) та оновлення покажчиків. |
| metadata | {"version":"0.1.0","repository":"https://github.com/BogdanovychA/mental-health"} |
Навичка: Імпорт нових даних (Ingest)
Ця навичка використовується для обробки та імпорту нових записів про активності користувача (з папки inbox/ або безпосередньо з чату) до бази даних.
Робочий процес
Коли користувач надає нові дані про свої активності або просить виконати імпорт, Агент повинен пройти такі кроки:
Крок 1. Виявлення та збір вхідних даних
Агент перевіряє джерела вхідних даних у такому порядку:
- Папка
inbox/: Перевірити наявність нових файлів у каталозі inbox/ (ігноруючи .gitkeep).
- Якщо файли знайдено, прочитати їх вміст за структурою
templates/inbox.md (орієнтир: examples/inbox.md).
- Чат з користувачем: Якщо в
inbox/ порожньо, перевірити, чи не надав користувач список активностей безпосередньо у повідомленні.
- Запит інформації: Якщо ні в
inbox/, ні в чаті немає нових даних, попросити користувача надати їх або зберегти файл у папці inbox/.
Крок 2. Визначення дати та конвертація
- Знайти дату вхідних даних (зазвичай на першому рядку вхідного тексту або файлу).
- Якщо дати немає або її важко визначити: запитати дату у користувача.
- Якщо дата вказана відносно (наприклад, "сьогодні", "вчора"), визначити її на основі поточного локального часу та дати.
- Привести дату до стандартного формату
YYYY-MM-DD (наприклад, "15 липня 2026" або "15.07.2026" перетворити на 2026-07-15).
- Мульти-датингові дані: Якщо вхідна інформація містить дані за декілька дат, Агент повинен розділити її на окремі блоки та обробити кожну дату окремо, створивши на кожну дату окремий файл raw та виконавши оновлення індексу та журналу для кожної дати.
Крок 3. Парсинг та категоризація активностей
- Розділити вхідний текст на окремі рядки активностей.
- Формати балів та розділювачів: Бали можуть бути вказані у різних форматах (наприклад:
+1, -2, плюс 2, мінус три тощо). Розділювачі між активністю та балами також можуть відрізнятися (пробіл, дефіс -, двокрапка : або взагалі бути відсутніми). Агент повинен розпізнавати як цифрові, так і текстові позначення (наприклад, "плюс три" -> +3, "мінус 2" -> -2).
- Запит при неоднозначності: Якщо якісь активності взагалі не мають балів або вхідна інформація містить іншу незрозумілу чи неоднозначну інформацію, Агент зобов'язаний перепитати ці деталі у користувача перед продовженням.
- Ознайомитися з переліком категорій у файлі профілю
data/profile.md (розділ ## Типові категорії активностей).
- Для кожної активності визначити найбільш відповідну категорію (наприклад,
Спорт, Сім'я, Робота, Побут тощо).
- Якщо категорію важко визначити однозначно, підібрати найбільш логічну та узгодити з користувачем. Нову категорію додати в
data/profile.md.
- Обчислити загальний Баланс балів за день (сума всіх позитивних та негативних балів).
Крок 4. Створення та збереження файлу raw
- Згенерувати вміст файлу за шаблоном
templates/raw.md (див. приклад examples/raw.md).
- Перевірити наявність уже імпортованих файлів за цю дату в каталозі
data/raw/YYYY/MM/ (де YYYY — рік, MM — місяць):
- Якщо файлів за цю дату немає, ім'я файлу буде
DD-inbox-1.md (де DD — день).
- Якщо файли вже існують (наприклад,
DD-inbox-1.md), новий файл повинен отримати наступний порядковий суфікс, тобто DD-inbox-2.md і так далі.
- Зберегти файл за шляхом
data/raw/YYYY/MM/DD-inbox-X.md.
- Видалення тимчасового файлу: Якщо дані було зчитано з файлу в
inbox/, після успішного збереження у data/raw/... видалити цей тимчасовий файл із папки inbox/.
Крок 5. Оновлення індексу
- Відкрити головний індекс
data/index.md.
- У розділі
## Вхідні матеріали (Raw) додати новий рядок до таблиці:
| [YYYY/MM/DD-inbox-X](./raw/YYYY/MM/DD-inbox-X.md) | YYYY-MM-DD | +/-M |
- Де
YYYY/MM/DD-inbox-X — це шлях відносно каталогу data/, тобто ./raw/YYYY/MM/DD-inbox-X.md, а +/-M — розрахований баланс балів за цей день.
- Забезпечити хронологічний порядок сортування рядків у таблиці.
Крок 6. Оновлення журналу активності
- Відкрити журнал
data/log.md.
- Додати запис про виконану операцію в кінець файлу (не видаляючи попередній вміст) за структурою з
templates/log.md:
## YYYY-MM-DD ingest | Додано: обробка нових вхідних записів за <День Місяць словом або DD-MM-YYYY>
- Додано джерело: [YYYY/MM/DD-inbox-X](./raw/YYYY/MM/DD-inbox-X.md)
- Оновлено: [index](index.md)
- Де
YYYY-MM-DD у заголовку — це поточна дата виконання операції.