Эти требования нужно согласовать до выбора архитектуры: срок истории, порядок, поиск, модель шифрования, SLO, регионы и семантику удаления. Их значения нельзя вывести из слова «мессенджер».
Разделите ETL на обнаружение объектов S3, определение формата, потоковый разбор и запись через соответствующий sink. Повторный запуск не должен дублировать уже обработанные данные.
ACID объединяет атомарность, согласованность, изоляцию и долговечность. Это требования к транзакциям, а не гарантия правильности любой бизнес-логики поверх базы данных.
Уточните фактическое разделение ответственности: аналитик описывал бизнес-правила и критерии, разработчик выбирал реализацию, а порог проверяли на согласованной выборке. Не выдавайте предполагаемую схему за свой опыт.
Разделите ETL на обнаружение объектов, чтение, выбор parser по формату и запись через соответствующий sink. Ведите журнал обработанных версий файлов, чтобы повторный запуск не дублировал результат.
Если текущее поведение считается контрактом, нельзя сразу «исправить» фильтры и вынести чтение из цикла: это может изменить вызовы БД, исключения и результат. Сначала нужны characterization-тесты.
Начните с требований витрины и выделения бизнес-сущностей: товар, вариант, продавец, предложение, категория. Затем объясните таблицы, ключи и связи на реальном проекте, не придумывая их количество.
Нельзя достоверно описать меры конкретной организации без фактов. В ответе разделите правовые основания обработки, путь персональных данных и технические меры при обращении к LLM.
Сначала отделяю известные требования от предположений, уточняю критические неопределённости и согласую небольшой проверяемый результат. Изменения фиксирую вместе с влиянием на сроки и объём.
Расскажите, какие задачи по границам сервисов и тестам выполняли лично, зачем они были нужны и как оценивалось покрытие. Непривлекательная работа тоже показывает инженерную зрелость.
Разделите участие в требованиях, бизнес-логике и архитектуре: где вы принимали решения, где предлагали варианты, а где реализовывали готовое решение. Затем обозначьте, какие задачи хотите брать дальше.
Храните этаж и состояние дверей в объекте лифта, а разбор команд отделите от изменения состояния. Диапазон этажей и начальное положение передавайте параметрами.