| Следующая версия | Предыдущая версия |
| sharixopen:knowledge:scenarios:partner_request [2026/10/28 10:18] – [sharixknowledge] approved package sx_knowledge_api_open | sharixopen:knowledge:scenarios:partner_request [2026/10/31 19:56] (текущий) – [sharixknowledge] approved package sx_knowledge_api_open |
|---|
| "ShariXKnowledgeScenarios", | "ShariXKnowledgeScenarios", |
| "ShariXKnowledgeOpenKnowledgeModulesBackenddbsynce", | "ShariXKnowledgeOpenKnowledgeModulesBackenddbsynce", |
| "ShariXKnowledgeOpenKnowledgeArchitectureModelownership" | "ShariXKnowledgeOpenKnowledgeArchitectureModelownership", |
| | "ShariXKnowledgeHub", |
| | "ShariXKnowledgeNegRequestPendingBPMN", |
| | "ShariXKnowledgeOpenKnowledgeModulesHandlers", |
| | "ShariXKnowledgeOpenKnowledgeDevelopmentAcceptance" |
| | ], |
| | "depends_on": [ |
| | "ShariXKnowledgeOpenKnowledgeModulesBackenddbsynce" |
| ] | ] |
| }, | }, |
| "extensions": { | "extensions": { |
| "taxonomy": { | "taxonomy": { |
| "domain": "procedure", | "domain": "use_cases", |
| "lifecycle": "unspecified", | "lifecycle": "implemented", |
| "parents": [ | "parents": [ |
| "ShariXKnowledgeScenarios" | "ShariXKnowledgeScenarios" |
| ], | ], |
| "terms": [] | "terms": [ |
| | "audience_service_owner", |
| | "audience_administrator", |
| | "audience_support", |
| | "audience_developer", |
| | "audience_ai", |
| | "product_sharix_open", |
| | "material_scenario", |
| | "topic_service_partner_onboarding", |
| | "topic_security_permissions", |
| | "topic_handlers_relationships", |
| | "ticket", |
| | "blockly", |
| | "generated_python", |
| | "bpmn" |
| | ], |
| | "component": "webapp-base, dbsynce, tickets" |
| }, | }, |
| "glossary": [] | "glossary": [], |
| | "editorial_review": { |
| | "date": "2026-10-31", |
| | "scope": "rewrite", |
| | "batch": 5, |
| | "style": "Конкретика, перечисления, видимая и машинная навигация; закрытые детали остаются в intrawiki." |
| | }, |
| | "source_review_20261031": { |
| | "kind": "source_analysis_not_runtime_acceptance", |
| | "sources": [ |
| | { |
| | "repository": "sharix-open-webapp-base", |
| | "commit": "5be0ba7a95ca5869bfbaebbe11c5b9f16f20568d", |
| | "path": "sharix_admin/views/cooperate.py", |
| | "sha256": "5731b603f1bbf00639ee59c29ee8c33a862eb2f8e1fff6114251d778c9d5da44" |
| | }, |
| | { |
| | "repository": "sharix-open-webapp-base", |
| | "commit": "5be0ba7a95ca5869bfbaebbe11c5b9f16f20568d", |
| | "path": "sharix_admin/views/feature_access.py", |
| | "sha256": "abdf34ea69ea091fff359d958ebf183e5879cb3059411d2f81048853da94b0b3" |
| | }, |
| | { |
| | "repository": "sharix-open-webapp-base", |
| | "commit": "5be0ba7a95ca5869bfbaebbe11c5b9f16f20568d", |
| | "path": "sharix_admin/views/base.py", |
| | "sha256": "6348afc41acdbafdea16ab3fc5b099564df885eaf9f095e48674f2b7af3ab442" |
| | }, |
| | { |
| | "repository": "sharix-open-webapp-base", |
| | "commit": "5be0ba7a95ca5869bfbaebbe11c5b9f16f20568d", |
| | "path": "sharix_admin/forms/company.py", |
| | "sha256": "adb9c9a5c9e4c2187b0fed4f2cdc8e8d3756356034e9e9536ccb7a4dabd137b7" |
| | }, |
| | { |
| | "repository": "sharix-open-webapp-base", |
| | "commit": "5be0ba7a95ca5869bfbaebbe11c5b9f16f20568d", |
| | "path": "sharix_admin/forms/role_choices.py", |
| | "sha256": "b3acfb891a5ac71dd75ec0086902955433ebcb21e1d5afba32e098812d221182" |
| | }, |
| | { |
| | "repository": "sharix-open-webapp-base", |
| | "commit": "5be0ba7a95ca5869bfbaebbe11c5b9f16f20568d", |
| | "path": "sharix_admin/forms/legal_entity_validation.py", |
| | "sha256": "d408eb777e875a4e5959fcfd5e4b6478b8c133351a22c610c5d67c87d8aedce2" |
| | }, |
| | { |
| | "repository": "sharix-open-webapp-base", |
| | "commit": "5be0ba7a95ca5869bfbaebbe11c5b9f16f20568d", |
| | "path": "sharix_admin/urls.py", |
| | "sha256": "ad4a527e8b06b167405fc88e0480895b032da4c9f7d0e4c17b573a8c0f23b1fd" |
| | }, |
| | { |
| | "repository": "sharix-open-webapp-base", |
| | "commit": "5be0ba7a95ca5869bfbaebbe11c5b9f16f20568d", |
| | "path": "core/urls.py", |
| | "sha256": "5997b9600b4ef8be878201d83923edc961e881cac2c0245c7486f64d4e35e7e1" |
| | }, |
| | { |
| | "repository": "sharix-open-backend", |
| | "commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", |
| | "path": "models/company.py", |
| | "sha256": "817a170624b0ba0018e124499efa417e892287f19b171ebc1922561005d01f56" |
| | }, |
| | { |
| | "repository": "sharix-open-backend", |
| | "commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", |
| | "path": "lib/partner_requests.py", |
| | "sha256": "72e01fee168a1c43982f65951a8e7bb44def62ad8acd86976f6a95ddb84d3cbd" |
| | }, |
| | { |
| | "repository": "sharix-open-backend", |
| | "commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", |
| | "path": "lib/ticket_gen.py", |
| | "sha256": "7bdf92007916aec7e968a45f142e5f98fffb5dfe9b61ee7fcae3c65c826dfbde" |
| | } |
| | ] |
| | }, |
| | "hierarchy_review": { |
| | "date": "2026-10-31", |
| | "canonical_parent_id": "ShariXKnowledgeScenarios", |
| | "page_url_preserved": true, |
| | "kind": "article_and_navigation" |
| | }, |
| | "classification": { |
| | "schema": "sharix.knowledge.classification.v1", |
| | "products": [ |
| | "sharix_open" |
| | ], |
| | "audiences": [ |
| | "service_owner", |
| | "administrator", |
| | "support", |
| | "developer", |
| | "ai" |
| | ], |
| | "material": "scenario", |
| | "topics": [ |
| | "service/partner_onboarding", |
| | "security/permissions", |
| | "handlers/relationships" |
| | ], |
| | "tag_terms": [ |
| | "audience_service_owner", |
| | "audience_administrator", |
| | "audience_support", |
| | "audience_developer", |
| | "audience_ai", |
| | "product_sharix_open", |
| | "material_scenario", |
| | "topic_service_partner_onboarding", |
| | "topic_security_permissions", |
| | "topic_handlers_relationships", |
| | "ticket", |
| | "blockly", |
| | "generated_python", |
| | "bpmn" |
| | ], |
| | "registry_document": "ShariXKnowledgeClassification", |
| | "state_meaning": "lifecycle относится к описываемому коду, а status к редакции документа; implemented не означает успешный runtime тест" |
| | }, |
| | "classification_review": { |
| | "date": "2026-10-31", |
| | "source": "Содержание текущей страницы и проверенный словарь классификации", |
| | "body_scope": "classification_and_navigation_only" |
| | } |
| }, | }, |
| "content_sha256": "5de65d16830e884c5076189c03b60ee35cb486c788a600d5e33d18d0653bc324", | "content_sha256": "36aec52bc51b5c805491e27ee84c412491bb749ae93317cbd252ea46061fe3d6", |
| "schema": 1 | "schema": 1 |
| } | } |
| ~~NOCACHE~~ | ~~NOCACHE~~ |
| |
| **Область:** ShariX Open. **Назначение:** сценарий регистрации партнёрского кабинета и проверки результата. | **Назначение:** [[sharixopen:knowledge:classification:materials#scenarij_processa|Сценарий процесса]]. **Продукт:** [[sharixopen:knowledge:classification:products#sharix_open|ShariX Open]]. |
| [[sharixopen:knowledge:scenarios:start|Сценарии]] · [[sharixopen:knowledge:modules:backend_dbsynce|Данные сервиса]] | |
| | **Для кого:** [[sharixopen:knowledge:classification:audiences#vladelec_servisa|Владелец сервиса]] · [[sharixopen:knowledge:classification:audiences#administrator|Администратор]] · [[sharixopen:knowledge:classification:audiences#podderzhka|Поддержка]] · [[sharixopen:knowledge:classification:audiences#razrabotchik|Разработчик]] · [[sharixopen:knowledge:classification:audiences#nejroset|Нейросеть]]. |
| | |
| | **Темы:** [[sharixopen:knowledge:classification:topics#podkljuchenie_partnjora|Сервис → Подключение партнёра]] · [[sharixopen:knowledge:classification:topics#polnomochija|Доступ → Полномочия]] · [[sharixopen:knowledge:classification:topics#neg_request|Обработчики → NEG_REQUEST]]. |
| | |
| | |
| | |
| | **Навигация:** [[sharixopen:knowledge:start|База знаний]] → [[sharixopen:knowledge:scenarios:start|Сценарии]] → Заявка партнёра. |
| | |
| | Сценарий описывает регистрацию партнёрского кабинета ShariX Open через CooperateView. Компания, полномочия представителя и договорная связь проходят отдельные проверки. Сообщение об отправке формы не означает завершённой активации всех объектов. |
| | |
| | ===== Где находится вход ===== |
| | * **Маршрут:** sharix_admin:cooperate_request, локальный путь cooperate-request/. |
| | * **Префикс кабинета:** определяется SHARIX_ADMIN_PATH в URL-конфигурации установки; фиксированный адрес для всех установок здесь не задаётся. |
| | * **View:** sharix_admin/views/cooperate.py, класс CooperateView. |
| | * **Форма:** sharix_admin/forms/company.py, CooperateCompanyForm. |
| | * **Общие запросы:** dbsynce/lib/partner_requests.py и dbsynce/lib/ticket_gen.py. |
| | |
| | Для доступа нужны: |
| | |
| | * вход в учётную запись; |
| | * разрешённый режим ALLOW_PARTNER_REQUEST; |
| | * доступ по ключу страницы cooperate_request; |
| | * существующий контекст Metaservice. |
| | |
| | При отсутствии Metaservice показывается предусмотренная страница необходимости настройки. Скрытый пункт меню не является самостоятельной проверкой прав: допуск проверяет серверный слой. |
| | |
| | ===== Что заполняет заявитель ===== |
| | Сначала проверить показанный список уже существующих партнёрских кабинетов. Новый кабинет создают для нужного юридического лица, а не повторяют форму для ремонта прежней заявки. |
| | |
| | Поля компании: |
| | |
| | * legal_name — наименование; |
| | * inn — ИНН; |
| | * kpp — КПП; |
| | * ogrn — ОГРН; |
| | * bank_name — банк; |
| | * bik — БИК; |
| | * rs — расчётный счёт; |
| | * ks — корреспондентский счёт; |
| | * address — адрес; |
| | * tax_method — система налогообложения. |
| | |
| | Проверка реквизитов выполняется серверной формой. Например, ИНН должен содержать 10 или 12 цифр; КПП при указании — 9 цифр, а для ИП с 12-значным ИНН не используется. Это техническая валидация ввода, а не подтверждение проверки самой компании. |
| | |
| | В auto_roles можно выбрать дополнительные роли: |
| | |
| | * PARTNER-SUPERVISOR; |
| | * PARTNER-SUPPORT; |
| | * PARTNER-TECHSUPPORT; |
| | * METASERVICE-PROVIDER. |
| | |
| | Обязательные согласия — accept_partner_agreement и accept_client_agent_agreement. Они относятся к показанным документам; отсутствие клиентской ошибки не заменяет серверной проверки согласий. |
| | |
| | ===== Какие записи создаются ===== |
| | Внутри transaction.atomic код выполняет следующие шаги: |
| | |
| | - Сохраняет Company с repr текущего пользователя и первоначальным статусом deactivated. |
| | - Создаёт ST_REQUEST активации компании и сохраняет ссылку Company.ticket_status. |
| | - Обеспечивает запрос полномочия PARTNER-ADMIN. |
| | - Обеспечивает дополнительные запросы полномочий для выбранных auto_roles. |
| | - Исторический код при METASERVICE-PROVIDER отдельно создавал employee Relationship с NEG_REQUEST; по уточнению владельца ниже этот шаг не является внешним условием допуска и удаляется подготовленной правкой. |
| | - Обеспечивает contract Relationship с собственным NEG_REQUEST. |
| | - Вызывает предусмотренные действия по требованиям для созданных объектов. |
| | |
| | Типы запросов различаются: |
| | |
| | ^ Объект/результат ^ Ticket ^ Что не следует считать завершённым вместе с ним ^ |
| | | Проверка Company | ST_REQUEST активации партнёра | Полномочия и договорное Relationship имеют отдельные запросы. | |
| | | Полномочие пользователя | ACCESS_REQUEST, связанный с Permissions | Членство в группе само по себе не подтверждает активное предметное полномочие. | |
| | | Договорная связь | NEG_REQUEST, связанный с Relationship | Не подменяет ST_REQUEST компании. | |
| | | Связь исполнителя с партнёром | Отдельный NEG_REQUEST при выборе роли исполнителя | Не подменяет ACCESS_REQUEST на METASERVICE-PROVIDER. | |
| | |
| | После блока сохранения код отдельно пытается назначить PARTNER-ADMIN и выбранные роли через assign_role_and_refresh. Ошибка этого шага показывается пользователю; затем форма сообщает об отправке заявки. Поэтому сообщение об успехе нужно читать вместе с возможными ошибками назначения. |
| | |
| | ===== Что уже защищено от повторов, а что нет ===== |
| | Helpers ensure_partner_permission_request и _ensure_relationship_request ищут соответствующее активное состояние или открытый PENDING/ACCEPTED-запрос для того же объекта. Это предотвращает часть повторных связанных запросов. |
| | |
| | Однако form_valid начинает с нового сохранения Company. Из защиты helper не следует идемпотентность всей отправки формы. После обрыва или неопределённого ответа сначала проверяют, создана ли компания и какие запросы уже существуют. Повтор формы может создать ещё одну компанию. |
| | |
| | Для contract Relationship нужен найденный пользователь группы METASERVICE-ADMIN. Его отсутствие вызывает конкретную ошибку подготовки договорной связи; это не решается случайным выбором ID другого пользователя. Реквизиты и остальные необходимые записи проверяют по состоянию установки. |
| |
| ===== Условия доступа ===== | ===== Что проверяет ответственный ===== |
| Заявитель входит в свою учётную запись. Возможность подачи зависит от настройки ''ALLOW_PARTNER_REQUEST'', доступа к странице и наличия контекста метасервиса. Полный адрес определяется префиксом кабинета установки; именованный маршрут — ''sharix_admin:cooperate_request'', локальная часть пути — ''cooperate-request/''. | * Представителя и реквизиты созданной Company. |
| | * Статус Company и связанный ST_REQUEST. |
| | * Каждое Permissions и его ACCESS_REQUEST. |
| | * Contract Relationship и соответствующий NEG_REQUEST. |
| | * Исторический Employee Relationship при выборе роли исполнителя; не считать самостоятельным внешним допуском. |
| | * Требования и результаты их проверки. |
| | * Членство пользователя в нужных группах и обновлённый контекст доступа. |
| | * Доступность нужного кабинета под учётной записью заявителя. |
| |
| ===== Действия заявителя ===== | Рассмотрение заявки компании, решение по полномочию и активация Relationship — разные действия. Текущее ограничение ручной ветви NEG_REQUEST описано в [[sharixopen:knowledge:scenarios:neg_request_pending|PENDING: уведомление и API scope]]. Его нельзя скрывать общим утверждением «все заявки автоматически обрабатываются». |
| Открыть страницу сотрудничества, проверить сведения о уже имеющихся партнёрских кабинетах и заполнить данные другого юридического лица, если новый кабинет действительно необходим. Форма принимает реквизиты компании, систему налогообложения, выбор дополнительных ролей и обязательные согласия с документами. Состав ролей и документов проверяется по текущей форме установки. | |
| |
| Отправить форму и проверить сообщение о результате. При неверном вводе исправить указанные поля и согласия. Отсутствие ошибки в браузере само по себе не подтверждает активацию компании. | ===== Отказ и восстановление ===== |
| | * **Ошибка поля или согласия:** исправить указанный ввод в форме. |
| | * **Недоступна страница:** проверить вход, ALLOW_PARTNER_REQUEST, доступ к странице и Metaservice. |
| | * **Ошибка назначения роли:** проверить уже сохранённые объекты и состояние групп/каталога учётных записей; не начинать с повторной отправки формы. |
| | * **Неизвестен результат отправки:** установить наличие Company и связанных запросов до повторного создания. |
| | * **Запрос существует, но результат не достигнут:** определить конкретный тип, статус и обработчик, а не вручную активировать все сущности сразу. |
| |
| ===== Что создаёт система ===== | Полный браузерный сценарий и реальная выдача ролей на сервере при этой source-проверке не выполнялись. Модули и поля сверены с Git; фактическую конфигурацию проверяют отдельно. |
| После успешной проверки формы система сохраняет Company с текущим заявителем как представителем и первоначально неактивным статусом. Создаёт запрос на проверку и активацию компании, запрос полномочия PARTNER-ADMIN, необходимые дополнительные запросы по выбранным ролям и договорным отношениям, а также предусмотренные требованиями действия. | |
| |
| Сохранение компании и связанных запросов в БД выполняется одной транзакцией. Попытки назначения групп/ролей происходят после неё; при ошибке система выводит сообщение о неудачном назначении. Поэтому сохранённая заявка, членство в группе и активная проверенная компания являются отдельными результатами. Выданная роль не доказывает завершение проверки компании или договорных отношений. | ===== Связанные материалы ===== |
| | * [[sharixopen:knowledge:modules:backend_dbsynce|Общие данные сервиса]]. |
| | * [[sharixopen:knowledge:architecture:model_ownership|Ответственность за модели]]. |
| | * [[sharixopen:knowledge:modules:handlers|Устройство обработчиков]]. |
| | * [[sharixopen:knowledge:development:acceptance|Приёмка и уровни подтверждения]]. |
| |
| ===== Дальнейшая обработка и контроль результата ===== | ===== Исходники, сверенные 31.10.2026 ===== |
| Ответственный пользователь рассматривает запрос компании в предусмотренном списке активации партнёров. Компания, полномочия и договорные отношения имеют собственные связанные запросы: результат одного нельзя автоматически выдавать за успешное завершение остальных. | Проверены опубликованные исходники указанных commits. Это анализ кода, а не подтверждение состояния сервера или выполнения процесса в установленной системе. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-webapp-base/src/commit/5be0ba7a95ca5869bfbaebbe11c5b9f16f20568d/sharix_admin/views/cooperate.py|sharix-open-webapp-base: sharix_admin/views/cooperate.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-webapp-base/src/commit/5be0ba7a95ca5869bfbaebbe11c5b9f16f20568d/sharix_admin/views/feature_access.py|sharix-open-webapp-base: sharix_admin/views/feature_access.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-webapp-base/src/commit/5be0ba7a95ca5869bfbaebbe11c5b9f16f20568d/sharix_admin/views/base.py|sharix-open-webapp-base: sharix_admin/views/base.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-webapp-base/src/commit/5be0ba7a95ca5869bfbaebbe11c5b9f16f20568d/sharix_admin/forms/company.py|sharix-open-webapp-base: sharix_admin/forms/company.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-webapp-base/src/commit/5be0ba7a95ca5869bfbaebbe11c5b9f16f20568d/sharix_admin/forms/role_choices.py|sharix-open-webapp-base: sharix_admin/forms/role_choices.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-webapp-base/src/commit/5be0ba7a95ca5869bfbaebbe11c5b9f16f20568d/sharix_admin/forms/legal_entity_validation.py|sharix-open-webapp-base: sharix_admin/forms/legal_entity_validation.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-webapp-base/src/commit/5be0ba7a95ca5869bfbaebbe11c5b9f16f20568d/sharix_admin/urls.py|sharix-open-webapp-base: sharix_admin/urls.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-webapp-base/src/commit/5be0ba7a95ca5869bfbaebbe11c5b9f16f20568d/core/urls.py|sharix-open-webapp-base: core/urls.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/models/company.py|sharix-open-backend: models/company.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/lib/partner_requests.py|sharix-open-backend: lib/partner_requests.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/lib/ticket_gen.py|sharix-open-backend: lib/ticket_gen.py]]. |
| |
| Для проверки сопоставляют представителя и реквизиты созданной компании, её статус и связанный запрос активации, запросы полномочий/отношений и их текущие результаты. Проверяют доступность кабинета под учётной записью заявителя после обновления контекста доступа. Сообщение «заявка отправлена» означает отправку на рассмотрение, а не завершённую активацию партнёра. | ===== Уточнение владельца: внутренняя связь employee и внешний допуск ===== |
| | **Нормативное уточнение от 31.10.2026, а не сообщение о развёрнутом исправлении.** Employee обозначает внутреннюю связь человека с юридическим лицом. Представитель компании, исполнитель, администратор и другие связанные с ней люди могут иметь такую запись. Эта связь остаётся в ведении юридического лица; Сервис или Платформа не должны превращать её наличие в самостоятельный внешний допуск. |
| |
| ===== Отказы и восстановление ===== | LDAP-роль открывает соответствующий интерфейс для подготовки данных, загрузки документов и заполнения полей. Она добавляется при подаче заявки, до окончательного решения. Разрешение на конкретную операцию проверяется отдельно: нужны действующее разрешение нужного вида, соответствующая компания или область действия, установленное внешнее отношение и остальные требования операции. Роль по отношению к одному Сервису не предоставляет права на любую компанию. |
| Ошибки полей и согласий исправляет заявитель в форме. При ошибке назначения роли ответственный сначала проверяет уже сохранённые объекты и состояние каталога учётных записей. Повторную отправку нельзя использовать как универсальный способ ремонта: из данного описания не следует гарантия устранения дублей. После неопределённого результата отправки сначала проверяют наличие компании и связанных запросов. | |
| |
| Недоступность страницы проверяют по настройке функции, аутентификации, доступу и контексту метасервиса. Скрытый пункт меню не является самостоятельной проверкой полномочий. | Contract обозначает внешнее договорное отношение компании с Сервисом и не заменяет внутренний employee. Участник, не являющийся представителем компании по договору, получает свою область через собственное разрешение; отношение «сам с собой» для этого не требуется. ACCESS_REQUEST и NEG_REQUEST имеют разные предметы и могут идти в разные списки, даже если решения принимает один человек. |
| |
| ===== Ответственные компоненты и актуальность ===== | Запрос роли Сервиса не должен автоматически создавать внешний NEG_REQUEST(employee). Исторические записи сохраняются: это уточнение не разрешает удалять, автоматически активировать или массово восстанавливать отношения. Подготовленная правка API и проверок должна пройти отдельное применение и runtime-приёмку; эта страница сама по себе не подтверждает состояние серверов. |
| Сценарий сверён по исходникам 28.10.2026: webapp-base ''e795cd5'' — [[https://git.sharix-app.org/ShariX_Open/sharix-open-webapp-base/src/e795cd5/sharix_admin/urls.py|маршрут]], [[https://git.sharix-app.org/ShariX_Open/sharix-open-webapp-base/src/e795cd5/sharix_admin/forms/company.py|форма]], [[https://git.sharix-app.org/ShariX_Open/sharix-open-webapp-base/src/e795cd5/sharix_admin/views/cooperate.py|обработка заявки]]; backend ''57b98dc'' — Company и создание связанных запросов. Это source-проверка. Полный браузерный сценарий, реальная выдача ролей и обработка запросов на выбранной установке в этой редакции не подтверждены. | |
| |
| ~~SHARIX_KNOWLEDGE_RELATED~~ | ~~SHARIX_KNOWLEDGE_RELATED~~ |
| |