Плановые таблицы:
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! Удачи в разработке!