Гитхаб: https://github.com/mohdjami/Travel
Развернутая ссылка: https://travelplanai.vercel.app/
Видео YT: https://youtu.be/oeioDsKQ4cQ?si=U35aBhen3L3zJApq
На диаграмме выше представлен общий обзор приложения, услуг и решений.
Я использовал Next.js, Supabase, модель Gemini-1.5-flash, Shadcn, Typescript и Tailwind CSS.
Используется Supabase для аутентификации и авторизации пользователей.
Почему Supabase для аутентификации и хранения данных?
Гитхаб
Реквизиты для входа
Здесь мы использовали модель Google Gemini-1.5-flash.
Next.js для создания полнофункционального приложения.
Next.js — отличный выбор благодаря серверному рендерингу, генерации статического сайта и SEO.
После получения пользовательских настроек из формы маршрута на сервер отправляется запрос со всеми данными.
Маршрут затем используется в компонентах для отображения данных. Я также интегрировал карты из буклета.
Gemini-1.5-flash — это усовершенствованная модель искусственного интеллекта, разработанная Google, которая обеспечивает создание маршрута в нашем приложении. Эта модель превосходно справляется с пониманием сложных туристических предпочтений и созданием подробных персонализированных маршрутов. Используя Gemini-1.5-flash, мы можем создавать индивидуальные планы поездок, учитывающие такие факторы, как бюджетные ограничения, личные интересы и продолжительность поездки.
Он предлагает несколько ключевых преимуществ для нашего приложения для составления маршрутов путешествий. Во-первых, создание маршрутов с помощью искусственного интеллекта может обрабатывать огромные объемы данных о пунктах назначения, достопримечательностях и предпочтениях пользователей гораздо быстрее и эффективнее, чем ручные методы. Во-вторых, он позволяет давать высоко персонализированные рекомендации, которые можно адаптировать к уникальным интересам и ограничениям каждого пользователя. Наконец, ИИ может постоянно учиться и улучшать свои предложения на основе отзывов пользователей и тенденций в сфере путешествий, гарантируя, что наше приложение останется актуальным и ценным для путешественников.
Leaflet — это библиотека JavaScript с открытым исходным кодом для интерактивных карт, удобных для мобильных устройств. Чтобы интегрировать карты Leaflet в наше приложение для составления маршрутов путешествий, мы выполнили следующие ключевые шаги:
Включив карты-листовки, я улучшил взаимодействие с пользователем, предоставив визуальный контекст для каждого пункта назначения и действия в сгенерированных маршрутах.
Я также столкнулся с проблемой с листовкой, которая заключалась в том, что компонент карты не загружался на 100%, что приводило к ошибкам и страница не загружалась должным образом. Поэтому я решил эту проблему с помощью этого решения.
Чтобы улучшить взаимодействие с пользователем и управлять использованием API, я внедрил систему, основанную на кредитах. Вот как это работает:
Эта система позволяет нам контролировать затраты на API, предоставляя пользователям гибкость в использовании сервиса.
Панель мониторинга предоставляет пользователям обзор созданных ими маршрутов, оставшихся кредитов и информацию об учетной записи. Ключевые особенности включают в себя:
Раздел «Профиль пользователя и настройки» позволяет пользователям настраивать свой опыт и управлять информацией своей учетной записи. К основным особенностям этого раздела относятся:
Для увеличения времени отклика при генерации Itineray я реализовал систему очередей.
Обработал все некритические задачи с использованием очереди.
Несмотря на то, что после создания маршрутов возникает ошибка, должен быть резервный механизм. В настоящее время, если в базе данных есть какие-либо ошибки при подаче данных, не существует резервного механизма, из-за которого маршрут теряется, и его необходимо исправить.
На данный момент я отключил политики RLS. буду работать над этим
Проблема:
Создание маршрута путешествия занимает много времени.
Он содержит несколько процессов:
Решение:
Тщательно проанализировав маршрут, я могу понять, что вставка пользовательских настроек, вставка ответа и обновление кредитов не являются критическими задачами, а отправка ответа пользователю является основной важной задачей.
Таким образом, я могу выполнять эти некритические задачи асинхронно, используя очередь.
Этот асинхронный подход может значительно сократить время отклика.
Внедрение механизма кэширования может значительно улучшить производительность и время отклика нашего приложения для составления маршрута путешествия. Кэшируя часто используемые данные, такие как популярные направления или общие предпочтения пользователей, мы можем снизить нагрузку на наши серверы и быстрее предоставлять пользователям результаты. Это может быть особенно полезно для постоянных пользователей или для отображения первоначальных рекомендаций во время создания более персонализированных результатов.
Я сделаю это для информационной панели, я буду кэшировать недавно посещенные маршруты путешествий, что уменьшит количество запросов к базе данных, что в конечном итоге сделает приложение быстрее.
Докеризовано приложение для простого развертывания в AWS Elastic Container Service, что является лучшим подходом для автоматического масштабирования.
В настоящее время он развернут на Vercel для демонстрационного использования.