Giter Site home page Giter Site logo

alfabankhackathon's Introduction

AlfaBankHackathon



Документация к API будет доступна по url-адресу AlfaBankHackathon/SWAGER

Ссылка на zip-архив с некоторыми скриншотами zip

Сервис по развитию сотрудников

  • MVP:

    • Цель: Организация работы по развитию сотрудников IT-департамента в рамках Индивидуального плана развития (ИПР).
    • Размещение: Внутри корпоративного портала Альфа-банка "Alfa People".
  • Функциональные возможности:

    • Создание и управление ИПР.
    • Постановка целей и задач.
    • Планирование сроков выполнения.
    • Отслеживание выполнения задач.
  • Обучение:

    • Отслеживание прогресса обучения.
    • Получение обратной связи.
    • Аналитика по ИПР.
    • Систематизация работы по развитию сотрудников.
  • Преимущества:

    • Индивидуальные планы развития для каждого сотрудника.
    • Отслеживание прогресса развития.
    • Автоматизация рутинных процессов.
  • Целевая аудитория:

    • Сотрудники IT-департамента Альфа-банка.
    • Руководители IT-департамента.

Инструкция по установке

Клонируйте репозиторий и перейдите в него.

[email protected]:ThatCoderMan/AlfaBankHackathon.git

Для установки виртуального окружения с помощью Poetry нужно установить его через pip:

pip install poetry

Для активации poetry нужно прописать:

poetry install

Работа с зависимостями

Обновления зависимостей (при загрузки обновлений репозитория с GitHub):

poetry update

Создайте файл .env, в корневой папке проекта, с переменными окружения.

APP_TITLE=AlfaBankHackathon
DESCRIPTION=AlfaBankHackathon
SECRET=SECRET
DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/postgres

MAIL_USERNAME=your_username
MAIL_PASSWORD=mail_password
[email protected]
MAIL_PORT=465
MAIL_SERVER=smtp

Находясь в корневой папке проекта выполните миграции.

alembic revision --autogenerate -m "Initial migration"
alembic upgrade head

Для запуска сервера используйте данную команду:

uvicorn app.main:app --reload

Запуск проекта через докер

  • Клонируйте репозиторий.
  • Перейдите в папку infra и создайте в ней файл .env с переменными окружения:
    DB_NAME=postgres
    POSTGRES_USER=postgres
    DB_HOST=db
    DB_PORT=5432
    POSTGRES_PASSWORD=password
    CORS_ORIGINS=http://localhost:3000,http://127.0.0.1:3000
    [email protected]
    PGADMIN_DEFAULT_PASSWORD=user_password
    
  • Из папки infra запустите docker-compose-prod.yaml:
    ~$ docker-compose up -d --build
    
  • В контейнере backend выполните миграции:
    ~$ docker-compose exec backend alembic revision --autogenerate -m "Initial migration"
    
    ~$ docker-compose exec backend alembic upgrade head
    

Документация к API будет доступна по url-адресу 127.0.0.1/redoc

Ссылки на используемые библиотеки

alfabankhackathon's People

Contributors

thatcoderman avatar inferno681 avatar conqerorior avatar vladislavcr avatar

Watchers

 avatar

Forkers

vladislavcr

alfabankhackathon's Issues

Feature: logging

Describe the solution you'd like
Добавить logger для отслеживания работы программы.

Bug with task creating to unexisting pdp

Не понятно как ловить ошибку при создании задачи к несуществующему ИПР.

sqlalchemy.exc.IntegrityError: (sqlalchemy.dialects.postgresql.asyncpg.IntegrityError)
 <class 'asyncpg.exceptions.ForeignKeyViolationError'>: 
insert or update on table "task" violates foreign key constraint "task_pdp_id_fkey"
DETAIL:  Key (pdp_id)=(17) is not present in table "pdp".

Task POST 500 Error

DETAIL: Ключ (pdp_id)=(1) отсутствует в таблице "pdp".
[SQL: INSERT INTO task (pdp_id, type_id, status_id, title, description, link, chief_comment, employee_comment, starting_date, deadline) VALUES ($1::INTEGER, $2::INTEGER, $3::INTEGER, $4::VARCHAR, $5::VARCHAR, $6::VARCHAR, $7::VARCHAR, $8::VARCHAR, $9::DATE, $10::DATE) RETURNING task.id]

При создании Task с несуществующим pdp_id выводится ошибка 500 Error: Internal Server Error

Token Lifetime

def get_jwt_strategy() -> JWTStrategy:
return JWTStrategy(secret=settings.secret, lifetime_seconds=3600)

Bug with getting PDPs without tasks

При получении PDP у которого нет Task - вылетает ошибка. Необходимо при получении объекта PDP, если его не существует, ставить статистику total=0, done=0.

Bug with copy Task to Template and Template to Task

При копировании данных из Task в Template в функции create_from_dict в файле app/crud/template.py или наоборот вылезает ошибка.

sqlalchemy.exc.IntegrityError: 
(sqlalchemy.dialects.postgresql.asyncpg.IntegrityError) <class 'asyncpg.exceptions.UniqueViolationError'>: 
duplicate key value violates unique constraint "template_pkey"

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

Bug with endpoint employees

Describe the bug
Дублируются данные о сотруднике в консоли при выводе /employees

To Reproduce

  1. statup server
  2. login by CHIEF (with employees)
  3. get employees by GET api/v1/employees

Expected behavior

[
  {"id": 4, ...},
  {"id": 5, ...}
]

Real behavior

[
  {"id": 4, ...},
  {"id": 4, ...},
  {"id": 4, ...},
  {"id": 4, ...},
  {"id": 5, ...},
  {"id": 5, ...},
  {"id": 5, ...},
  {"id": 5, ...}
]

Additional context
Ошибка в CRUD users. Скорее всего ошибка с join

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.