|
@@ -1,3 +1,4 @@
|
|
|
+
|
|
|
class Template():
|
|
|
is_global = (
|
|
|
"доступно ли для хранения в глобальном "
|
|
@@ -13,353 +14,3 @@ class Template():
|
|
|
"(несовместимость) с другим сервисом, предлагается или форсировать "
|
|
|
"изменения везде (если возможно), либо is_global выставляется как false."
|
|
|
)
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-class Permissions(models.Model):
|
|
|
-
|
|
|
- # DATA
|
|
|
- permission_type = models.BigIntegerField(
|
|
|
- help_text="уникальный идентификатор определяющий наличие разрешения из множества в словаре - выданных пользователю/клиенту/аккаунту"
|
|
|
- )
|
|
|
- check_level = models.CharField(
|
|
|
- max_length=10,
|
|
|
- help_text="(check-level из классификатора платформы) - информация об уровне проверки. Проверка может быть проведена как платформой, так и мета-сервисом, так и партнером мета-сервиса, а может быть и никем (просто загружен). Указывается, так как достоверность проверки разная. Экзамен, проверенный только на низком уровне, не принимается во внимание как имеющийся до прохождения более высокоуровневой проверки."
|
|
|
- )
|
|
|
- status = models.CharField(
|
|
|
- max_length=150,
|
|
|
- help_text="статус обработки заявки в системе заявок"
|
|
|
- )
|
|
|
- check_date = models.DateTimeField(
|
|
|
- null=True,
|
|
|
- help_text="timestamp проверки"
|
|
|
- )
|
|
|
- expire_date = models.DateField(
|
|
|
- help_text="Срок окончания действия разрешения"
|
|
|
- )
|
|
|
-
|
|
|
-
|
|
|
- # FK
|
|
|
- ticket_status = models.ForeignKey(
|
|
|
- Ticket,
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- null=True,
|
|
|
- help_text="id заявки, по которой происходит проверка статуса relationship. State меняется только в результате изменений в заявке."
|
|
|
- )
|
|
|
- user_id = models.ForeignKey(
|
|
|
- get_user_model(),
|
|
|
- related_name="user_id_perm",
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- null=True,
|
|
|
- help_text="уникальный идентификатор пользователя/клиента/аккаунта, которым была пройдена проверка и получено разрешение"
|
|
|
- )
|
|
|
- checked_by = models.ForeignKey(
|
|
|
- get_user_model(),
|
|
|
- related_name="checked_by_perm",
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- null=True,
|
|
|
- help_text="userid проверившего"
|
|
|
- )
|
|
|
-
|
|
|
-
|
|
|
-class Provider(models.Model):
|
|
|
-
|
|
|
- # DATA
|
|
|
- type = models.CharField(
|
|
|
- max_length=150,
|
|
|
- help_text="тип поставщика (партнер/ответственное лицо/поставщик услуг). Смысл такой - провайдер это статус пользователя, который, в зависимости от применения, может нести разный смысл и подразумевает под собой какой-то тип действия. Обычные исполнители - это провайдеры услуг (код 3). Ответственные за какое-то имущество, которые сдают его в аренду - это тоже провайдеры (код 2). Ответственные за набор услуг перед метасервисом (фактически - назначенные админы) - это провайдеры-партнеры (код 1)"
|
|
|
- )
|
|
|
- requirements = models.CharField(
|
|
|
- max_length=300,
|
|
|
- help_text="требования для того, чтобы можно было предоставлять услуги любые в этом метасервисе в целом (самые строгие)"
|
|
|
- )
|
|
|
- status = models.CharField(
|
|
|
- max_length=150,
|
|
|
- help_text="статус пользователя в системе относительно прохождения проверок (activity_status) (может быть active только в том случае, если ticket, влияющий на статус - закрыт."
|
|
|
- )
|
|
|
- location_type = models.CharField(
|
|
|
- max_length=300,
|
|
|
- help_text="статическая или динамическая локация оказания услуги. Если статическая, а исполнитель находится существенно за пределами локации - то тогда статус автоматом оффлайн для приема новых заявок."
|
|
|
- )
|
|
|
- default_location = models.CharField(
|
|
|
- max_length=300,
|
|
|
- help_text="локация по умолчанию для объекта."
|
|
|
- )
|
|
|
-
|
|
|
- # FK
|
|
|
- user_id = models.ForeignKey(
|
|
|
- get_user_model(),
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- null=True,
|
|
|
- help_text="уникальный идентификатор конкретного пользователя системы (meta-user), который будет оказывать услугу. Один пользователь может быть провайдером нескольких услуг. Статус провайдера означает, что с данным пользователем может быть установлена связь, как с исполнителем."
|
|
|
- )
|
|
|
- company_id = models.ForeignKey(
|
|
|
- Company,
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- null=True,
|
|
|
- help_text="уникальный идентификатор компании, от лица которой выступает провайдер. Смысл такой - ответственны могут быть только одушевленные лица, компании - не одушевленные. Все услуги предоставляются через компании-партнеры, самозанятые или ИП являются единицами таких компаний."
|
|
|
- )
|
|
|
- ticket_status = models.ForeignKey(
|
|
|
- Ticket,
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- null=True,
|
|
|
- help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю."
|
|
|
- )
|
|
|
- service = models.ForeignKey(
|
|
|
- Service,
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- null=True,
|
|
|
- help_text="id услуги, которую предостовляют"
|
|
|
- )
|
|
|
-
|
|
|
-
|
|
|
-class RatingNeg(models.Model):
|
|
|
-
|
|
|
- # DATA
|
|
|
- count = models.IntegerField(
|
|
|
- help_text="" # Написать описание поля
|
|
|
- )
|
|
|
-
|
|
|
- # FK
|
|
|
- user_who = models.ForeignKey(
|
|
|
- get_user_model(),
|
|
|
- related_name="rating_neg_user_who",
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- help_text="уникальный идентификатор инициатора договорных отношений"
|
|
|
- )
|
|
|
- user_whom = models.ForeignKey(
|
|
|
- get_user_model(),
|
|
|
- related_name="rating_neg_user_whom",
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- help_text=" уникальный идентификатор того с кем связываются"
|
|
|
- )
|
|
|
- servicetype = models.ForeignKey(
|
|
|
- ServiceType,
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- help_text="тип оказываемой услуги по классификатору услуг сервиса"
|
|
|
- )
|
|
|
-
|
|
|
-
|
|
|
-class RatingOk(models.Model):
|
|
|
-
|
|
|
-
|
|
|
- # DATA
|
|
|
- count = models.IntegerField(
|
|
|
- help_text="" # Написать описание поля
|
|
|
- )
|
|
|
-
|
|
|
-
|
|
|
- # FK
|
|
|
- user_who = models.ForeignKey(
|
|
|
- get_user_model(),
|
|
|
- related_name="rating_ok_user_who",
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- help_text="уникальный идентификатор инициатора договорных отношений"
|
|
|
- )
|
|
|
- user_whom = models.ForeignKey(
|
|
|
- get_user_model(),
|
|
|
- related_name="rating_ok_user_whom",
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- help_text=" уникальный идентификатор того с кем связываются"
|
|
|
- )
|
|
|
- servicetype = models.ForeignKey(
|
|
|
- ServiceType,
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- help_text="тип оказываемой услуги по классификатору услуг сервиса"
|
|
|
- )
|
|
|
-
|
|
|
-
|
|
|
-class RatingPos(models.Model):
|
|
|
-
|
|
|
-
|
|
|
- # DATA
|
|
|
- count = models.IntegerField(
|
|
|
- help_text="" # Написать описание поля
|
|
|
- )
|
|
|
-
|
|
|
- # FK
|
|
|
- user_who = models.ForeignKey(
|
|
|
- get_user_model(),
|
|
|
- related_name="rating_pos_user_who",
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- help_text="уникальный идентификатор инициатора договорных отношений"
|
|
|
- )
|
|
|
- user_whom = models.ForeignKey(
|
|
|
- get_user_model(),
|
|
|
- related_name="rating_pos_user_whom",
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- help_text=" уникальный идентификатор того с кем связываются"
|
|
|
- )
|
|
|
- servicetype = models.ForeignKey(
|
|
|
- ServiceType,
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- help_text="тип оказываемой услуги по классификатору услуг сервиса"
|
|
|
- )
|
|
|
-
|
|
|
-
|
|
|
-class Relationship(models.Model):
|
|
|
-
|
|
|
-
|
|
|
- # DATA
|
|
|
- neg_type = models.IntegerField(
|
|
|
- help_text="тип договорных отношений по его уникальному идентификатору"
|
|
|
- )
|
|
|
- requirements = models.CharField(
|
|
|
- max_length=150,
|
|
|
- help_text="код необходимого (самый строгий) для того, чтобы ресурс мог стать активным. Оно вставляется автоматом, в соответствии с профилем метасервиса. Далее, если кому-то из партнеров или пользователей надо строже - применяется более строгий вариант на данную связь."
|
|
|
- )
|
|
|
- status = models.CharField(
|
|
|
- max_length=150,
|
|
|
- help_text="(статус обработки заявки в системе заявок)"
|
|
|
- )
|
|
|
-
|
|
|
- # FK
|
|
|
- user_id_who = models.ForeignKey(
|
|
|
- get_user_model(),
|
|
|
- related_name="user_id_who",
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- help_text="уникальный идентификатор инициатора договорных отношений"
|
|
|
- )
|
|
|
- user_id_whom = models.ForeignKey(
|
|
|
- get_user_model(),
|
|
|
- related_name="user_id_whom",
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- help_text=" уникальный идентификатор того с кем связываются"
|
|
|
- )
|
|
|
- ticket_status = models.ForeignKey(
|
|
|
- Ticket,
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- help_text="id заявки, по которой происходит проверка статуса relationship. State меняется только в результате изменений в заявке."
|
|
|
- )
|
|
|
-
|
|
|
-
|
|
|
-class Resource(models.Model):
|
|
|
-
|
|
|
-
|
|
|
- # DATA
|
|
|
- resoure_type = models.CharField(
|
|
|
- max_length=10,
|
|
|
- help_text="определение типа ресурса по его уникальному идентификатору в соответствии с классификатором"
|
|
|
- )
|
|
|
- requirements = models.CharField(
|
|
|
- max_length=150,
|
|
|
- help_text="код необходимого (самый строгий) для того, чтобы ресурс мог стать активным"
|
|
|
- )
|
|
|
- status = models.CharField(
|
|
|
- max_length=150,
|
|
|
- help_text="статус ресурса в системе относительно прохождения проверок (activity_status) (может быть active только в том случае, если ticket, влияющий на статус - закрыт."
|
|
|
- )
|
|
|
-
|
|
|
- # FK
|
|
|
- ticket_status = models.ForeignKey(
|
|
|
- Ticket,
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю."
|
|
|
- )
|
|
|
- user_id = models.ForeignKey(
|
|
|
- get_user_model(),
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- help_text="уникальный идентификатор ответственного (за состояние, доступность и так далее - то есть для договора) пользователя - идентификатор провайдера, по которому восстанавливается конкретный пользовательский аккаунт"
|
|
|
- )
|
|
|
-
|
|
|
-
|
|
|
-class Service(models.Model):
|
|
|
-
|
|
|
- # DATA
|
|
|
- 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 услуги данного поставщика для данного шаблона услуги"
|
|
|
- )
|
|
|
- company_comission = models.FloatField(
|
|
|
- help_text="Коммисия сервиса"
|
|
|
- )
|
|
|
- requirements = 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="статус обработки заявки в системе заявок. активность на основе системы заяво"
|
|
|
- )
|
|
|
-
|
|
|
- # FK
|
|
|
- ticket_status = models.ForeignKey(
|
|
|
- Ticket,
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю."
|
|
|
- )
|
|
|
- resource_id = models.ForeignKey(
|
|
|
- Resource,
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- blank=True,
|
|
|
- null=True,
|
|
|
- help_text="ответственный за ресурс(не всегда). так как ресурсы сами услугу оказать не могут, а также один ресурс может быть представлен в виде разных услуг, то фактически с точки зрения смысла системы ресурс - это как неодушевленный пользователь. Без провайдера, который с его помощью оказывает услугу - никуда. Поле остается пустым, если сервис не предусматривает использование услуг. Стоит обратить внимание, что это не обязательно ответственный за ресурс. Например, за состояние автомобиля может быть ответственен пользователь (он и указывается в таблице со свойствами ресурса), а услугу доступа или перевозки может оказывать иное лицо."
|
|
|
- )
|
|
|
- servicetype_id = models.ForeignKey(
|
|
|
- ServiceType,
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- help_text="тип оказываемой услуги по классификатору услуг сервиса"
|
|
|
- )
|
|
|
-
|
|
|
-
|
|
|
-class ServiceType(models.Model):
|
|
|
-
|
|
|
- # DATA
|
|
|
- codename = models.CharField(
|
|
|
- max_length=255,
|
|
|
- help_text="латинское наименование услуги в системе"
|
|
|
- )
|
|
|
- requirements = models.CharField(
|
|
|
- max_length=300,
|
|
|
- help_text="код требований на основе вспомогательных таблиц-справочников"
|
|
|
- )
|
|
|
- status = models.CharField(
|
|
|
- max_length=150,
|
|
|
- help_text="активность на основе системы заявок"
|
|
|
- )
|
|
|
- caption = models.CharField(
|
|
|
- max_length=255,
|
|
|
- help_text="наименование услуги для отображения пользователю"
|
|
|
- )
|
|
|
- description = models.TextField(
|
|
|
- blank=True,
|
|
|
- help_text="текстовое описание услуги"
|
|
|
- )
|
|
|
- link_agreement = models.CharField(
|
|
|
- max_length=400,
|
|
|
- help_text="ссылка на договор в вики об оказании услуги данного типа (аренда, перевозка и тп)"
|
|
|
- )
|
|
|
- price_type = models.CharField(
|
|
|
- max_length=150,
|
|
|
- help_text="ценообразование - код допустимых вариантов или код параметров, принимаемых во внимание и способ их учета (по сути хорошо закодировать формулу)"
|
|
|
- )
|
|
|
- company_comission = models.FloatField(
|
|
|
- help_text="Коммисия сервиса"
|
|
|
- )
|
|
|
-
|
|
|
- # FK
|
|
|
- ticket_status = models.ForeignKey(
|
|
|
- Ticket,
|
|
|
- on_delete=models.DO_NOTHING,
|
|
|
- null=True,
|
|
|
- help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю."
|
|
|
- )
|