Инструменты пользователя

Инструменты сайта


sharixopen:knowledge:scenarios:neg_request_accepted

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
sharixopen:knowledge:scenarios:neg_request_accepted [2026/10/28 20:01] – [sharixknowledge] approved package sx_knowledge_api_opensharixopen:knowledge:scenarios:neg_request_accepted [2026/10/31 11:25] (текущий) – [sharixknowledge] approved package sx_knowledge_api_open
Строка 21: Строка 21:
             "domain": "business_processes",             "domain": "business_processes",
             "lifecycle": "implemented",             "lifecycle": "implemented",
-            "component": "handlers",+            "component": "handlers_examples, handlers_backend, dbsynce",
             "parents": [             "parents": [
                 "ShariXKnowledgeScenarios"                 "ShariXKnowledgeScenarios"
             ],             ],
             "terms": [             "terms": [
-                "NEG_REQUEST", +                "audience_developer", 
-                "ACCEPTED", +                "audience_support", 
-                "Relationship",+                "audience_reviewer", 
 +                "audience_ai", 
 +                "product_sharix_open", 
 +                "material_scenario", 
 +                "topic_handlers_relationships", 
 +                "topic_security_requirements", 
 +                "neg_request", 
 +                "ticket_accepted", 
 +                "relationship",
                 "requirements",                 "requirements",
-                "BPMN"+                "bpmn", 
 +                "ticket", 
 +                "blockly", 
 +                "generated_python"
             ]             ]
         },         },
Строка 189: Строка 200:
                 "gate": "2eec17eb6408566fbff8097042749a2e9c345fe1ba40a8aaee3354a18988fa27"                 "gate": "2eec17eb6408566fbff8097042749a2e9c345fe1ba40a8aaee3354a18988fa27"
             }             }
 +        },
 +        "classification": {
 +            "schema": "sharix.knowledge.classification.v1",
 +            "products": [
 +                "sharix_open"
 +            ],
 +            "audiences": [
 +                "developer",
 +                "support",
 +                "reviewer",
 +                "ai"
 +            ],
 +            "material": "scenario",
 +            "topics": [
 +                "handlers/relationships",
 +                "security/requirements"
 +            ],
 +            "tag_terms": [
 +                "audience_developer",
 +                "audience_support",
 +                "audience_reviewer",
 +                "audience_ai",
 +                "product_sharix_open",
 +                "material_scenario",
 +                "topic_handlers_relationships",
 +                "topic_security_requirements",
 +                "neg_request",
 +                "ticket_accepted",
 +                "relationship",
 +                "requirements",
 +                "bpmn",
 +                "ticket",
 +                "blockly",
 +                "generated_python"
 +            ],
 +            "registry_document": "ShariXKnowledgeClassification",
 +            "state_meaning": "lifecycle относится к описываемому коду, а status к редакции документа; implemented не означает успешный runtime тест"
 +        },
 +        "classification_review": {
 +            "date": "2026-10-31",
 +            "source": "Содержание текущей страницы и проверенный словарь классификации",
 +            "body_scope": "rewrite"
 +        },
 +        "source_review_20261031": {
 +            "kind": "source_analysis_not_runtime_acceptance",
 +            "evidence_field": "extensions.source_evidence",
 +            "checked_on": "2026-10-31",
 +            "all_original_evidence_hashes_match_fresh_git": true,
 +            "canonical_generation": "Both runnable and generated copies match; no handler executed."
         }         }
     },     },
-    "content_sha256": "a398a139461c8779d75163af1c7e0d3113fe0db5970f1de4bd0d510600c85691",+    "content_sha256": "eef48c5b15663a00e305d472ebe4abbc4da6aed8fbba2d92bced83a66ac8b64f",
     "schema": 1     "schema": 1
 } }
Строка 198: Строка 258:
 ~~NOCACHE~~ ~~NOCACHE~~
  
