Фриланс 2.0 (Как мы переворачиваем систему найма и реализации задач в современном рынке)

0
Рушан

Рушан

· 5 мин. чтение
Thumbnail

Плановые таблицы:

1.Пользователи

2.Воронки и этапы

3.Задачи и подзадачи

4.Связь пользователей и задач - отвественный

5.Скилы пользователей

6.Теги пользователей

7.Подписки пользователей (или вероятно хранить в самих пользователях)

8.Все логи запросов к бекенду и ответы от сервера, а так же исходящие запросы.

9.Категории задач

10.Статусы пользователей (В работе и др.)

11.Сообщения между пользователями с пушем в телеграм при новом сообщении, если пользователь не в системе.

12.Доступ пользователя к воронкам и задачам.

13.Логи запросов конкретно к определенному аккаунту.


У каждой задачи есть дедлайн - обязательное поле!

Есть системный флаг был ли смещен вперед или назад дедлайн и на сколько дней!

У всех воронок есть системный этап Задача сделана, Задача не сделана!


Грейды заказчиков:

Грейд 1:

Поздравляем, вам предоставлен доступ к платформе и вы можете иметь 2 активных, незакрытых проекта.

После оставления 20 отзывов по исполнителям и минимум 20 созданным задачам, а так же сроки минимум 14 дней жизни в проекте.

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


Грейд 2:

Поздравляем, вам предоставлен доступ к платформе и вы можете иметь 4 активных, незакрытых проекта.

После закрытия 50 тасков и получения средней оценке более 4 баллов.



Грейд 1: Оповещение в телеграм через 24 часа!

Поздравляем, вы получили:

Вам повышен грейд, сейчас вы можете смотреть заказы и их описания, а так же можете себе настроить оповещения о новых заказах.

Вы сможете принимать задачи через 3 дня!

Но ваш грейд будет опущен, если вы будете неактивны за этот период.

Вы можете быть заблокированы по условиям работы нашей площадки.


Грейд 2: Оповещение в телеграм через 36 часов!

Вам повышен грейд, сейчас вы можете откликаться на задачи до 1 штуки в неделю!

Вы сможете принимать больше задач уже через 30дней (env)

Но ваш грейд будет опущен, если вы будете неактивны за этот период.

Вы можете быть заблокированы по условиям работы нашей площадки.


Грейд 3: Оповещение в телеграм через 720 часов!

Вам повышен грейд, сейчас вы можете откликаться на задачи до 1 штуки в день!

Вы можете откликаться до 3 заказов в день через 30 дней.

Но ваш грейд будет опущен, если вы будете неактивны за этот период.

Вы можете быть заблокированы по условиям работы нашей площадки.


Грейд 4: Оповещение в телеграм через 720 часов!

Вам повышен грейд, сейчас вы можете откликаться на задачи до 3 штуки в день!

Вы можете откликаться до 5 заказов в день через 30 дней.

Но ваш грейд будет опущен, если вы будете неактивны за этот период.

Вы можете быть заблокированы по условиям работы нашей площадки.


Если исполнитель заблокировал бота - блокируется на 1 год.

Если исполнитель не отвечает не сообщения - будет заблокирован на 1 год.

Если исполнитель не откликается на задачи - понижается грейд и нужно будет перевосстанавливать грейд.

Если исполнитель не заходит в систему понижается рейтинг.

Если заказчик не создает ни одной новой платной задачи за 7 (env) дней - переходит в платный режим.

Если заказчик долго отвечает на сообщения >10минут то переходит в платный режим.

Если исполнитель откликнулся, но не отвечает в течение 6 часов - блокируется на 6 месяцев с уведомлением о причине.

Если исполнитель откликнулся, но не взял проект в работу - блокируется на 6 месяцев с уведомлением о причине.


Реферальные ссылки для регистраций чтобы зарабатывать на чужих исполнителях в будущем.

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

Настройка уведомлений по тегам и суммам для исполнителей.

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

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

API под все сущности и методы.

WS на все сущности и методы.

Тесты на все сущности в бекенде.

Логи на все события.

Миграции и сидеры на все сущности.

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


Кнопки, заблокировать исполнителя, заблокировать заказчика или сотрудника данной компании.


3 уровня доступа к системе по токен-ссылкам через телеграм-боты:

все воронки. t.me/taskerbot?start=sdfs4dfd423ssdfsdfsd23fsd

1 воронка. t.me/taskerbot?start=dfsdfsdfdsfsdfs234234df

задача. t.me/taskerbot?start=sdfsdfsdfsfsdfsdfwe4234324


Исполнитель нажимает на кнопку откликнуться на задачу.

Перейти к задачам (Открывает одну воронку для исполнителя и может войти во все задачи, где нет исполнителя).

Или открыть систему (Все воронки).

Исполнители видят количество просмотров задачи и количество откликов.

Внимание, вся система работает на вебсокетах и на фронте все в реалтайме.

Рассылки по пользователям и заказчикам.

Кнопки в тг для быстрого перехода.

Пользователь может быть и заказчиком и исполнителем.


Список пользователей доступен в разделе Исполнители, можно отфильтровать по воронке / задаче, откликам / в работе и всем столбцам.

id / имя / аватарка / дата регистрации / задач на исполнителе у меня / задач на исполнителе у других / средняя время закрытия задачи / средний выход из дедлайна / referrer_uri по регистрации / referrer_uri по заходу в таск / utm_source и др. utm-метки / скорость отклика на задачу.


