|
@@ -15,12 +15,13 @@ class Company(models.Model):
|
|
|
ks = models.CharField(max_length=50, help_text="Корреспондентский счёт (счёт, открываемый банковской организацией в подразделении самого банка)")
|
|
|
rs = models.CharField(max_length=50, help_text="Расчетный счет")
|
|
|
address = models.CharField(max_length=150, help_text="Юридический адрес")
|
|
|
- requirements = models.CharField(max_length=150, help_text="код необходимого для того, чтобы ресурс мог стать активным")
|
|
|
+ requirements = models.CharField(max_length=150, help_text="код необходимого (самый строгий) для того, чтобы ресурс мог стать активным. Оно вставляется автоматом, в соответствии с профилем метасервиса. Далее, если кому-то из партнеров или пользователей надо строже - применяется более строгий вариант на данную связь.")
|
|
|
status = models.CharField(max_length=150, help_text="статус обработки заявки в системе заявок")
|
|
|
- ticket_status = models.ForeignKey(Task, on_delete=models.DO_NOTHING, help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю.")
|
|
|
- id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false.")
|
|
|
- is_global = models.CharField(max_length=1, help_text="доступны ли документы для хранения в глобальном сервисе/нужна синхронизация")
|
|
|
- is_visible = models.CharField(max_length=1, help_text="доступна ли информация о наличии документов для планирования в цепочке с другими услугами в глобальном сервисе")
|
|
|
+ ticket_status = models.ForeignKey(Task, on_delete=models.DO_NOTHING, help_text="id заявки, по которой происходит проверка статуса relationship. State меняется только в результате изменений в заявке.")
|
|
|
+ id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких мета-сервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер.")
|
|
|
+ is_global = models.CharField(max_length=1, help_text="доступно ли для хранения в глобальном сервисе/нужна синхронизация данных")
|
|
|
+ is_visible = models.CharField(max_length=1, help_text="доступно ли для планирования в цепочке с другими услугами в глобальном сервисе")
|
|
|
+
|
|
|
|
|
|
class Meta:
|
|
|
db_table = "company"
|
|
@@ -34,8 +35,8 @@ class Permissions(models.Model):
|
|
|
|
|
|
check_date = models.DateTimeField(null=True, help_text="timestamp проверки")
|
|
|
id_permissions = models.BigIntegerField(help_text="уникальный идентификатор определяющий наличие разрешения из множества в словаре - выданных пользователю/клиенту/аккаунту")
|
|
|
- check_level = models.CharField(max_length=10, help_text="тип проверки в соответствии с классификатором проверок.")
|
|
|
- checked_by = models.ForeignKey(SharixUser, related_name="checked_by_perm", on_delete=models.DO_NOTHING, null=True, help_text="(check-level из классификатора платформы) - информация об уровне проверки. Проверка может быть проведена как платформой, так и мета-сервисом, так и партнером мета-сервиса, а может быть и никем (просто загружен). Указывается, так как достоверность проверки разная. Экзамен, проверенный только на низком уровне, не принимается во внимание как имеющийся до прохождения более высокоуровневой проверки.")
|
|
|
+ check_level = models.CharField(max_length=10, help_text="(check-level из классификатора платформы) - информация об уровне проверки. Проверка может быть проведена как платформой, так и мета-сервисом, так и партнером мета-сервиса, а может быть и никем (просто загружен). Указывается, так как достоверность проверки разная. Экзамен, проверенный только на низком уровне, не принимается во внимание как имеющийся до прохождения более высокоуровневой проверки.")
|
|
|
+ checked_by = models.ForeignKey(SharixUser, related_name="checked_by_perm", on_delete=models.DO_NOTHING, null=True, help_text="userid проверившего")
|
|
|
user_id = models.ForeignKey(SharixUser, related_name="user_id_perm", on_delete=models.DO_NOTHING, null=True, help_text="уникальный идентификатор пользователя/клиента/аккаунта, которым была пройдена проверка и получено разрешение")
|
|
|
status = models.CharField(max_length=150, help_text="статус обработки заявки в системе заявок")
|
|
|
ticket_status = models.ForeignKey(Task, on_delete=models.DO_NOTHING, null=True, help_text="id заявки, по которой происходит проверка статуса relationship. State меняется только в результате изменений в заявке.")
|
|
@@ -94,14 +95,16 @@ class Resource(models.Model):
|
|
|
"""
|
|
|
Resource/Список ресурсов – автомобили/дома/объекты сервиса
|
|
|
"""
|
|
|
- type_id = models.CharField(max_length=10, help_text="идентификатор ресурса")
|
|
|
- user_id = models.ForeignKey(SharixUser, on_delete=models.DO_NOTHING, help_text="уникальный идентификатор ответственного")
|
|
|
- requirements = models.CharField(max_length=150, help_text="код необходимого для того, чтобы ресурс мог стать активным")
|
|
|
- status = models.CharField(max_length=150, help_text="статус обработки заявки в системе заявок")
|
|
|
+
|
|
|
+ type_id = models.CharField(max_length=10, help_text="определение типа ресурса по его уникальному идентификатору в соответствии с классификатором")
|
|
|
+ user_id = models.ForeignKey(SharixUser, on_delete=models.DO_NOTHING, help_text="уникальный идентификатор ответственного (за состояние, доступность и так далее - то есть для договора) пользователя - идентификатор провайдера, по которому восстанавливается конкретный пользовательский аккаунт")
|
|
|
+ requirements = models.CharField(max_length=150, help_text="код необходимого (самый строгий) для того, чтобы ресурс мог стать активным")
|
|
|
+ status = models.CharField(max_length=150, help_text="статус ресурса в системе относительно прохождения проверок (activity_status) (может быть active только в том случае, если ticket, влияющий на статус - закрыт.")
|
|
|
ticket_status = models.ForeignKey(Task, on_delete=models.DO_NOTHING, help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю.")
|
|
|
- id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false.")
|
|
|
- is_global = models.CharField(max_length=1, help_text="доступны ли документы для хранения в глобальном сервисе/нужна синхронизация")
|
|
|
- is_visible = models.CharField(max_length=1, help_text="доступна ли информация о наличии документов для планирования в цепочке с другими услугами в глобальном сервисе")
|
|
|
+ id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких мета-сервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер.")
|
|
|
+ is_global = models.CharField(max_length=1, help_text="доступны ли данные (по услугам или ресурсам?) для хранения в глобальном сервисе/необходима синхронизация")
|
|
|
+ is_visible = models.CharField(max_length=1, help_text="доступно ли для планирования в цепочке с другими услугами в глобальном сервисе")
|
|
|
+
|
|
|
|
|
|
class Meta:
|
|
|
db_table = "resource"
|
|
@@ -114,16 +117,16 @@ class Service(models.Model):
|
|
|
"""
|
|
|
|
|
|
servicetype_id = models.ForeignKey(ServiceType, on_delete=models.DO_NOTHING, help_text="тип оказываемой услуги по классификатору услуг сервиса")
|
|
|
- id_provider = models.ForeignKey(Provider,on_delete=models.DO_NOTHING, help_text="идентификатор поставщика услуг")
|
|
|
- resource_id = models.ForeignKey(Resource, on_delete=models.DO_NOTHING, null=True ,help_text="ответственный за ресурс(не всегда)")
|
|
|
- requirements = models.CharField(max_length=150, help_text="код необходимого для того, чтобы ресурс мог стать активным")
|
|
|
- id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false.")
|
|
|
- price_alg = models.CharField(max_length=100, help_text="шаблон алгоритма расчета цены для оказываемой услуги")
|
|
|
+ id_provider = models.ForeignKey(Provider,on_delete=models.DO_NOTHING, help_text="уникальный идентификатор поставщика услуг (фактически определяет, какой пользователь будет оказывать услугу)")
|
|
|
+ resource_id = models.ForeignKey(Resource, on_delete=models.DO_NOTHING, null=True ,help_text="ответственный за ресурс(не всегда). так как ресурсы сами услугу оказать не могут, а также один ресурс может быть представлен в виде разных услуг, то фактически с точки зрения смысла системы ресурс - это как неодушевленный пользователь. Без провайдера, который с его помощью оказывает услугу - никуда. Поле остается пустым, если сервис не предусматривает использование услуг. Стоит обратить внимание, что это не обязательно ответственный за ресурс. Например, за состояние автомобиля может быть ответственен пользователь (он и указывается в таблице со свойствами ресурса), а услугу доступа или перевозки может оказывать иное лицо.")
|
|
|
+ requirements = models.CharField(max_length=150, help_text="код необходимого (самый строгий) для того, чтобы ресурс мог стать активным. Оно вставляется автоматом, в соответствии с профилем метасервиса. Далее, если кому-то из партнеров или пользователей надо строже - применяется более строгий вариант на данную связь.")
|
|
|
+ id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких мета-сервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер.")
|
|
|
+ price_alg = models.CharField(max_length=100, help_text="шаблон алгоритма расчета цены для оказываемой услуги (по этой переменной определяется, какую функцию для расчета цены вызывать)")
|
|
|
price_km = models.DecimalField(max_digits=9, decimal_places=2, help_text="значение параметра стоимости 1км данного поставщика для данного шаблона услуги")
|
|
|
price_min = models.DecimalField(max_digits=9, decimal_places=2, help_text="значение параметра стоимости 1мин данного поставщика для данного шаблона услуги")
|
|
|
price_amount = models.DecimalField(max_digits=9, decimal_places=2, help_text="значение параметра стоимости 1 услуги данного поставщика для данного шаблона услуги")
|
|
|
- service_status = models.CharField(max_length=150, help_text="статус спецификации типа услуги")
|
|
|
- status = models.CharField(max_length=150, help_text="статус обработки заявки в системе заявок")
|
|
|
+ service_status = models.CharField(max_length=150, help_text="статус спецификации типа услуги, принимает значения Online, Offline, Preorder with Gap. Online/offline выставляются по проверке параметров и желанию пользователя (например, если пользователь переключает себя online, но по какой-то причине ему такую услугу оказывать запрещено - оно не переключится, то есть надо перед сменой значения этого поля всегда запускать проверку)")
|
|
|
+ status = models.CharField(max_length=150, help_text="статус обработки заявки в системе заявок. активность на основе системы заяво")
|
|
|
ticket_status = models.ForeignKey(Task, on_delete=models.DO_NOTHING, help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю.")
|
|
|
is_global = models.CharField(max_length=1, help_text="доступны ли документы для хранения в глобальном сервисе/нужна синхронизация")
|
|
|
is_visible = models.CharField(max_length=1, help_text="доступна ли информация о наличии документов для планирования в цепочке с другими услугами в глобальном сервисе")
|
|
@@ -162,15 +165,16 @@ class Documents(models.Model):
|
|
|
|
|
|
class Client(models.Model):
|
|
|
"""
|
|
|
- Client - это таблица с клиентами
|
|
|
+ Client - это таблица с клиентами. Клиент/пользователь/аккаунт
|
|
|
+ в системе, который по логике получает услугу.
|
|
|
"""
|
|
|
- user = models.ForeignKey(SharixUser, on_delete=models.DO_NOTHING)
|
|
|
- requirements = models.CharField(max_length=150)
|
|
|
+ user = models.ForeignKey(SharixUser, on_delete=models.DO_NOTHING, help_text="пользователь, которому соответствует роль клиента")
|
|
|
+ requirements = models.CharField(max_length=150, help_text="требования для того, чтобы можно было получать услуги как клиент")
|
|
|
status = models.CharField(max_length=150, help_text="активность на основе системы заявок")
|
|
|
ticket_status = models.ForeignKey(Task, on_delete=models.DO_NOTHING, help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю.")
|
|
|
id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false.")
|
|
|
- is_global = models.CharField(max_length=1, help_text="")
|
|
|
- is_visible = models.CharField(max_length=1, help_text="")
|
|
|
+ is_global = models.CharField(max_length=1, help_text="доступно ли для хранения в глобальном сервисе/необходима синхронизация")
|
|
|
+ is_visible = models.CharField(max_length=1, help_text="доступно ли для планирования в цепочке с другими услугами в глобальном сервисе")
|
|
|
|
|
|
|
|
|
class Meta:
|
|
@@ -182,23 +186,25 @@ class Orders(models.Model):
|
|
|
Orders - таблица с заказами
|
|
|
"""
|
|
|
|
|
|
- service = models.ForeignKey(Service, on_delete=models.DO_NOTHING)
|
|
|
- service_type = models.ForeignKey(ServiceType, on_delete=models.DO_NOTHING)
|
|
|
- state = models.CharField(max_length=150)
|
|
|
+
|
|
|
+ service = models.ForeignKey(Service, on_delete=models.DO_NOTHING, help_text="спецификатор услуги провайдера, нужен для установления цены (id_service - уникальный идентификатор шаблона услуги, необходим для установления цены и исполнителей.")
|
|
|
+ service_type = models.ForeignKey(ServiceType, on_delete=models.DO_NOTHING, help_text="тип заказа по классификатору услу")
|
|
|
+ state = models.CharField(max_length=150, help_text="текущий статус заказа из возможных на платформе")
|
|
|
id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false.")
|
|
|
- provider = models.ForeignKey(Provider, on_delete=models.DO_NOTHING)
|
|
|
- receiver = models.ForeignKey(SharixUser, related_name="user_id", on_delete=models.DO_NOTHING, help_text="уникальный идентификатор пользователя (конкретного клиентского аккаунта) являющегося владельцем данного документа")
|
|
|
- client_id = models.ForeignKey(Client, on_delete=models.DO_NOTHING)
|
|
|
- time_created = models.DateTimeField(auto_now_add=True, help_text="")
|
|
|
- time_placed = models.DateTimeField(help_text="")
|
|
|
- time_start = models.DateTimeField(help_text="")
|
|
|
- time_finish_predicted = models.DateTimeField(help_text="")
|
|
|
- time_finish_real = models.DateTimeField(null=True, help_text="")
|
|
|
- ticket = models.IntegerField()
|
|
|
- predicted_price = models.FloatField()
|
|
|
- real_price = models.FloatField()
|
|
|
- is_global = models.CharField(max_length=1, help_text="")
|
|
|
- is_visible = models.CharField(max_length=1, help_text="")
|
|
|
+ provider = models.ForeignKey(Provider, on_delete=models.DO_NOTHING, help_text="уникальный идентификатор поставщика услуги/аккаунта, который оказывает услугу. Если несколько провайдеров собираются мета-сервисом в цепочку, где на уровне связи с клиентом нельзя установить одно ответственное лицо, то указывается вспомогательный мета-провайдер сервиса, и это означает, что мета-сервис несет ответственность перед пользователем за сборку услуги воедино.")
|
|
|
+ receiver = models.ForeignKey(SharixUser, related_name="user_id", on_delete=models.DO_NOTHING, help_text="пользователь/аккаунт, который принимает оказываемые услуги")
|
|
|
+ client_id = models.ForeignKey(Client, on_delete=models.DO_NOTHING, help_text="клиент/аккаунт, который оплачивает все оказанные услуги")
|
|
|
+ time_created = models.DateTimeField(auto_now_add=True, help_text="время создания заказа")
|
|
|
+ time_placed = models.DateTimeField(help_text="время размещения заказа")
|
|
|
+ time_start = models.DateTimeField(help_text="время начала оказания услуги")
|
|
|
+ time_finish_predicted = models.DateTimeField(help_text="предварительное/расчетное время до окончания оказания услуги")
|
|
|
+ time_finish_real = models.DateTimeField(null=True, help_text="фактическое время окончания (точное установленное время)")
|
|
|
+ ticket = models.IntegerField(help_text="")
|
|
|
+ predicted_price = models.FloatField(help_text="расчетная цена с учетом тарифа поставщика услуг")
|
|
|
+ real_price = models.FloatField(help_text="цена с учетом тарифа поставщика услуг по факту оказания услуги")
|
|
|
+ is_global = models.CharField(max_length=1, help_text="доступна ли информация по заказу для хранения в глобальном сервисе/нужна синхронизация данных. Если is_global = false, то и is_visible для заказа и вглубь по цепочке для всех исполнителей и ресурсов - тоже false.")
|
|
|
+ is_visible = models.CharField(max_length=1, help_text="доступна ли информация по заказу (время, место) для планирования иных цепочек. Если нет, то все действующие исполнители и ресурсы считаются занятыми на неопределенное время, пока не завершится заказ. Если да - то ресурсы могут использоваться для построения цепочек после планируемого времени завершения, с учетом места.")
|
|
|
+
|
|
|
|
|
|
class Meta:
|
|
|
db_table = "orders"
|
|
@@ -209,17 +215,20 @@ class Orders(models.Model):
|
|
|
#hi
|
|
|
class Relationship(models.Model):
|
|
|
"""
|
|
|
- Relationship - таблица с взаимосвязями
|
|
|
+ Relationship - описание связей
|
|
|
+ (желательных - как имеющиеся договорные отношения,
|
|
|
+ и нежелательных - как пожелание любой из сторон)
|
|
|
"""
|
|
|
- user_id_who = models.ForeignKey(SharixUser, related_name="user_id_who", on_delete=models.DO_NOTHING)
|
|
|
- user_id_whom = models.ForeignKey(SharixUser, related_name="user_id_whom", on_delete=models.DO_NOTHING)
|
|
|
- neg_type = models.IntegerField()
|
|
|
- id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false.")
|
|
|
- requirements = models.CharField(max_length=150)
|
|
|
- status = models.CharField(max_length=150)
|
|
|
- ticket_status = models.ForeignKey(Task, on_delete=models.DO_NOTHING, help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю.")
|
|
|
- is_global = models.CharField(max_length=1, help_text="")
|
|
|
- is_visible = models.CharField(max_length=1, help_text="")
|
|
|
+ user_id_who = models.ForeignKey(SharixUser, related_name="user_id_who", on_delete=models.DO_NOTHING, help_text="уникальный идентификатор инициатора договорных отношений")
|
|
|
+ user_id_whom = models.ForeignKey(SharixUser, related_name="user_id_whom", on_delete=models.DO_NOTHING, help_text=" уникальный идентификатор того с кем связываются")
|
|
|
+ neg_type = models.IntegerField(help_text="тип договорных отношений по его уникальному идентификатору")
|
|
|
+ id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких мета-сервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер.")
|
|
|
+ requirements = models.CharField(max_length=150, help_text="код необходимого (самый строгий) для того, чтобы ресурс мог стать активным. Оно вставляется автоматом, в соответствии с профилем метасервиса. Далее, если кому-то из партнеров или пользователей надо строже - применяется более строгий вариант на данную связь.")
|
|
|
+ status = models.CharField(max_length=150, help_text="(статус обработки заявки в системе заявок)")
|
|
|
+ ticket_status = models.ForeignKey(Task, on_delete=models.DO_NOTHING, help_text="id заявки, по которой происходит проверка статуса relationship. State меняется только в результате изменений в заявке.")
|
|
|
+ is_global = models.CharField(max_length=1, help_text="установленный тип договорных отношений между клиентами/пользователями/аккаунтами доступен для хранения в глобальном сервисе/нужна синхронизация")
|
|
|
+ is_visible = models.CharField(max_length=1, help_text="установленный тип договорных отношений между клиентами/пользователями/аккаунтами, доступен для планирования в цепочке с другими услугами в глобальном сервисе")
|
|
|
+
|
|
|
|
|
|
class Meta:
|
|
|
db_table = "relationship"
|