-**Область:** ShariX Open. **Обработчик:** ''open_neg_request_accepted'', тип ''NEG_REQUEST'' (4), рабочий статус ''ACCEPTED'' (421). Опубликованный Python на 28.10.2026 побайтово совпадает с каноническим renderer его Blockly workspace. Фактическая выбранная версия конкретного сервера проверяется отдельно.+**Назначение:** [[sharixopen:knowledge:classification:materials#scenarij_processa|Сценарий процесса]]. **Продукт:** [[sharixopen:knowledge:classification:products#sharix_open|ShariX Open]]. 
 + 
 +**Для кого:** [[sharixopen:knowledge:classification:audiences#razrabotchik|Разработчик]] · [[sharixopen:knowledge:classification:audiences#podderzhka|Поддержка]] · [[sharixopen:knowledge:classification:audiences#recenzent_i_prijomschik|Рецензент и приёмщик]] · [[sharixopen:knowledge:classification:audiences#nejroset|Нейросеть]]. 
 + 
 +**Темы:** [[sharixopen:knowledge:classification:topics#neg_request|Обработчики → NEG_REQUEST]] · [[sharixopen:knowledge:classification:topics#trebovanija|Доступ → Требования]]. 
 + 
 + 
 + 
 +**Область:** ShariX Open. **Обработчик:** ''open_neg_request_accepted'', тип ''NEG_REQUEST'' (4), рабочий статус ''ACCEPTED'' (421). 31.10.2026 опубликованные исходники повторно получены из Git. Обе Python-копии заново сопоставлены с результатом генерации Blockly; проверены 11 исходников генераторов. Сам handler не исполнялся. Выбранную версию, конфигурацию и внешние подключения сервера проверяют отдельно.
  
 ===== Назначение и границы ===== ===== Назначение и границы =====
 Handler сопровождает уже одобренный запрос на публичную ''dbsynce.Relationship'': проверяет обязательные требования, запрашивает активацию и затем ждёт контрольного срока закрытия Ticket. Он не создаёт отсутствующую связь и не считает ACCEPTED доказательством выполненных requirements. ''NEGREQ_AUTOACCEPT'' здесь не проверяется. Handler сопровождает уже одобренный запрос на публичную ''dbsynce.Relationship'': проверяет обязательные требования, запрашивает активацию и затем ждёт контрольного срока закрытия Ticket. Он не создаёт отсутствующую связь и не считает ACCEPTED доказательством выполненных requirements. ''NEGREQ_AUTOACCEPT'' здесь не проверяется.
  
-Relationship этого сценария — направленная запись с ''user_who'', ''user_whom'', ''neg_type'', необязательной company и ссылкой ''ticket_status''. Это не Permissions, не универсальная выдача LDAP-роли и не отдельная модель Relationship/клиента ShariX Platform. В этой ветви нет permission-specific синхронизации Client/CorpClient из ACCESS_REQUEST.+Relationship этого сценария — направленная запись публичного dbsynce со следующими данными: 
 + 
 +  * ''user_who'' — инициирующая сторона; 
 +  * ''user_whom'' — связанная сторона; 
 +  * ''neg_type'' — тип отношения; 
 +  * ''company'' — контекст компании, если задан; 
 +  * ''ticket_status'' — ссылка на сопровождающий Ticket. 
 + 
 +Это не Permissions и не универсальная выдача LDAP-роли. Отдельные модели взаимоотношений Platform здесь не рассматриваются; permission-specific синхронизация Client/CorpClient из ACCESS_REQUEST в этой ветви не выполняется.
  
 Ключевое отличие от ACCESS_REQUEST/ACCEPTED: **Relationship активируется до ожидания срока закрытия**. Контрольный срок относится к Ticket и не задерживает саму активацию, если requirements и backend gate успешно пройдены. Ключевое отличие от ACCESS_REQUEST/ACCEPTED: **Relationship активируется до ожидания срока закрытия**. Контрольный срок относится к Ticket и не задерживает саму активацию, если requirements и backend gate успешно пройдены.
Строка 811: Строка 887:
 При первоначальном ''ok'' runtime запрашивает ''relationship/'' с ''action=set_status'', ''status=0''. Backend проверяет ''related.relationship.status'', scope и единственность связи, блокирует Ticket/Relationship и снова запускает канонический ''activate_object_if_requirements_met''. Прямой status=0 проходит тот же gate; первоначальный ok не является разрешением обойти повторную оценку. При успехе сохраняются active и связь с Ticket, затем Event операции. При первоначальном ''ok'' runtime запрашивает ''relationship/'' с ''action=set_status'', ''status=0''. Backend проверяет ''related.relationship.status'', scope и единственность связи, блокирует Ticket/Relationship и снова запускает канонический ''activate_object_if_requirements_met''. Прямой status=0 проходит тот же gate; первоначальный ok не является разрешением обойти повторную оценку. При успехе сохраняются active и связь с Ticket, затем Event операции.
  
-Активация, уведомления и CLOSED — раздельные операции. Уже active Relationship не откатывается из-за ошибки последующего закрытия Ticket. Если существующая active Relationship позднее имеет невыполненные requirements, текущий handler сам её не деактивирует: он остаётся в ветви ожидания; текст уведомления не заменяет чтение сохранённого статуса.+У этого процесса три самостоятельных результата: 
 + 
 +  * активация Relationship; 
 +  * доставка уведомлений; 
 +  * перевод Ticket в CLOSED. 
 + 
 +Ошибка последующего закрытия Ticket не откатывает уже active Relationship. Если требования позднее не выполнены, текущий handler сам не деактивирует связь: он остаётся в ветви ожидания. Состояние нужно читать в сохранённой Relationship, а не выводить из текста уведомления.
  
 ===== Контрольный срок и внешний цикл требований (BPMN) ===== ===== Контрольный срок и внешний цикл требований (BPMN) =====
Строка 1038: Строка 1120:
 </sharix-bpmn> </sharix-bpmn>
  
-Для закрытия используется **''NEG_REQUEST_DECLINED_CLEANUP_GRACE_DAYS'' даже в ACCEPTED**. Это точное имя текущей реализации, несмотря на слово DECLINED. Возраст сравнивается с ''Ticket.updated_at''; минимум настройки — 0 дней. Deadline — ''updated_at + grace_days'', следующий defer — минимум deadline и ''now + DEFERRED_TICKET_RECHECK_SECONDS''. Локальная причина и строка журнала — ''neg_request_close_grace''.+Для контрольного срока используются: 
 + 
 +  * **NEG_REQUEST_DECLINED_CLEANUP_GRACE_DAYS** — точное имя настройки даже в ACCEPTED; слово DECLINED не меняет её фактическое использование; 
 +  * ''Ticket.updated_at'' — начало отсчёта; 
 +  * ''updated_at + grace_days'' — конечная граница, минимум настройки 0 дней; 
 +  * минимум этой границы и ''now + DEFERRED_TICKET_RECHECK_SECONDS'' — следующий локальный defer; 
 +  * ''neg_request_close_grace'' — локальная причина и строка журнала.
  
 До истечения grace Relationship уже может быть active, а Ticket оставаться ACCEPTED. При каждом повторном проходе Python снова выполняет поиск, проверку requirements и запрос активации прежде, чем дойти до проверки срока. Здесь нет marker «активировать только один раз», аналогичного completed у профильных ST_REQUEST. Нельзя считать повторный Event новой заявкой на взаимоотношение. До истечения grace Relationship уже может быть active, а Ticket оставаться ACCEPTED. При каждом повторном проходе Python снова выполняет поиск, проверку requirements и запрос активации прежде, чем дойти до проверки срока. Здесь нет marker «активировать только один раз», аналогичного completed у профильных ST_REQUEST. Нельзя считать повторный Event новой заявкой на взаимоотношение.
Строка 1064: Строка 1152:
 Defer хранится в памяти и освобождает worker. При рестарте runtime заново получает актуальный снимок. Ошибку scoped списка нельзя считать подтверждённой пустой очередью. Defer хранится в памяти и освобождает worker. При рестарте runtime заново получает актуальный снимок. Ошибку scoped списка нельзя считать подтверждённой пустой очередью.
  
-При диагностике различайте одобрение Ticket, фактическую Relationship и её направление/тип, результат requirements, ответ активации, актуальный updated_at и отдельное CLOSED. Active при ACCEPTED до контрольного срока может быть штатным состоянием. В текущем lifecycle из ACCEPTED доступны DECLINED или CLOSED при соответствующих правах; одно изменение статуса Ticket не заменяет доменное действие над Relationship.+При диагностике записать отдельно: 
 + 
 +  * одобрение и текущий статус Ticket; 
 +  * фактическую Relationship, её направление и тип; 
 +  * результат requirements; 
 +  * ответ операции активации; 
 +  * актуальный updated_at и рассчитанный срок; 
 +  * результат отдельного перехода CLOSED. 
 + 
 +Active при ACCEPTED до контрольного срока может быть штатным. Допустимые переходы ACCEPTED → DECLINED/CLOSED не подменяют доменное действие над Relationship.
  
 ===== Проверенные источники ===== ===== Проверенные источники =====
sharixopen/knowledge/scenarios/neg_request_accepted.1793217678.txt.gz · Последнее изменение: — sx_knowledge_api_open

© 2022 ShariX