https://kanban-task-management-react-tailwind.vercel.app

https://github.com/Hesam-Dearboy/kanban-task-management-react-tailwind


Done! Congratulations on your new bot. You will find it at t.me/deadlinetaskbot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.


Use this token to access the HTTP API:

6657918462:AAF3OYX8LIbTmcnGlXF9f-Vm2poXODuinfU

Keep your token secure and store it safely, it can be used by anyone to control your bot.


For a description of the Bot API, see this page: https://core.telegram.org/bots/api



Привет! Вот пример миграций для базы данных на FastAPI, которые содержат таблицы "Пользователи", "Задачи", "Отклики", "Подписки" и "Друзья":


1. Создаем миграцию для таблицы "Пользователи":


```python

from alembic import op

import sqlalchemy as sa



def upgrade():

  op.create_table(

    'users',

    sa.Column('id', sa.Integer, primary_key=True),

    sa.Column('name', sa.String(255), nullable=False),

    sa.Column('email', sa.String(255), nullable=False),

    sa.Column('password', sa.String(255), nullable=False),

    sa.Column('role', sa.String(50), nullable=False),

    sa.Column('blocked', sa.Boolean, default=False),

  )



def downgrade():

  op.drop_table('users')

```


2. Создаем миграцию для таблицы "Задачи":


```python

from alembic import op

import sqlalchemy as sa



def upgrade():

  op.create_table(

    'tasks',

    sa.Column('id', sa.Integer, primary_key=True),

    sa.Column('title', sa.String(255), nullable=False),

    sa.Column('description', sa.Text, nullable=False),

    sa.Column('status', sa.String(50), nullable=False),

    sa.Column('deadline', sa.DateTime, nullable=False),

    sa.Column('amount', sa.Float, nullable=False),

    sa.Column('customer_id', sa.Integer, sa.ForeignKey('users.id'), nullable=False),

  )



def downgrade():

  op.drop_table('tasks')

```


3. Создаем миграцию для таблицы "Отклики":


```python

from alembic import op

import sqlalchemy as sa



def upgrade():

  op.create_table(

    'responses',

    sa.Column('id', sa.Integer, primary_key=True),

    sa.Column('task_id', sa.Integer, sa.ForeignKey('tasks.id'), nullable=False),

    sa.Column('user_id', sa.Integer, sa.ForeignKey('users.id'), nullable=False),

    sa.Column('status', sa.String(50), nullable=False),

  )



def downgrade():

  op.drop_table('responses')

```


4. Создаем миграцию для таблицы "Подписки":


```python

from alembic import op

import sqlalchemy as sa



def upgrade():

  op.create_table(

    'subscriptions',

    sa.Column('id', sa.Integer, primary_key=True),

    sa.Column('user_id', sa.Integer, sa.ForeignKey('users.id'), nullable=False),

    sa.Column('friend_id', sa.Integer, sa.ForeignKey('users.id'), nullable=False),

    sa.Column('status', sa.String(50), nullable=False),

  )



def downgrade():

  op.drop_table('subscriptions')

```


5. Создаем миграцию для таблицы "Друзья":


```python

from alembic import op

import sqlalchemy as sa



def upgrade():

  op.create_table(

    'friends',

    sa.Column('id', sa.Integer, primary_key=True),

    sa.Column('user_id', sa.Integer, sa.ForeignKey('users.id'), nullable=False),

    sa.Column('friend_id', sa.Integer, sa.ForeignKey('users.id'), nullable=False),

    sa.Column('status', sa.String(50), nullable=False),

  )



def downgrade():

  op.drop_table('friends')

```


Теперь, когда у нас есть миграции, мы можем определить методы для получения задач заказчика и откликов по ним, используя фильтры. Вот пример методов в FastAPI:


```python

from fastapi import FastAPI

from sqlalchemy import create_engine

from sqlalchemy.orm import sessionmaker

from models import Task, Response, User

from filters import TaskFilter, ResponseFilter



app = FastAPI()

engine = create_engine('DATABASE_URL')

SessionLocal = sessionmaker(bind=engine)



@app.get('/tasks?{token}')

def get_customer_tasks(customer_id: int, filter: TaskFilter = None):

  db = SessionLocal()

  query = db.query(Task).filter(Task.customer_id == customer_id)

  if filter:

    query = filter.apply(query)

  tasks = query.all()

  return tasks



@app.get('/responses/{task_id}?{token}')

def get_task_responses(task_id: int, filter: ResponseFilter = None):

  db = SessionLocal()

  query = db.query(Response).filter(Response.task_id == task_id)

  if filter:

    query = filter.apply(query)

  responses = query.all()

  return responses

```


Здесь мы определяем два метода: `get_customer_tasks` для получения задач заказчика с использованием фильтра `TaskFilter` и `get_task_responses` для получения откликов на задачу с использованием фильтра `ResponseFilter`. Вы можете определить фильтры по своему усмотрению, чтобы применять различные фильтры для задач и откликов.


Не забудьте заменить `DATABASE_URL` на ваш URL базы данных в переменной `engine`.


Надеюсь, это поможет вам разработать фриланс платформу на базе Телеграм с использованием FastAPI! Удачи в разработке!


Рушан

Про Рушан

Краткое описание
Посмотреть профиль
Copyright © 2026 . Все права защищены.