Git Product home page Git Product logo

alfatz's Introduction

Задача

Документ с тестовым заданием

Запуск и установка

Все части приложения разделены на сервисы и помещены в Docker-контейнеры. Для разворачивания приложения на на хост системе должен быть установлен Docker (хоть Windows, хоть Linux). Чтобы все развернуть, достаточно набрать в консоле: docker-compose up -d

Приложение будет доступно по адресу: http://localhost:8000

Устройство

Содержимое всех контейнеров собирается из исходных кодов, находящихся в данном репозитарии.

Контейнер sqlserver.

  • Контейнер содержит в себе установленный SQL Server 2017.
  • Пароль sa для БД MyStrong@Passw0rd
  • Сервер будет доступен на хосте по адресу localhost:14330
  • Файлы данных SQL Server лежат в sql/data.
  • После старта, при отсутствии базы данных [TestData], будут выполнены скрипты из sql/scripts/sql.
    • create.sql - создает базу данных
    • init.sql - содержит данные предоставленные в рамках ТЗ
    • step1.sql - содержит процедуру, созданную в рамках первого задания.
    • step2.sql - содержит таблицы и процедуры необходимые для второго задания.
    • step3.sql - содержит индексы, необходимые для оптимизации выолнения запросов.

Контейнер alfaapi.

  • Контейнер содержит собранное ASP.NET Core приложение, выполняюще роль API-сервера
  • Исходный код API-сервера расположен в папке alfaapi.

Контейнер alfafront.

  • Контейнер содержит образ nginx сервера.
  • Во время сборки контейнера происходит билд nodejs приложения.
  • Nginx раздает статику фронтэнда, а при отсутствии файла, запрос перенаправит в index.html. Таким образом, можно создать SPA со ссылками без якорей (#) и без SSR.
  • Запросы начинающиеся со /api проксируются на API-сервер.
  • Фронтэнд написан на Vue.js.

Комментарий, касаемо задания

Меня крайне обескуражила фраза в техническом задании:

Реализовать систему распределения ролей

однако дальше:

На стороне приложения можно только включать/выключать роли, получать текущие роли

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

Роль без пользователя я представить не смог, поэтому создал одного. Про авторизацию или страницу для заведения пользователей в ТЗ ничего не сказано, поэтому принял решение считать пользователя авторизованным, в API сервере ID пользователя захардкоден.

Описание API

  • [GET] /api/Role - Получить список доступных ролей
[
	{
		"id": 1,
		"name": "Аналитик",
	},
	...
]
  • [GET] /api/UserRoles - Получить список ролей пользователя
[1,3,...]
  • [PUT] /api/UserRoles - Установить роли для пользователя
[2,3,...]
  • [GET] /api/Report - Получить список возможных отчетов
[
	{
		"id": 1,
		"name": "Популярные",
		"linkName": "popular"
	},
	...
]
  • [GET] /api/GenerateReport/:id - Получить отчет с номером :id
[
	{
		"id": 2,
		"name": "Товар 1",
		"cost": 255.0000,
		"buys": 6
	},
	...
]

alfatz's People

Contributors

dependabot[bot] avatar wendor avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.