Changelog
Ce qui est nouveau.
Chaque amélioration apportée à la plateforme, à mesure qu'elle est livrée.
· kamo-internal
Les équipes d'un membre sur la carte Position du profil, sauvegardées sur la route côté membre, et les noms d'équipes de conseils de cascade (KamoCollab CP01 T24)
La carte Position gagne des équipes sous le titre de travail: jetons pour chaque spectateur de la carte, un choix multiple sur les équipes de l'organisation pour une sécurité administrateur, enregistré comme {teamIds} à PUT **************** (participant). Les équipes que le profil ne pouvait pas lire ne sont pas proposées pour l'édition, donc un save ne remplace jamais les équipes que personne n'a vues (CP01-T14-4). Un refus montre sur le champ dans les mots du dictionnaire où il les a. Le membre les noms de conseils de l'onglet sécurité, et Team: les sources obtiennent un ton propre.
· kamo-shared-library
Le registre des caractères 60 clés, les par défaut du groupe et le vocabulaire Docstion (KamoCollab CP03 T4)
Personnalité TraitKey porte un TraitSpec par clé (famille, type, portée, par défaut, choix, clés liées, groupe UI, unité, adaptabilité, clés d'étiquette), REGISTRY VERSION cp03-1, deNom et choixLabelKey; PersonnalitéDifférends détient le CHANNEL ORDER, ETIQUETTE et DECISION PRIORITY par défaut de la spécification 5.3.4. Le paquet collab ajoute CollabKind et les trois enums de niveau restrictif plus les déclencheurs d'escalade. Des classes pures, pas de haricots, rien ne les lit encore.
· SecurityService
La DDL appliquée à la main pour la couche charte ORG, les colonnes personnalité et Docstion et les archétypes org, et son test de contrat (KamoCollab CP03 T2)
Spec §5.1's block, caractère pour caractère: les douze caractères nuls/collab colonnes sur les cinq tables du propriétaire de charte, org charter items (en cascade avec ses org), org personnalité archétypes (titre unique par org, insensible à la casse) et leurs éléments (en cascade avec l'archétype), et un archetype ref partiel index par table propriétaire pour le contrôle d'utilisation de l'archétype. La tâche 3 l'applique.
· kamo-internal
L'onglet Equipes sur la configuration essentielle, dans le menu Paramètres, sur la page Paramètres d'atterrissage et sur la barre d'administration d'accueil (KamoCollab CP01 T23)
/settings/essential?tab=teams monte TeamManager après les titres de Job, avec ses colonne d'aide (objectif, caractéristiques avec la cascade de droits, les meilleures pratiques, la article de la charte). Le menu de paramètres gagne { clé: 'teams' } après jobTitres, la page d'atterrissage une carte des équipes à côté des ministères et des titres de travail, et la maison admin bar a Entrée des équipes après les titres de travail (master R1-37). Tests: essentialSetupExposure pins R1-37 (chaque entrée de menu de configuration essentielle a une carte d'atterrissage et une entrée admin-bar, dans l'ordre du menu); paramètresLandingCards résout les clés d'exécution de chaque carte d'atterrissage, qui check-i18n-keys ne peuvent pas voir ; teamsTab épingle la place de l'onglet, composant et aide.
· kamo-internal
Dialogue d'équipe de TeamManager — nom, timeout, membres et chef, description et charte, rôles et droits, sauvegardés en un seul appel (KamoCollab CP01 T22)
Ajouter une équipe, chaque ligne Édition et l'appel à l'action de l'état vide ouvrir une boîte de dialogue : le nom, la session temps d'attente, les membres (chips, et le sélectionneur de membre ouvert sur les membres actuels), le leader (choisi de ces membres, "Aucune piste" permis), la description avec son compteur, CharterEditor à l'ÉQUIPE les rôles associés avec aucun forcé dans (D15), et les droits directs par l'intermédiaire des groupes de permission. Un POST ou PUT envoie chaque champ ; NOT SPECIFIED n'est jamais envoyé. Un refus est dit dans ses propres termes, à son champ lorsqu'il en a un; droitsRecalculés: offres fausses Recalculer les permissions. Le rafraîchissement en direct s'arrête pendant que le dialogue est ouvert. Le sélectionneur multi-sélection gagne initialPicked: il s'ouvre sur les personnes déjà choisies, et sa réponse est la toute la sélection.
· SecurityService
Les entrées de la liste visible proviennent du graphique org — les subordonnés, les superviseurs AI et les membres AI en tant que chaînes id; les paires de superviseurs du gestionnaire et AI ont disparu (KamoCollab CP02 T15)
**** **** **** **** maintenant prend l'appelant et lit le organigramme de l'organisation à partir du cache 60 s (orgGraphCache.get): - MemberIds subordonnés = rapports (appel, true) qui sont actifs et non synthétique, seulement avec le droit subordonné et non le droit all-org; - aiSuperviseeIds = les nœuds AI dont le superviseur est l'appelant (jamais lui-même); - aiMemberIds = chaque noeud AI; - orgMemberIds (tout-org à droite seulement) et noms comme avant. Il n'appelle plus access.managerPairs ou aiMembres.artificielsMembres pour visibilité. VisibilitéInputs.toBody() envoie les trois ensembles comme chaînes en place de managerPaires et aiSupervisorPaires. **************** et ses La dépendance TeamMemberRepo est supprimée. Un gestionnaire intermédiaire inactif ne cache plus les rapports ci-dessous (D19); un membre TERMINÉ dont le dossier est toujours actif reste un subordonné, Le filtre actif les a conservés. ComputeService accepte les jeux depuis CP02 T14 (déployé); T16 supprime sa paire marcher seulement après que ce soit en direct.
· SecurityService
GET /api/security/org-chart — le graphique des personnes du graphique org: les membres de l'équipe qui ne sont pas synthétiques, inactifs marqués, les départements avec leurs têtes, les équipes avec leurs pistes, chaque id une chaîne et aucun niveau, rôle ou droit (KamoCollab CP02 T13)
· kamo-internal
TeamManager, le tableau des équipes — lignes, états de charge et suppression (KamoCollab CP01 T21)
Le tableau de l'onglet Équipes (préciser §5.10, D22), comme JobTitleManager liste les titres de poste: équipe (titre et première ligne de la description), membres, chef, les rôles associés, les droits directs et le délai d'attente, État vide et erreur État avec réessayer États. Supprimer passe par ConfirmationDialogue désignant le nombre de membres; un refus est dit dans teams.errors mots, sinon la phrase du service. Vivre useOrgChanges(['teams', 'member-security']), pause pendant la confirmation est ouvert; chaque charge est numérotée, donc un rafraîchissement en vol quand une suppression atterrit ne peut pas ramener la rangée. Rien ne monte jusqu'à ce que la tâche 23 ajoute l'onglet; La tâche 22 ajoute les boutons Ajouter et Modifier avec leur boîte de dialogue.
· SecurityService
La ligne gestionnaire lit le graphe org — vérification du cycle sur un nouveau graphe, le répertoire sur le cache, et le gestionnaire propre d'un membre a besoin de MANAGE MEMBER SECURITE pour changer (KamoCollab CP02 T12)
- MemberSecurityController: rejetManager garde l'auto, l'org et l'enregistrement actif refus et teste la boucle avec ************* le dix-niveau C'est parti. toucheMembreGestionnaire des gains de sécuritéId, comparé comme le ministère (seulement un changement réel a besoin du bon ; un id illisible compte comme un) (D21, D22). - ManagerStepHandler: le contrôle de boucle de l'étape MANAGER de location est le même test sur un graphique chargé dans sa transaction; MANAGER OF et la profondeur liée vont. - TeamMemberyController: un graphique mis en cache par page, lisez seulement quand une ligne demande; directReports = rapports actifs-enregistrement(id, false), de sorte que les IA supervisées comptent; l'indice de sélection = candidat == membre ou gestionnaireChain(candidate) contient membre.
· kamo-internal
Les équipes client — types, TeamsApiError et les dix appels sur les relais d'équipe (KamoCollab CP01 T20)
app/lib/teams/teamsApi.ts: Team, TeamDetail, TeamMemberRow, TeamRef, TeamWrite, TeamSaved; parseTeam (tolérant: ids as strings, listes manquantes [], une droite dont le réglage n'est pas accordé ou NUKE abandonné); TeamsApiError(message, statut, raison, champ, memberId), lu à partir du corps ou de l'emballage de détails du proxy, avec seulement une phrase écrite pour les gens comme son message; et listTeams, getTeam, createTeam, updateTeam, deleteTeam, getTeamMembers, setTeamMembers, recalculerTeamRights, getMemberTeams, setMemberTeams sur authentifié Va chercher avec références: 'incluez'.
· kamo-internal
Le client de charte connaît TEAM et les équipes relais BFF (KamoCollab CP01 T19)
CharterLevel gagne TEAM et CharterSoumettre l'équipe d'un membre hypothétiqueIds; SaveLayer ('TEAM') PUTS **************** Deux relais : /api/sécurité/équipes/** (GET, POST, PUT, DELETE) et - Oui. (GET, PUT), chaque forwardToApi et relayUpstream, segments réencodés et segments point refusés. vitest collecte maintenant app/api/**/ tests , où se trouve le test de relais.
· SecurityService
Les rapports lisent le graphique org — une portée TEAM et une part TEAM atteignent l'ensemble du sous-arbre, AI supervisés inclus (KamoCollab CP02 T11)
ReportScopeResolver.reportsTo is reports(member, true) of the cached graph: transitive and sans limite (l'ancienne marche s'est arrêtée après dix niveaux), suivant la ligne de rapport, donc un AI avec aucun gestionnaire n'est dans l'équipe de son superviseur. Une part de TEAM atteint le gestionnaire ses noms clés et tout le monde au-dessous d'eux à n'importe quelle profondeur (il a atteint leurs rapports directs seulement). Aucun rapport ne nomme une équipe Il n'existe aucune part de l'ÉQUIPE, de sorte que la production reste inchangée.
· SecurityService
Équipes lors de la création des membres — teamIds on create-team-member, checked before anything writing, joint inside the creation transaction before the first applied rights, annonced after the commit (KamoCollab CP01 T14A)
POST **************** (et les chemins /create et /bulk-create qui partagent MemberCreationService.create) prend une équipe optionnelleIds pour une personne ou un AI (master R1-36). Absent, nul et [] ne nomment aucune équipe et n'ont pas besoin de droit, donc une création sans équipes est inchangée. - Vérifié après les vérifications AI et avant la recherche de l'utilisateur, chaque refus avec l'équipe de terrainIds et rien d'écrit : 400 INVALID FIELD, 403 NON ALIMÉ sans MANAGE MEMBER SECURITE ou une ouverture window dieu (Creator.maySetTeams, rempli par creatorOf), 400 NOT A TEAM MEMBER pour un membre de base, 409 TOO MANY TEAMS sur 25 (sans lecture), 400 TEAM NOT FOUND pour une autre équipe ou une équipe inconnue, 400 TOO MANY MEMBERS pour une équipe complète (TeamValidator.newMemberTeams). - Ecrit par TeamWriter.joinNewMember, MANDATOIRE sans @RetryOnDbConflict, à travers le nouveau les équipes. NouveauMembreTeams, juste après la sauvegarde du membre et avant le miroir, la première application les droits (qui comprennent le niveau TEAM) et la location d'un AI; existe avec la moitié de ses équipes. Un 40001 est réétudié en entier par l'appelant (le 503 RETRAIT existant). - TeamService.afterCommit dit à TeamChangeÉcouteurs une fois que la création s'engage, jamais après un retour; l'accueil reste après le commit (a8966fd). Décisions CP01-T14A-1..3; maître CP-D96.
· kamo-internal
Le filtre de journal d'accès offre imitation et entrée-comme (KamoCollab CP00 T11)
SecurityService écrit maintenant IMPERSONATION STARTED, IMPERSONATION ENDED et ENTER AS dans le journal d'accès de l'org. La liste des événements (accessLogEvents.ts, que le filtre et la grille lisent tous les deux) reflète la bibliothèque partagée enum et gagne les trois, dans son ordre, dit dans les mots du dictionnaire. Un nouveau test ouvre le filtre lui-même et détient les trois pour AccessLogEventType; l'analyseur Java enum se déplace dans partageLibPath donc les deux tests le partagent.
· SecurityService
La politique de chat de SecurityService lit les faits des membres à partir du graphique org, un graphique chargé par instantané (KamoCollab CP02 T10)
ChatPolitiqueBeanConfig construit ChatPolitiqueSnapshotLoader avec le graphique constructeur et orgGraphCache::frais (arrêt CP02-T17-3), en tant que service médias Ainsi, les annotations de chat de la liste et la carte de membre lisent la même des faits comme toute autre question de hiérarchie. L'héritage du dépôt de faits de chat n'est plus injecté; partage-lib le supprime dans la tâche 18. ChatPolitiqueBeanConfigTest: les faits du chargeur sont MemberFactsFromGraph du graphe fresh() retourne pour l'id org (jamais get()); aucun ensemble actif ne demande de non graphique; le service conserve son instantané jusqu'à invalidation; un 59 s ancien cache graphe n'est pas utilisé; et le fil de haricots dans un contexte sans dépôt historique, où l'éditeur et l'auditeur NATS font chacun lire l'instantané suivant nouveau graphique. RéférenceOrgGraph devient public avec members() et build().
· SecurityService
Un département obtient une tête — PUT ************* son écrivain, et le nom de la tête et debout sur le département lit (KamoCollab CP02 T9)
· SecurityService
Chaque graphique de SecurityService annonce le changement, la couture de l'équipe écoute, et un cliquet le garde ainsi (KamoCollab CP02 T8)
Chaque chemin d'écriture de CP02 spec §3.5 (W1-W15) appelle ******************** cause) avec les causes du §5.4.2: sécurité des membres (rôles, département, titre du poste, gestionnaire, niveau, propriétaire, type de membre), le profil PUT (statut, intelligence, superviseur AI, comparé aux valeurs lire avant le save), création de membre, inscription, org create and leave, AI retrait, la location Étape MANAGER, départements, titres d'emploi, suppression de rôles, création de portail et de membres de facturation. Le miroir du fournisseur de sécurité annonce sa propre organisation (CP02-T81). OrgGraphTeamChangeListener implémente la couture TeamChangeListener du CP01 avec cause TEAM. OrgGraphPublisherCoverageTest (D15) échoue lorsqu'un fichier écrit un fait graphique sans le éditeur, hors COVERED BY SEAM (équipes/TeamWriter.java) et ALLOWED (avec raisons), Nommer le fichier, la ligne et le motif.
· SecurityService
Équipes sur la carte membre et dans la recherche de répertoire — [{id, title}] par titre, une équipe a lu par page (KamoCollab CP01 T16)
GET /api/security/members/{id}/card nomme les équipes d'un membre de l'équipe ([] dans aucune équipe; laissés de côté lorsque la lecture échoue, comme sur le profil). Allez-y. donne à chaque ligne membre d'équipe ses équipes d'une findTeamRefsByMemberIdIn pour les membres de l'équipe de la page (TeamService.teamsOfMembers, quelles équipesDonnées, donc il y a une règle d'ordre); un membre ordinaire n'a pas d'équipe et n'est pas interrogé. /ai-membres et / les cibles d'imitation sont inchangées.
· SecurityService
Les équipes dans l'optique des droits effectifs — le niveau des équipes de diagnostic de cascade, et l'équipe: sources sur les droits appliqués (KamoCollab CP01 T15)
La cascade des diagnostics (GET **************** liste un membre de l'équipe les équipes entre le titre du poste et le membre, {teamId, titre, rôles, droits}, dans l'ordre de la cascade; nom des droits appliqués de la vue de sécurité "Team: <title> (via role <role>)" et "Team: <title>" après l'emploi le titre et avant celui du membre. Un lecteur, des équipes. TeamLevelSources: les équipes de TeamLevels, puis leurs rôles et droits directs; une requête pour un membre dans aucune équipe, aucune pour un client.
· SecurityService
Les équipes d'un membre du profil — GET=PUT **************** et les équipes sur le profil et la vue de sécurité (KamoCollab CP01 T14)
· SecurityService
PUT **************** — la charte d'une équipe seulement sauver par TeamWriter, annoncé après le commit (KamoCollab CP01 T13)
Le point final de la charte d'équipe de la spécification §5.6/§5.7 sur LayerCharterController, à côté de la Rôle, département et titres d'emploi : CONFIGURE SYSTEM ou dieu; le chemin id, inconnu l'équipe et l'équipe d'un autre org sont toutes 404 TEAM NOT FOUND (décision CP01-T13-1); charteLes éléments sont requis et [] efface; TeamWriter.updateCharter valide les éléments comme la couche TEAM dans sa transaction, puis TeamService. afterWrite annonce l'enregistrement Une fois. Une modification de charte ne recalcule personne et n'est pas un fait graphique. Réponses {charterItems}. La règle path-id de l'équipe (texte canonique UUID, sinon 404 sans recherche, CP01-T10-1) se déplace de TeamController à TeamWire.pathTeamId pour que les deux contrôleurs le partagent.
· SecurityService
The TEAM charter layer — a member's teams after the job title, the TEAM subject, teamIds, and team hide markers (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
"Appels des membres de l'équipe AI" sur son propre profil (SP95 T27)
Le profil d'une personne gagne une carte dans sa salle de travail: les membres de l'équipe AI de l'organisation peuvent les téléphoner, et sur lequel de leurs nombres. L'interrupteur allume un consentement permanent pour le numéro choisi (le premier par défaut) ou off, et de choisir un autre nombre pendant qu'il est en mouvement le consentement là-bas; les deux économisent à la fois par le nouveau BFF relais de la route de l'ai-call-consent de SecurityService. Un consentement laissé sur une numéro qui n'est plus sur le profil lit comme off, avec "Votre numéro Un profil sans numéro demande un premier. La carte dit : appel demandé dans un chat est autorisé même quand c'est éteint, et re-lise lorsque le dossier du membre change ailleurs. Un administrateur de sécurité voit la carte d'un collègue en lecture seule, sous-titrée pour quelqu'un d'autre et qui peut le changer. Les portes sont aiCallsView (même ou MANAGE MEMBER SECURITE, sur une personne sauvée qui est une membre de l'équipe) et aiCallsEdit (la personne elle-même), avec une rangée de palettes.
· kamo-internal
"Appels des membres de l'équipe AI" sur son propre profil (SP95 T27)
Le profil d'une personne gagne une carte dans sa salle de travail: les membres de l'équipe AI de l'organisation peuvent les téléphoner, et sur lequel de leurs nombres. L'interrupteur allume un consentement permanent pour le numéro choisi (le premier par défaut) ou off, et de choisir un autre nombre pendant qu'il est en mouvement le consentement là-bas; les deux économisent à la fois par le nouveau BFF relais de la route de l'ai-call-consent de SecurityService. Un consentement laissé sur une numéro qui n'est plus sur le profil lit comme off, avec "Votre numéro Un profil sans numéro demande un premier. La carte dit : appel demandé dans un chat est autorisé même quand c'est éteint, et re-lise lorsque le dossier du membre change ailleurs. Un administrateur de sécurité voit la carte d'un collègue en lecture seule, sous-titrée pour quelqu'un d'autre et qui peut le changer. Les portes sont aiCallsView (même ou MANAGE MEMBER SECURITE, sur une personne sauvée qui est une membre de l'équipe) et aiCallsEdit (la personne elle-même), avec une rangée de palettes.
· SecurityService
Les sous-ressources de l'équipe (membres, droits, rôles) et le critère de recalcul (KamoCollab CP01 T11)
J'ai une idée. /droits et droits, et POST **************** (précisez §5.7). Les lectures ouvert à toute session de l'org; écrit besoin CONFIGURE SYSTEM ou un ouvert Fenêtre de Dieu, vérifié avant que l'équipe ne soit regardée. Chaque PUT remplace une liste requise par TeamWriter, dirige TeamService. après Write et répond à la liste telle qu'elle se lit maintenant avec droitsRecalculé: membres recalcule ceux qui ont rejoint l'équipe et qui sont partis seulement, droits et rôles membres. Les réponses {recalculées: n}, le nombre de membres, et un échec est un 500 qui ne fuit rien.
· kamo-internal
SP96 la carte vocale AI sur le profil, et la section VOICE de la charte sans la broche TTS
La salle d'identité d'un membre AI gagne sa carte vocale : une ligne par discours modèle il peut utiliser, dans l'ordre qu'il essaie, avec la voix qu'il parle maintenant et comment il a été choisi, le modèle utilisé d'abord, un modèle avec voix de son sexe, et une voix qui change la prochaine fois qu'il parle, avec Pourquoi ? Un visionneur AIService permet de changer il choisit une autre voix (un dialogue de les voix qui lui conviennent) ou le modèle utilisé en premier; les deux économisent à la fois via les nouveaux relais BFF des paramètres de voix des membres d'AIService. Les carte lit ses voix à nouveau lorsque le sexe enregistré change. Sa porte, aiVoiceView, est la règle de lecture d'AIService, et il a une ligne de palette. La section VOICE de l'éditeur de charte n'est que texte de style : le sélecteur TTS et le catalogue vocal charter (appel client et route BFF) ont disparu, la section indique que la voix est choisie sur le profil, et un élément encore porter une épingle vocale est signalé comme partagé-lib refuse.
· kamo-internal
SP96 la carte vocale AI sur le profil, et la section VOICE de la charte sans la broche TTS
La chambre d'identité d'un membre AI gagne sa carte vocale : une ligne par discours modèle il peut utiliser, dans l'ordre qu'il essaie, avec la voix qu'il parle maintenant et comment il a été choisi, le modèle utilisé d'abord, un modèle avec voix de son sexe, et une voix qui change la prochaine fois qu'il parle, avec Pourquoi ? Un visionneur AIService permet de changer il choisit une autre voix (un dialogue de les voix qui lui conviennent) ou le modèle utilisé en premier; les deux économisent à la fois via les nouveaux relais BFF des paramètres de voix des membres d'AIService. Les carte lit ses voix à nouveau lorsque le sexe enregistré change. Sa porte, aiVoiceView, est la règle de lecture d'AIService, et il a une ligne de palette. La section VOICE de l'éditeur de charte n'est que texte de style : le sélecteur TTS et le catalogue vocal charter (appel client et route BFF) ont disparu, la section indique que la voix est choisie sur le profil, et un élément encore porter une épingle vocale est signalé comme partagé-lib refuse.
· AIService
Le brief mène le but d'une équipe avec le nom de l'équipe (KamoCollab CP01 T17)
Une ligne de l'ÉQUIPE BUTOSE se lit maintenant "En tant que membre de l'équipe {titre}: ", après le le titre du poste, comme le ROLE, MINISTÈRE et JOB TITLE. Durée du séjour (D19): aucun bref n'a encore de couche TEAM, donc rien n'a besoin de recompiler.
· SecurityService
TeamController — lister, créer, lire, mettre à jour et supprimer (KamoCollab CP01 T10)
GET-POST/api/sécurité/équipes et GET-PUT-DELETE/api/sécurité/équipes/{id} (précisez §5.7). Chaque gestionnaire résout l'appelant en premier (401 sans org); lit sont ouverts à toute session de l'org; écrit besoin CONFIGURE SYSTEM ou un ouvrir la fenêtre de Dieu (403 MISSING RIGHT avec requiredRight), vérifié avant la l'équipe est regardée. Un identificateur de chemin non UUID, un identificateur inconnu et une autre équipe d'org sont tous 404 TEAM NOT FOUND. Une écriture passe dans la transaction de TeamWriter, alors TeamService.afterWrite en dehors de lui; créer et mettre à jour la réponse {team (le détail, avec les articles de charte), droitsRecalculé}, supprimer {supprimé: true, droitsRecalculé}. Refus de garder le corps de TeamErrors, charte refuse la forme de CharterErrors, et une contrainte la base de données impose contre un sauvegarde simultané est un 409 demandant un rechargement, pas un 500.
· MediaService
Le chemin DM interne passe par la politique de chat et le AI tour garde, et chaque ligne de chat dit qui l'a écrit (KamoCollab CP00 T7)
POST **************** **** demande maintenant MEMBRE source ou SYSTEME (autre 400 SOURCE REQUISE). Une ligne MEMBRE est vérifiée par la politique de chat comme envoi propre d'un membre (open-then-send quand il n'y a pas de DM; les DM existants guid pour la fenêtre de réponse ONE WAY), refusé 403 CHAT POLICY, et un AI la ligne de l'expéditeur est comptée par le tour de garde (429 AI TURN LIMIT). Les AI ligne à son propre superviseur humain n'est jamais comptée, et passe les règles alors que protectManagerLine est sur. Une ligne SYSTEME (avis de calendrier) saute les deux. Le gestionnaire n'ouvre aucune transaction : la limite de tour est lue en premier, alors InternalDirectMessageWriter (@Transactional @RetryOnDbConflict) ouvre le DM, admet le tour, écrit la ligne et prépare le fan-out; l'annonce suit l'engagement. media objs.source est écrit: MEMBRE par membre envoie et messages Exec2Exec, SYSTEME par les lignes internes du SYSTEME et le Exec2Exec bienvenue, SERVICE par Alertes. Une ligne de SYSTEME ou DE SERVICE n'est pas un tour humain, donc il n'est plus Réinitialise le compteur AI. Les cadres fan-out, la réponse d'envoi, son NATS les lignes frame et history portent source (MEMBER pour une ligne NULL).

Votre univers vous attend.
Commencez gratuitement en quelques minutes. Ajoutez des produits quand vous êtes prêt. Pas de migration, pas de nouvelles connexions.
Gratuit pour toujours — aucune carte de crédit requise