Skip to content

Code review #2

@NikitaRudakovFD

Description

@NikitaRudakovFD

Привет! Проверил твою работу, надеюсь ничем не обижу !


⚙️ Технические требования:

  • Наличие отдельного репозитория проекта - 1/1
  • Использование Vite для сборки - 1/1
  • Применение CSS Modules для стилей - 1/1
  • Модульная организация кода - 4/4
  • Использование TypeScript (доп. баллы) - 0/2

Комментарий: Написано на JS

  • Применение Zustand в качестве state-менеджера - 2/2
  • Использование Fetch для API-запросов - 1/1
  • Реализация модальных окон через Portals - 2/2
  • Хранение истории в LocalStorage - 1/1
  • Использование react-router-dom для роутинга - 2/2
  • Настройка ESLint + Prettier - 0/1

Комментарий: Нет Prettier

  • Отсутствие неразрешенных сторонних библиотек (React Compiler и classnames можно добавлять) - 6/6

Итого: 21/24


🎨 ️Соответствие дизайну:

  • Главная страница - 11/12

Комментарий: Не крутится лоудер

  • Хедер с меню - 2/2
  • Страница генерации таблицы - 2/2
  • Страница истории - 8/8

Итого: 23/24


Функциональные требования:

Главная страница:

  • Загрузка таблицы через drag&drop или кнопку - 4/4
  • Отправка таблицы в систему:
    • Реализация запроса с постепенным получением данных - 4/8

Комментарий: При отправке файла весов 100МБ происходит ошибка
Image

  • Данные накапливаются плавно - 2/2
  • Есть обработка ошибок - 2/2
  • Отображение индикатора загрузки - 4/4

Не ставлю минус балл тут, так как лоудер появляется, но не крутится, что является ошибкой дизайна

  • По окончании работы запроса в localStorage складывается запись об истории - 2/2
  • Кнопка очистить - 4/4

Шапка

  • Роутинг работает, страницы переключаются - 4/4

Страница генерации

  • При клике на кнопку отправляется запрос за генерацией и автоматически начинается загрузка файла - 4/4
  • Есть обработка ошибок - 2/2

Страница истории

  • При загрузке страницы данные из localStorage выгружаются и страница инициализируется со списком - 4/4
  • Удаление отдельных записей истории - 2/2
  • При клике на пункт списка открывается модальное окно с хайлайтами - 6/6
  • Полная очистка истории - 2/2
  • Кнопка "сгенерировать больше" редиректит на генерацию - 2/2

Итого: 48/52


Итог: 92

Мнение:

  1. Мне кажется (также это говорили на лекции), что логику обработки стрима нужно выполнять не в Pages, а создать отдельную папку services, в которой будет прописана бизнес логика
  2. Было бы уместно добавить cursor:pointer, чтобы пользователь понимал, что элемент кликабельный
  3. Не стал снижать балл(так как есть обработка в pages), но так нельзя обрабатывать ошибку, так как Promise не перейдет в состояние reject и мы не пробросим ошибку дальше
    Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions