Імпорти
Імпорт - це завдання з файлом, власним життєвим циклом і чернетками наприкінці. Імпорт виписки й імпорт чека - різні завдання.
Що таке імпорт
Імпорт - це завдання. Ви передаєте файл, і найперше отримуєте не рядки, а запис: щось, що існує ще до того, як створило бодай щось, на що можна дивитися, поки воно працює, і що залишається на місці після завершення.
У записі зберігається файл, гаманець, до якого ви його прив’язали, і те, як далеко просунулася робота. Якщо щось пішло не так - ще й причина. Нічого не читається, поки ви чекаєте: вивантаження приймається й стає в чергу, робота виконується окремо, а запис оновлюється в міру того, як вона звітує.
Оскільки імпорт живе довше за вивантаження, разом із ним живе й походження даних. Усе, що він створює, посилається на нього, а сам файл прикріплюється до кожного такого рядка - тож транзакція з минулої весни й досі покаже вам виписку, з якої її прочитали.
Два різновиди
Їх два, і це різні завдання, а не два налаштування одного. Імпорт виписки приймає CSV або PDF, експортовані з банку. Імпорт чека приймає фотографію: JPEG, PNG, WebP або HEIC з iPhone.
Який саме буде - вирішує файл, а не меню: .csv або .pdf надсилається як виписка, усе інше - як чек. Далі приймається ще вужчий набір. Чек має бути JPEG, PNG, WebP або HEIC, причому HEIC з iPhone перетворюється на JPEG під час вивантаження; виписка має бути CSV або PDF. Усе інше відхиляється з повідомленням, яке називає потрібний формат.
Обмеження на розмір теж різні. CSV приймається до 5 МБ, а PDF чи зображення чека - до 10 МБ. Розмір перевіряється, коли файл завантажується, і лише тоді: файл, який ви натомість обираєте з бібліотеки, вдруге не перевіряється.
Далі шляхи теж різні. Виписка читається частинами, повідомляє, скільки рядків із загальної кількості вже опрацьовано, і віддає чернетки ще під час роботи. Чек створює одну чернетку, і кількості рядків у нього немає.
Що він створює
Чернетки, а не транзакції. У чернетки є все, що є в транзакції: сума, дата, гаманець, коментар і обрані для неї категорія, бюджет чи джерело доходу. Але вона тримається окремо від ваших даних: не потрапляє до списку транзакцій і не змінює баланс жодного гаманця. Ніщо створене імпортом не стає вашим, доки ви це не опублікуєте - саме про це «Перевірка чернеток від ШІ».
Файл теж зберігається. Він потрапляє до вашої бібліотеки й прикріплюється до кожної транзакції, яку створює імпорт, причому два різновиди поводяться по-різному: скан чека прикріплюється як спільний, а файл виписки - як приватний.
Цей зв’язок надійний, а не випадковий. Видалення імпорту окремо запитує про чернетки, які ще чекають, і окремо - про рядки, які ви вже опублікували; те, що ви залишаєте, відв’язується від імпорту, а не зникає разом із ним.
Власний текст чека
Фотографія чека містить більше, ніж підсумкова сума, яка потрапляє в транзакцію: продавця, кожну позицію, ставки податку, скільки і чим сплачено. Це прочитання зберігається як розшифрування файлу, і ви можете відкрити його на транзакції, до якої прикріплене фото.
Воно належить файлу, а не імпорту. Чек, який ви прикріпили вручну - до рядка з виписки або до транзакції, введеної власноруч, - читається так само: кнопкою Створити на вкладенні. Жодного імпорту не створюється й жодна чернетка не з’являється: єдине, що виникає, - це розшифрування.
Воно створюється на запит, а не щоразу, триває недовго й з’являється саме, коли готове. Якщо зображення не вдається прочитати, поруч із кнопкою Повторити показується причина, а розшифрування, яке ви вже мали, залишається таким, як було, а не втрачається через спробу.
Прочитати можна JPEG, PNG і WebP, фото HEIC перетворюються на JPEG під час вивантаження, а розшифрування бачить лише власник файлу: той, з ким ви ділите бюджет, бачить прикріплену фотографію, але ніколи - ваше її прочитання. Докладно про все це - «Розпізнавання чека».
Його життєвий цикл
Спершу імпорт очікує, потім обробляється й завершується або успішно, або помилкою. Це весь набір. Немає ані стану паузи, ані напівзавершеного стану, в якому можна зависнути.
Поки імпорт виписки обробляється, він повідомляє, скільки рядків із загальної кількості вже прочитано, і це число оновлюється саме. Завдання, яке через кілька хвилин після запуску досі очікує, прийняте, але ще не взяте в роботу: з файлом усе гаразд, робота просто не почалася.
Завершений імпорт усе одно може нести примітку про те, чого він не зміг зробити: вона показується над рядками. Невдалий натомість несе причину - звичайною мовою, з технічним повідомленням під перемикачем, - і на його сторінці видно цю помилку та файл, а не рядки. Чернетки, які встиг створити перерваний запуск, там не перелічуються. Повторна спроба видаляє їх і повертає той самий файл у чергу, зберігаючи все, що ви вже опублікували.