Giter VIP home page Giter VIP 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

conqerorior avatar inferno681 avatar thatcoderman avatar vladislavcr avatar

Watchers

 avatar

Forkers

vladislavcr

alfabankhackathon's Issues

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".

Bug with getting PDPs without tasks

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

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

Feature: logging

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

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

Token Lifetime

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

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 и только когда они превысят индекс уже существующего элемента в базе, то начнут создаваться. После этого метод отрабатывает корректно.

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.