|
@@ -1,20 +1,48 @@
|
|
-# Generated by Django 4.1.3 on 2023-03-28 16:32
|
|
|
|
|
|
+# Generated by Django 4.1.3 on 2023-03-31 19:43
|
|
|
|
|
|
-from django.conf import settings
|
|
|
|
from django.db import migrations, models
|
|
from django.db import migrations, models
|
|
-import django.db.models.deletion
|
|
|
|
|
|
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
class Migration(migrations.Migration):
|
|
|
|
|
|
initial = True
|
|
initial = True
|
|
|
|
|
|
- dependencies = [
|
|
|
|
- ("tickets", "0002_alter_comment_options_alter_attachment_added_by_and_more"),
|
|
|
|
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
|
|
- ]
|
|
|
|
|
|
+ dependencies = []
|
|
|
|
|
|
operations = [
|
|
operations = [
|
|
|
|
+ migrations.CreateModel(
|
|
|
|
+ name="Client",
|
|
|
|
+ fields=[
|
|
|
|
+ (
|
|
|
|
+ "id",
|
|
|
|
+ models.BigAutoField(
|
|
|
|
+ auto_created=True,
|
|
|
|
+ primary_key=True,
|
|
|
|
+ serialize=False,
|
|
|
|
+ verbose_name="ID",
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ ("requirements", models.CharField(max_length=150)),
|
|
|
|
+ (
|
|
|
|
+ "status",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="активность на основе системы заявок", max_length=150
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "id_metaservice",
|
|
|
|
+ models.BigIntegerField(
|
|
|
|
+ help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false.",
|
|
|
|
+ null=True,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ ("is_global", models.CharField(max_length=1)),
|
|
|
|
+ ("is_visible", models.CharField(max_length=1)),
|
|
|
|
+ ],
|
|
|
|
+ options={
|
|
|
|
+ "db_table": "client",
|
|
|
|
+ },
|
|
|
|
+ ),
|
|
migrations.CreateModel(
|
|
migrations.CreateModel(
|
|
name="Documents",
|
|
name="Documents",
|
|
fields=[
|
|
fields=[
|
|
@@ -82,36 +110,288 @@ class Migration(migrations.Migration):
|
|
max_length=1,
|
|
max_length=1,
|
|
),
|
|
),
|
|
),
|
|
),
|
|
|
|
+ ],
|
|
|
|
+ options={
|
|
|
|
+ "db_table": "documents",
|
|
|
|
+ },
|
|
|
|
+ ),
|
|
|
|
+ migrations.CreateModel(
|
|
|
|
+ name="Orders",
|
|
|
|
+ fields=[
|
|
(
|
|
(
|
|
- "checked_by",
|
|
|
|
- models.ForeignKey(
|
|
|
|
- help_text="userid проверившего",
|
|
|
|
|
|
+ "id",
|
|
|
|
+ models.BigAutoField(
|
|
|
|
+ auto_created=True,
|
|
|
|
+ primary_key=True,
|
|
|
|
+ serialize=False,
|
|
|
|
+ verbose_name="ID",
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ ("state", models.CharField(max_length=150)),
|
|
|
|
+ (
|
|
|
|
+ "id_metaservice",
|
|
|
|
+ models.BigIntegerField(
|
|
|
|
+ help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false.",
|
|
null=True,
|
|
null=True,
|
|
- on_delete=django.db.models.deletion.DO_NOTHING,
|
|
|
|
- related_name="checked_by",
|
|
|
|
- to=settings.AUTH_USER_MODEL,
|
|
|
|
),
|
|
),
|
|
),
|
|
),
|
|
|
|
+ ("time_created", models.DateTimeField(auto_now_add=True)),
|
|
|
|
+ ("time_placed", models.DateTimeField()),
|
|
|
|
+ ("time_start", models.DateTimeField()),
|
|
|
|
+ ("time_finish_predicted", models.DateTimeField()),
|
|
|
|
+ ("time_finish_real", models.DateTimeField(null=True)),
|
|
|
|
+ ("ticket", models.IntegerField()),
|
|
|
|
+ ("predicted_price", models.FloatField()),
|
|
|
|
+ ("real_price", models.FloatField()),
|
|
|
|
+ ("is_global", models.CharField(max_length=1)),
|
|
|
|
+ ("is_visible", models.CharField(max_length=1)),
|
|
|
|
+ ],
|
|
|
|
+ options={
|
|
|
|
+ "db_table": "orders",
|
|
|
|
+ },
|
|
|
|
+ ),
|
|
|
|
+ migrations.CreateModel(
|
|
|
|
+ name="Permissions",
|
|
|
|
+ fields=[
|
|
(
|
|
(
|
|
- "ticket_status",
|
|
|
|
- models.ForeignKey(
|
|
|
|
- help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю.",
|
|
|
|
- on_delete=django.db.models.deletion.DO_NOTHING,
|
|
|
|
- to="tickets.task",
|
|
|
|
|
|
+ "id",
|
|
|
|
+ models.BigAutoField(
|
|
|
|
+ auto_created=True,
|
|
|
|
+ primary_key=True,
|
|
|
|
+ serialize=False,
|
|
|
|
+ verbose_name="ID",
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "check_date",
|
|
|
|
+ models.DateTimeField(help_text="timestamp проверки", null=True),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "id_permissions",
|
|
|
|
+ models.BigIntegerField(
|
|
|
|
+ help_text="уникальный идентификатор определяющий наличие разрешения из множества в словаре - выданных пользователю/клиенту/аккаунту"
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "check_level",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="тип проверки в соответствии с классификатором проверок.",
|
|
|
|
+ max_length=10,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "status",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="статус обработки заявки в системе заявок",
|
|
|
|
+ max_length=150,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "id_metaservice",
|
|
|
|
+ models.BigIntegerField(
|
|
|
|
+ help_text=" уникальный идентификатор мета-сервиса, необходимый для синхронизации данных."
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "is_global",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="доступна ли информация для хранения в глобальном сервисе/нужна синхронизация",
|
|
|
|
+ max_length=1,
|
|
),
|
|
),
|
|
),
|
|
),
|
|
(
|
|
(
|
|
- "user_id",
|
|
|
|
- models.ForeignKey(
|
|
|
|
- help_text="уникальный идентификатор пользователя (конкретного клиентского аккаунта) являющегося владельцем данного документа",
|
|
|
|
- on_delete=django.db.models.deletion.DO_NOTHING,
|
|
|
|
- related_name="user_id",
|
|
|
|
- to=settings.AUTH_USER_MODEL,
|
|
|
|
|
|
+ "is_visible",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="доступна ли информация о наличии разрешения для планирования в цепочке с другими услугами в глобальном сервисе",
|
|
|
|
+ max_length=1,
|
|
),
|
|
),
|
|
),
|
|
),
|
|
],
|
|
],
|
|
options={
|
|
options={
|
|
- "db_table": "documents",
|
|
|
|
|
|
+ "db_table": "permissions",
|
|
|
|
+ },
|
|
|
|
+ ),
|
|
|
|
+ migrations.CreateModel(
|
|
|
|
+ name="Provider",
|
|
|
|
+ fields=[
|
|
|
|
+ (
|
|
|
|
+ "id",
|
|
|
|
+ models.BigAutoField(
|
|
|
|
+ auto_created=True,
|
|
|
|
+ primary_key=True,
|
|
|
|
+ serialize=False,
|
|
|
|
+ verbose_name="ID",
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "type",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="тип поставщика (партнер/ответственное лицо/поставщик услуг). Смысл такой - провайдер это статус пользователя, который, в зависимости от применения, может нести разный смысл и подразумевает под собой какой-то тип действия. Обычные исполнители - это провайдеры услуг (код 3). Ответственные за какое-то имущество, которые сдают его в аренду - это тоже провайдеры (код 2). Ответственные за набор услуг перед метасервисом (фактически - назначенные админы) - это провайдеры-партнеры (код 1)",
|
|
|
|
+ max_length=150,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "id_metaservice",
|
|
|
|
+ models.BigIntegerField(
|
|
|
|
+ help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких мета-сервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер.",
|
|
|
|
+ null=True,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "requirements",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="требования для того, чтобы можно было предоставлять услуги любые в этом метасервисе в целом (самые строгие)",
|
|
|
|
+ max_length=300,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "status",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="статус пользователя в системе относительно прохождения проверок (activity_status) (может быть active только в том случае, если ticket, влияющий на статус - закрыт.",
|
|
|
|
+ max_length=150,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "location_type",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="статическая или динамическая локация оказания услуги. Если статическая, а исполнитель находится существенно за пределами локации - то тогда статус автоматом оффлайн для приема новых заявок.",
|
|
|
|
+ max_length=300,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "default_location",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="локация по умолчанию для объекта.", max_length=300
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "is_global",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="(аккаунт поставщика услуг) – доступен для планирования в цепочке с другими услугами в глобальном сервисе",
|
|
|
|
+ max_length=1,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "is_visible",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="(аккаунт поставщика услуг) – доступен для хранения в глобальном сервисе/необходима синхронизация",
|
|
|
|
+ max_length=1,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ ],
|
|
|
|
+ options={
|
|
|
|
+ "db_table": "provider",
|
|
|
|
+ },
|
|
|
|
+ ),
|
|
|
|
+ migrations.CreateModel(
|
|
|
|
+ name="Relationship",
|
|
|
|
+ fields=[
|
|
|
|
+ (
|
|
|
|
+ "id",
|
|
|
|
+ models.BigAutoField(
|
|
|
|
+ auto_created=True,
|
|
|
|
+ primary_key=True,
|
|
|
|
+ serialize=False,
|
|
|
|
+ verbose_name="ID",
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ ("neg_type", models.IntegerField()),
|
|
|
|
+ (
|
|
|
|
+ "id_metaservice",
|
|
|
|
+ models.BigIntegerField(
|
|
|
|
+ help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false.",
|
|
|
|
+ null=True,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ ("requirements", models.CharField(max_length=150)),
|
|
|
|
+ ("status", models.CharField(max_length=150)),
|
|
|
|
+ ("is_global", models.CharField(max_length=1)),
|
|
|
|
+ ("is_visible", models.CharField(max_length=1)),
|
|
|
|
+ ],
|
|
|
|
+ options={
|
|
|
|
+ "db_table": "relationship",
|
|
|
|
+ },
|
|
|
|
+ ),
|
|
|
|
+ migrations.CreateModel(
|
|
|
|
+ name="ServiceType",
|
|
|
|
+ fields=[
|
|
|
|
+ (
|
|
|
|
+ "id",
|
|
|
|
+ models.BigAutoField(
|
|
|
|
+ auto_created=True,
|
|
|
|
+ primary_key=True,
|
|
|
|
+ serialize=False,
|
|
|
|
+ verbose_name="ID",
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "codename",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="латинское наименование услуги в системе",
|
|
|
|
+ max_length=255,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "caption",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="наименование услуги для отображения пользователю",
|
|
|
|
+ max_length=255,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "description",
|
|
|
|
+ models.TextField(blank=True, help_text="текстовое описание услуги"),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "requirements",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="код требований на основе вспомогательных таблиц-справочников",
|
|
|
|
+ max_length=300,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "price_type",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="ценообразование - код допустимых вариантов или код параметров, принимаемых во внимание и способ их учета (по сути хорошо закодировать формулу)",
|
|
|
|
+ max_length=150,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "status",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="активность на основе системы заявок", max_length=150
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "id_metaservice",
|
|
|
|
+ models.BigIntegerField(
|
|
|
|
+ help_text=" уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких мета-сервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер."
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "link_agreement",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="ссылка на договор в вики об оказании услуги данного типа (аренда, перевозка и тп)",
|
|
|
|
+ max_length=400,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "is_global",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="доступно ли для планирования в цепочке с другими услугами в глобальном сервисе",
|
|
|
|
+ max_length=1,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "is_visible",
|
|
|
|
+ models.CharField(
|
|
|
|
+ help_text="доступно ли для хранения в глобальном сервисе/нужна синхронизация данных",
|
|
|
|
+ max_length=1,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ ],
|
|
|
|
+ options={
|
|
|
|
+ "db_table": "servicetype",
|
|
},
|
|
},
|
|
),
|
|
),
|
|
]
|
|
]
|