28 фев. 2022
Пример ТЗ на разработку сайта

Пример ТЗ на интернет-магазин на CMS OpenCart

Пример неудачного ТЗ от заказчика, который не совсем понимает, что ему, в конечном итоге, надо. В результате заказ не был принят на исполнение. После длительных переговоров, так и остались не решенными вопросы:

  •  CMS (OpenCart или Django)
  • Что это будет сайт на OpenCart или некий микросервис, который бы парсил и переносил данные о товарах из таблички на https://www.airtable.com в базу сайта на OpenCart. 

А вот, собственно, и пример ТЗ от заказчика на разработку интернет-магазина

Привожу дословно, читайте. И думаю, будет познавательно, для тех, кто собирается заказывать сайт на стороне.

Кратко  в двух словах: есть таблица, в которую заполняем каталог товаров. Таблица находится в airtable.com. Таблица удобна для тех, кто ее заполняет, но с точки зрения нормализации она не годиться. Надо это исправить. Для удобства доступов я перенес таблицу в гуглшитс. Она сейчас полная копия по структуре нашей таблицы airtable.

Я вот накидал свою версию даже. Я вообще не разработчик, но мне нравится иногда ковыряться во всяких интересных штуках поэтому не судите строго.

Лист “Исходная версия” —  таблица в которую заполняем каталог товаров 

Лист “Версия Тяп-Ляп” — моя попытка нормализации БД. 

После этого надо сделать интернет магазин на OpenCart, который будет брать каталог из этой БД. Вам не обязательно делать полностью весь проект. Вы можете взять только часть задач. Но сейчас так как мы только начинаем, то первая задача — Отредактировать текущую версию ТЗ, написать более точно этапы. Возможно, что-то убрать/заменить и расписать каждый пункт подробнее — т.е. составить нормальный план, четко продуманный. Для этого вам нужно задать уточняющие вопросы, чтобы вы поняли суть проекта, и сделать предложение по стоимости и срокам. Еще раз первая задача — отредактировать данное ТЗ и расписать подробно задачи по всем пунктам. Т.е. переходить непосредственно сразу к реализации других пунктов пока не надо. В качестве примера я приведу, то как мы расписываем пункты из другого нашего проекта:

Если у вас недостаточно опыта, то ничего страшного просто напишите то, с чем вы точно справитесь. И в таком случае, мы с этого и начнем с вами только немного позже, когда другой более опытный специалист отредактирует наш план и распишет все пункты подробнее. 

Я, насколько мне хватило на то ума, расписал, как я вижу пункты ТЗ. Это сильно поможет вам сориентироваться в целом и понять картину. 

Весь проект разбили на отдельные задачи. Вот они:

  1. Отредактировать текущую версию тз, написать более точно этапы, возможно, что-то убрать/заменить и расписать каждый пункт подробнее. 
  2. Настроить CICD на гитхабе. 
  3. Написать тесты
  4. Нарисовать архитектуру таблиц в 3НФ
  5. Настроить postgre на vps согласно архитектуре
  6. Настроить скрипт — синхронизацию airtable.com и БД по нажатию на “одну кнопку”/одной команды в линуксе. Упаковать его в отдельный докер. 
  7. Настроить админку — упрощенную страничку в браузере для управления переноса БД. Пожелание к ней — лучше на джанго, но если нет то на другом каком либо фреймворке, а также упаковать его в отдельный докер.
  8. Настроить отдельный докер с redis, который выступит в качестве брокера сообщений для общения между БД, скрипта и Админки. Этот пункт не уверен, что надо. Может и без него можно настроить прямую коммуникацию. 
  9. Установить шаблон opencart на сервак без докера.
  10. Настроить шаблон opencart под интернет магазин. Шаблон уже купили. Имеется, но если не понравится, купим другой.
  11. Синхронизировать интернет магазин opencart и БД. Итог — полноценно работающий в браузере интернет магазин с полным каталогом товаров которые мы заполняем в airtable, далее одной кнопкой экспортируем в БД и они уже автоматически появляются в opencart

Т.е. представляю архитектуру такую:

Примеры расписанных пунктов ТЗ:

Нарисовать архитектуру таблиц в 3НФ. (Нормализовать базу данных до 3 формы)

Для повышения производительности и удобства управления базой данных необходимо нормализовать её до 3 формы. Перед этим настроить миграцию базы данных

  1. Провести нормализацию до 1 формы
    • Создать файлы миграции схемы базы данных для приведения к 1 форме
    • Провести миграцию базы данных
  2. Провести нормализацию до 2 формы
    • Создать файлы миграции схемы базы данных для приведения к 2 форме
    • Провести миграцию базы данных
  3. Провести нормализацию до 3 формы
    • Создать файлы миграции схемы базы данных для приведения к 3 форме
    • Провести миграцию базы данных

Настроить ci/cd

Для более удобного процесса разработки и развёртывания необходимо настроить ci/cd для репозитория на гитхабе

  1. Автоматическое развёртывание docker-compose на сервере при пуше в мастер
  2. Прогонка тестов перед деплоем

Написать тесты

Для проверки правильной работоспособности кода необходимо написать тесты ко всем компонентам проекта

  1. Тесты, проверяющие корректность работы сервера django
    • endpoints — проверить корректность страниц и выполнение действий при post запросах
    • database — корректность обработки и создания объектов в базе данных
    • redis — корректность передаваемой информации через redis скрипту
    • websockets — проверить работу websockets
  2. Тесты, проверяющие корректность работы скрипта
    • получение данных из redis
      • запуск/остановка скрипта
      • авторизация пользователя
    • websockets — логирование