Журнал изменений
Что нового.
Каждое усовершенствование платформы, как только она появится.
· kamo-internal
Команды участника на карте позиции профиля, сохраненной на маршруте на стороне участника, и команды подсказок водопада (KamoCollab CP01 T24)
Карта Позиции получает Команды под названием должности: фишки для каждого зрителя карта, множественный выбор команд организации для обеспечения безопасности администратор, сохраненный как {teamIds} в PUT **************** (командные пункты). Команды, которые не могут прочитать профиль, не предлагаются Редактирование, поэтому сэйв никогда не заменяет команды, которых никто не видел (CP01-T14-4). Отказ показывает на поле в словаре слова, где они есть. Член На вкладке безопасности указаны имена команд, а команда: источники получают собственный тон.
· kamo-shared-library
Реестр 60-ключевых признаков, групповые дефолты и словарь Docstion (KamoCollab CP03 T4)
Личность TraitKey несет TraitSpec на ключ (семья, тип, диапазон, по умолчанию). Выбор, связанные ключи, группа пользовательского интерфейса, блок, адаптивность, ключи метки, REGISTRY VERSION cp03-1, от Name and choiceLabelKey; PersonalityDefaults держит CHANNEL ORDER, ETIQUETTE и DECISION PRIORITY по умолчанию спецификации 5.3.4. Пакет коллабораций добавляет CollabKind и три ограничительных уровня плюс триггеры эскалации. Чистые классы, никаких бобов; их пока ничего не читает.
· SecurityService
Ручно применяемый DDL для чартерного слоя ORG, колонок личности и документов и архетипов организаций, а также его контрактный тест (KamoCollab CP03 T2)
Спектр §5.1 блок, символ для символа: двенадцать нулевых черт/коллаб столбцы на пяти таблицах владельцев чартеров, org charter items его org), org personality archetypes (уникальный заголовок per org, case-insensitive) и их предметы (каскадные с архетипом), и один частичный архетип Индекс на таблицу владельца для проверки архетипа. Задача 3 применяется.
· kamo-internal
Закладка команд на Essential Setup, в меню настроек, на целевой странице настроек и на домашней панели администратора (KamoCollab CP01 T23)
/settings/essential?tab=teams устанавливает TeamManager после названий вакансий справочная колонка (цель, особенности с правовым водопадом, лучшие практики, чартерная статья). Меню настроек получает {ключ: "команды" } после заданий, посадочная страница карта команд рядом с отделами и названиями должностей, а также дома Админ-бар входа команд после названий вакансий (мастер R1-37). Тесты: EssentialSetupExposure pins R1-37 (каждая вводная строка меню Essential Setup) посадочная карта и вход в админ-бар в порядке меню; настройки LandingCards Решает все встроенные ключи посадочной карты, которые не могут быть проверены ключами check-i18n. Смотрите; TeamTab определяет место вкладки, компонент и помощь.
· kamo-internal
Диалог команды TeamManager — имя, тайм-аут, члены и руководитель, описание и устав, роли и права, сохраненные в одном вызове (KamoCollab CP01 T22)
Добавьте команду, Редактирование каждой строки и призыв к действию пустого состояния открывают один диалог: имя, сессия тайм-аут, члены (чипы, и участник пикер открылся на текущих членов), лидерство (выбранный) от этих членов, «Нет свинца» разрешено), описание с его счетчиком, CharterEditor в TEAM уровень, ассоциированные роли без принуждения (D15) и прямые права через PermissionGroups. Один POST или PUT отправляет каждое поле; NOT SPECIFIED никогда не отправляется. Об отказе говорится в его собственных словах. его поле, когда оно имеет одно; права Пересчитано: ложные предложения Пересчет разрешений. Живое освежение Делайте паузу, пока диалог открыт. Мультивыборный выборщик получает первоначальный выбор: он открывается на уже выбранных людях, и его ответ - выбор. Весь выбор.
· SecurityService
Входные данные видимого списка поступают из графа орга — подчиненные, кураторы AI и члены AI в качестве id-струн; пары менеджера и супервайзера AI исчезли (KamoCollab CP02 T15)
**************** теперь берет звонящего и читает График организации из кэша 60 с (orgGraphCache.get): Подчиненные члены = отчеты (каллер, правда), которые являются рекордно активными и не синтетическое, только с подчиненным правом, а не с правом всеорг; aiSuperviseeIds = узлы AI, руководителем которых является абонент (никогда сам); aiMemberIds = каждый узел AI; - orgMemberIds (только для всех) и имена, как и раньше. Он больше не вызывает access.managerPairs или aiMembers.artificialMembers. видимость. VisibilityInputs.toBody() отправляет три набора в виде строк Менеджер и супервайзер. ************************* Зависимость TeamMemberRepo удаляется. Неактивный менеджер среднего звена больше не скрывает отчеты ниже них (D19). Завершенный член, чья запись все еще активна, остается подчиненным, поскольку Фильтр tm.recordState.isActive сохранил их. ComputeService принимает наборы с момента развертывания CP02 T14; T16 удаляет свою пару Ходите только после того, как это будет жить.
· SecurityService
GET /api/security/org-chart — график людей из графа: члены команды, которые не являются синтетическими, неактивными, отмечены, отделы с их головами, команды с их руководителями, каждый идентификатор строки и без уровня, роли или права (KamoCollab CP02 T13)
· kamo-internal
TeamManager, таблица команд — строки, состояния загрузки и удаления (KamoCollab CP01 T21)
Таблица вкладки «Команды» (см. § 5.10, D22), в которой JobTitleManager перечисляет названия должностей: команда (название и первая строка описания), члены, руководство, требования, связанные роли, прямые права и тайм-аут, с CommerceSkeleton, Пустое государство и государства с ошибками. Удаление проходит через Диалог именования числа членов; отказ указан в Teams.errors words, else the service's sentence. Прожить через (перенаправлено с «OrgChanges»), приостановив приём Он открыт, каждый груз пронумерован, поэтому в полете освежается, когда удаляется земля. Я не могу вернуть ряд. Ничего не монтируется до тех пор, пока задача 23 не добавит вкладку; Задача 22 добавляет кнопки «Добавить и отредактировать» в диалог.
· SecurityService
Линия менеджера читает оргграф - цикл проверяет свежий график, каталог на кэшированном, а собственный менеджер участника нуждается в MANAGE MEMBER SECURITY для изменения (KamoCollab CP02 T12)
- MemberSecurityController: отклонить Менеджер сохраняет себя, организацию и рекордно активную Отказы и испытания цикла с ******************* Десятиуровневым Связь уходит. TouchesMemberSecurity gains managerId, по сравнению с отделом (Только реальное изменение нуждается в праве; нечитаемый идентификатор считается одним) (D21, D22). МенеджерСтепХэндлер: проверка петли шага MANAGER по найму - это тот же тест на Граф, загруженный внутри транзакции; MANAGER OF и граница глубины идут. - TeamMemberDirectoryController: один кэшированный граф на страницу, читается только при строке задает вопросы; DirectReports = рекордно-активные отчеты (id, false), поэтому контролируемые ИИ считаются; Подсказка выбора = кандидат == член или менеджер (кандидат) содержит члена.
· kamo-internal
Клиент команды — типы, TeamsApiError и десять вызовов по реле команды (KamoCollab CP01 T20)
app/lib/teams/teamsApi.ts: Team, TeamDetail, TeamMemberRow, TeamRef, TeamWrite, TeamSaved; parseTeam (толерантный: идентификаторы как строки, недостающие списки [], право, которое настройка не является ГАРАНТИРОВАННОЙ или NUKE отброшенной; TeamsApiError (сообщение, статус, причина); поле, член Id), читать из тела или обертки деталей прокси, только Написано для людей, как его послание; и список команд, возьмите команду, СоздатьTeam, обновитьTeam, удалитьTeam, получитьTeamMembers, установитьTeamMembers, пересчитатьTeamRights, getMemberTeams, setMemberTeams over authenticated приносить с верительными данными: «включает».
· kamo-internal
Клиент чартера знает команду TEAM и команды ретрансляторов BFF (KamoCollab CP01 T19)
CharterLevel получает TEAM и CharterSubject гипотетический член команды. SaveLayer ('TEAM') PUTs **************** Два реле: /api/security/teams/** (GET, POST, PUT, DELETE) **************************** (GET, PUT), каждый через forwardToApi и relayUpstream, сегменты перекодированы, а сегменты точек отказали. vitest теперь собирает app/api/**/ tests , где находится ретрансляционный тест.
· SecurityService
Отчеты читают график организации — область TEAM и доля TEAM достигают всего поддеревья, включая контролируемые ИИ (KamoCollab CP02 T11)
ReportScopeResolver.reportsTo - это отчеты (член, правда) кэшированного графика: транзитивные и неограниченный (старая прогулка остановилась после десяти уровней), следуя за линией отчетности, поэтому AI Ни один менеджер не входит в команду руководителя. Доля команды достигает менеджера с его ключевыми именами. Все, кто находится под ними, на любой глубине (это доходило только до их прямых отчетов). В отчете нет названий команды Правильно и нет доли TEAM, поэтому объем производства не изменился.
· SecurityService
Команды при создании членов - команды, проверенные до того, как что-либо написано, присоединяются к транзакции создания до первых примененных прав, объявленных после совершения (KamoCollab CP01 T14A)
POST **************** (и /создавать и /создавать балки, которые разделяют) MemberCreationService.create принимает дополнительные командные идентификаторы для человека или AI (мастер R1-36). Отсутствие, нуль и [] название никакой команды и не нужно никакого права, поэтому создание без команд не изменяется. Проверяется после проверок AI и перед поиском пользователя, каждый отказ с полевыми командами 400 INVALID FIELD, 403 NOT ALLOWED Without MANAGE MEMBER SECURITY God window (Creator.maySetTeams, заполненный CreatorOf), 400 NOT A TEAM MEMBER для базового участника, 409 TOO MANY TEAMS более 25 (не читается), 400 TEAM NOT FOUND для другой организации или неизвестной команды, 400 TOO MANY MEMBERS для полноценной команды (TeamValidator.newMemberTeams). - Написано TeamWriter.joinNewMember, MANDATORY без @RetryOnDbConflict, через новый команды. NewMemberTeams, сразу после сохранения участника и перед зеркалом, первым применил права (которые включают в себя уровень TEAM) и наем AI; смытый, никогда не пойманный: член никогда не Он существует с половиной команд. А 40001 перепроверяется абонентом целиком (существующий 503 RETRY). TeamService.afterCommit сообщает TeamChangeListeners, как только творение совершается, никогда после завершения работы. Откат; приветствие остается после совершения (a8966fd). Правила CP01-T14A-1..3; мастер CP-D96.
· kamo-internal
Фильтр журнала доступа предлагает имперсонацию и Enter-As (KamoCollab CP00 T11)
Служба безопасности теперь записывает IMPERSONATION STARTED, IMPERSONATION ENDED и ENTER AS в журнал доступа организации. Список событий (accessLogEvents.ts, который читают фильтр и сетка) отражает общую библиотеку. Перечислим и получим три, в своем порядке, сказано в словаре словаря. Новый тест открывает сам фильтр. Удерживает три в AccessLogEventType; Java enum parser переходит в SharedLibPath, поэтому оба теста разделяют его.
· SecurityService
Политика чата SecurityService считывает факты о членах из графа орга, графа, загруженного на снимок (KamoCollab CP02 T10)
ChatPolicyBeanConfig создает ChatPolicySnapshotLoader с графиком конструктор и orgGraphCache::fresh (правящий CP02-T17-3), как MediaService делает, поэтому аннотации чата в реестре и карта участника читают то же самое Факты, как и любой другой вопрос иерархии. Наследственное хранилище фактов чата Он больше не вводится; в задаче 18 его удаляют общим либом. ChatPolicyBeanConfigTest: факты погрузчика - MemberFactsFromGraph Свежий () график возвращается для идентификатора (никогда не получить ()); никакое активное множество не просит об отсутствии График; сервис сохраняет свой снимок до тех пор, пока не будет признан недействительным; старый кэш 59 с Граф не используется; и фасольная проволока в контексте без унаследованного хранилища, где издатель и слушатель NATS делают следующий снимок Новый график. ReferenceOrgGraph становится общедоступным с членами() и build().
· SecurityService
Отдел получает руководителя — PUT **************** его автор, а имя руководителя и стояние на отделе читает (KamoCollab CP02 T9)
· SecurityService
Каждая запись на графике службы безопасности объявляет об изменении, команда слушает шов, и рота держит его так (KamoCollab CP02 T8)
Каждый путь записи CP02 spec §3.5 (W1-W15) вызывает **************** причину. с причинами, указанными в § 5.4.2: безопасность членов (роли, отдел, должность, менеджер, уровень, владелец); Тип участника), профиль PUT (статус, интеллект, AI супервайзер, по сравнению со значениями читать перед сохранением), создание участника, регистрация, создание и уход, AI выход на пенсию, наем Шаг MANAGER, отделы, названия должностей, удаление ролей, создание портала и выставление счетов. Зеркало охранника объявляет о создании собственной организации (управляющей CP02-T8-1). OrgGraphTeamChangeListener реализует шов TeamChangeListener CP01 с причиной TEAM. OrgGraphPublisherCoverageTest (D15) терпит неудачу, когда файл записывает факт графа без Издатель, за пределами COVERED BY SEAM (команд / TeamWriter.java) и ALLOWED (с причинами), именование файла, строки и шаблона.
· SecurityService
Команды на карте участника и в поиске каталога — [{id, title}] по названию, одна команда читает на странице (KamoCollab CP01 T16)
GET/api/security/members/{id}/card называет команды члена команды ([] в команде нет; не учитывается при сбое чтения, Как в профиле. **************************** Каждому участнику команды присваивается ряд из одной команды НайтиTeamRefsByMemberIdIn для членов команды страницы (TeamService.teamsOfMembers, который команды теперь используют, так что Существует одно правило порядка; ряд простого участника не имеет команд и не спрашивается. /ai-члены и Цели /impersonation неизменны.
· SecurityService
Команды по эффективному праву — уровень команд каскада диагностики, и Команды: источники по прикладным правам (KamoCollab CP01 T15)
Диагностический каскад (GET ****************) Список членов команды команды между названием должности и членом команды, {teamId, title, roles, rights}, в порядке водопада; Название прикладного права «Команда: <title> (через роль <role>)» и «Команда: <title>» после работы Заголовок и перед собственным членом. Один читатель, команды. TeamLevelSources: команды из TeamLevels их роли и прямые права; один запрос для члена команды, ни для клиента.
· SecurityService
Команды участника из профиля — GET | PUT **************** и команды по профилю и виду безопасности (KamoCollab CP01 T14)
· SecurityService
PUT **************** — командный сейв только через TeamWriter, объявленный после совершения (KamoCollab CP01 T13)
Конечная точка командного устава спецификации §5.6/§5.7 на LayerCharterController, помимо Роль, отдел и название должности: CONFIGURE SYSTEM Путь неведомый, путь неведомый, Команда и команда другой организации - 404 TEAM NOT FOUND (правило CP01-T13-1); CharterItems is required and [] clears; TeamWriter.updateХартия подтверждает пункты Как часть команды в ее транзакции, так и TeamService. AfterWrite объявляет о спасении Один раз. Редактирование устава никого не пересчитывает и не является фактом графа. Ответы {charterItems} Правило командного пути-id (канонический текст UUID, еще 404 без поиска, CP01-T10-1) Переключается с TeamController на TeamWire.pathTeamId, поэтому оба контроллера разделяют его.
· SecurityService
Чартерный уровень TEAM — команды участника после названия должности, предмет TEAM, командные идентификаторы и маркеры скрытия команды (KamoCollab CP01 T12)
A member's teams become TEAM layers between the job title and the member, all at one rank and ordered by lower-case title then id; the teams' roles join the ROLE layer. Only staff are looked up, with one indexed query, so a member in no team resolves exactly as before (pinned against layers and effective items captured on the unchanged loader; no stamp hash, R1-1). A TEAM subject resolves its roles (rank 0), then the team's layer, with the dialog's unsaved roles, description, title and items. CharterSubject gains teamIds (a hypothetical member's teams); a team of another org, as a TEAM subject or in teamIds, is 404 SUBJECT_NOT_FOUND and none of its items or roles are read (Review Focus 4). CharterReferenceValidator finds team charter items: a TEAM marker may hide role, department and job-title items, a MEMBER marker may hide a team's item, and a team item of another org is SUPPRESS_TARGET_NOT_FOUND. **************** used TEAM as its unknown level; TEAM became a level in cp01:5, so it now uses PLANET.
· kamo-internal
«Звонки от членов команды AI» по собственному профилю (SP95 T27)
Профиль человека получает карту в своей рабочей комнате: Члены команды AI могут позвонить им, и по какому из них цифры. Переключатель включает постоянное согласие на выбранный номер (первый по умолчанию) или выключен, и выберите другой номер, пока он на ходу согласие там; оба сохраняют сразу через новый BFF Ретрансляция маршрута ai-call-consent службы безопасности. Согласие, оставленное на Номер, который больше не находится в профиле, читается как выключенный, с "Ваш номер Меняется»; профиль без номера запрашивает один первый. На карточке написано: Звонок, запрошенный в чате, разрешен даже тогда, когда он отключен, и перечитывается Когда запись участника меняется в другом месте. Администратор безопасности видит карту коллеги только для чтения, подпись Для кого-то другого, кто может это изменить. Ворота являются aiCallsView (самостоятельно или MANAGE MEMBER SECURITY, на спасённом человеке, который является Член команды) и aiCallsEdit (сам человек), с рядом палитры.
· kamo-internal
«Звонки от членов команды AI» по собственному профилю (SP95 T27)
Профиль человека получает карту в своей рабочей комнате: Члены команды AI могут позвонить им, и по какому из них цифры. Переключатель включает постоянное согласие на выбранный номер (первый по умолчанию) или выключен, и выберите другой номер, пока он на ходу согласие там; оба сохраняют сразу через новый BFF Ретрансляция маршрута ai-call-consent службы безопасности. Согласие, оставленное на Номер, который больше не находится в профиле, читается как выключенный, с "Ваш номер Меняется»; профиль без номера запрашивает один первый. На карточке написано: Звонок, запрошенный в чате, разрешен даже тогда, когда он отключен, и перечитывается Когда запись участника меняется в другом месте. Администратор безопасности видит карту коллеги только для чтения, подпись Для кого-то другого, кто может это изменить. Ворота являются aiCallsView (самостоятельно или MANAGE MEMBER SECURITY, на спасённом человеке, который является Член команды) и aiCallsEdit (сам человек), с рядом палитры.
· SecurityService
Подресурсы команды (члены, права, роли) и конечная точка пересчета (KamoCollab CP01 T11)
************************************ /права и /роли, и POST **************** (см. пункт 5.7). Читать далее → открыта для любой сессии организации; для записи необходима CONFIGURE SYSTEM или открытая Окошко бога, проверено до того, как команда будет поднята. Каждый из них заменяет свой Один обязательный список через TeamWriter запускает TeamService. После написания и Ответы на список, как он сейчас читает с правами Пересчитано: члены пересчитывает, кто присоединился и кто только ушел, права и роли команды. членов. Ответы на перерасчет {пересчитано: n}, количество членов, А провал - это 500, которые ничего не сливают.
· kamo-internal
SP96 голосовая карта AI в профиле и раздел VOICE чартера без штифта TTS
Идентификационная комната участника AI получает голосовую карту: одна строка за речь Модель, которую он может использовать, в том порядке, в котором он пробует их, с голосом, который он говорит. Там сейчас и как его выбрали, модель использовали сначала, модель без Голос его пола и голос, который меняется в следующий раз, когда он говорит. Почему. Зритель AIService позволяет изменить выбор другого голоса (диалог одного голоса). Голоса, которые ему подходят) или модель, используемая первой; оба сохраняют сразу через новые ретрансляторы BFF голосовых конечных точек AIService. The Карта снова считывает голоса, когда спасённый секс меняется. Его ворота, aiVoiceView, это правило чтения AIService, и оно имеет ряд палитры. Раздел VOICE редактора чартера - это только текст стиля: выборщик TTS и чартерный голосовой каталог (клиентский звонок и маршрут BFF) исчез, В разделе говорится, что голос выбран в профиле, а элемент все еще Носящий голосовой значок помечается, как Shared-lib отказывается от него.
· kamo-internal
SP96 голосовая карта AI в профиле и раздел VOICE устава без штифта TTS
Идентификационная комната члена ИИ получает голосовую карту: одна строка за речь Модель, которую он может использовать, в том порядке, в котором он пробует их, с голосом, который он говорит. Там сейчас и как его выбрали, модель использовали сначала, модель без Голос его пола и голос, который меняется в следующий раз, когда он говорит. Почему. Зритель AIService позволяет изменить выбор другого голоса (диалог одного голоса). Голоса, которые ему подходят) или модель, используемая первой; оба сохраняют сразу через новые ретрансляторы BFF голосовых конечных точек AIService. The Карта снова считывает голоса, когда спасённый секс меняется. Его ворота, aiVoiceView, это правило чтения AIService, и оно имеет ряд палитры. Раздел VOICE редактора чартера - это только текст стиля: выборщик TTS и чартерный голосовой каталог (клиентский звонок и маршрут BFF) исчез, В разделе говорится, что голос выбран в профиле, а элемент все еще Носящий голосовой значок помечается, как Shared-lib отказывается от него.
· AIService
Это краткое изложение приводит цель команды к названию команды (KamoCollab CP01 T17)
Строка «Команда ЦЕЛЬ» теперь гласит: «Как член команды:», после Заголовок работы, такой как ROLE, DEPARTMENT и JOB TITLE лидирует. ВЕРСИЯ остается (D19): Ни один коротышка еще не имеет слоя TEAM, поэтому ничего не нужно рекомпилировать.
· SecurityService
TeamController — список, создание, чтение, обновление и удаление (KamoCollab CP01 T10)
GET | POST /api / security / Teams и GET | PUT | DELETE /api / security / Teams / (см. § 5.7). Каждый обработчик разрешает вызов первым (401 без организации); чтения открыты для любой сессии организации; записи нуждаются в CONFIGURE SYSTEM или Открытое окно Бога (403 MISSING RIGHT с требуемым правом), проверенное перед началом Команда смотрит вверх. Идентификатор пути без UUID, неизвестный идентификатор и команда другой организации 404 TEAM NOT FOUND. Запись выполняется в транзакции TeamWriter, затем TeamService.afterНапишите за его пределами; создайте и обновите ответ {team (деталь, с чартерными пунктами), rightsRecalculated}, исключить {deleted: true, rightsRecalculated} Отказы сохраняют тело TeamErrors, устав Отказы в форме CharterErrors и ограничение базы данных Параллельное сохранение - это 409 запрос на перезагрузку, а не 500.
· MediaService
Внутренний путь DM проходит через политику чата и защиту поворота AI, и каждая строка чата говорит, кто ее написал (KamoCollab CP00 T7)
******************** теперь требуется источник СИСТЕМА (400 ИСТОЧНИКОВ). Линия участника проверяется политикой чата в качестве собственной отправки члена (открытая затем отправка, когда не существует ДМ; существующая ДМ Руководство для окна ответа ONE WAY, отказалось от 403 CHAT POLICY и AI Линия отправителя засчитывается охраной поворота (429 AI TURN LIMIT). AI's Линия к собственному человеческому начальству никогда не считается и проходит по правилам. В то время как ProtectManagerLine включен. Линия системы (календарь уведомлений) пропускает оба. Обработчик не открывает транзакцию: сначала читается предел поворота, затем InternalDirectMessageWriter (@Transactional @RetryOnDbConflict) ДМ, допускает поворот, пишет строку и готовит фан-аут; Объявление следует за обязательством. media objs.source пишется: MEMBER от члена отправляет и Exec2Exec сообщения, СИСТЕМА по внутренним линиям СИСТЕМЫ и приветствие Exec2Exec Оповещения. Линия системы или службы не является человеческим поворотом, поэтому она больше не является таковой. Сбрасывает счетчик AI. Фреймы вентиляции, ответ отправки, NATS Фрейм и строки истории несут источник (MEMBER для нулевого ряда).

Ваша вселенная ждет.
Начните бесплатно через несколько минут. Добавляйте продукты, когда будете готовы — без миграции, без новых логинов.
Бесплатно навсегда — не требуется кредитная карта