チェンジログ
何が新しいの?
プラットフォームのすべての改良 それが出荷される
· SecurityService
チーム・チャーター層 — チーム・サブジェクト、チーム・サブジェクト、チーム・イン・マーカー(KamoCollab CP01 T12)の後、メンバーのチーム
メンバーのチームは、ジョブのタイトルとメンバーの間でチームレイヤーになります。 1つのランクで、下位のタイトルで注文した後、id;チームのロール ROLEレイヤーに参加 1つのインデックスクエリで、スタッフのみが調べられます。 チームのメンバーは、以前と同じくらい正確に解決しません(レイヤーに対してピン留め) 変更されていない積込み機で捕獲される有効な項目;スタンプのハッシュ無し、R1-1)。 TEAMの主題は、その役割を(0をランク)解決し、チームの層は、 ダイアログの未保存のロール、説明、タイトル、アイテム。 チャーター TeamIds(仮説メンバーのチーム)を獲得します。 TeamIds は、404 SUBJECT NOT FOUND であり、そのアイテムのどれも または役割は読みます(焦点を見直して下さい 4)。 憲章ReferenceValidatorは、チームチャーターのアイテムを見つけます:TEAMマーカーは非表示にすることができます 役割、部門および職歴項目、EMBER マーカーはチームを隠すかもしれません 項目、別のorgのチームの項目はSUPPRESS TARGET NOT FOUNDです。 **************************** は、その不明なチームを使用しました レベル; TEAM は cp01:5 でレベルになりましたので、今では PLANET を使用します.
· kamo-internal
「AIチームメンバーからのコール」を1つのプロファイル(SP95 T27)に
人のプロフィールは、その職場でカードを獲得します。 組織の AI チームメンバーは、それらを電話することができ、その 数字。 スイッチは、選択した番号の永続的な同意をオンにします (デフォルトで最初の1つ) またはオフで、別の番号を選択 そこに同意を移動します。両方は新しいBFFを通して一度に救います SecurityService の ai-call-consent ルートのリレー。 同意を残した プロファイルがオフに読み込まれていない番号、「あなたの番号 変更」; 番号のないプロファイルは、最初に尋ねます。 カードは言う チャットでリクエストされたコールは、オフ時にも許可され、再読み込み 会員の記録が他の場所で変更された場合。 セキュリティ管理者は、同僚のカード読み取り専用、キャプションを確認 他人のために、それを変更できるネーミング。 ゲートはあります aiCallsView(自分自身またはMANAGE MEMBER SECURITY、保存された人にある チームメンバー)と aiCallsEdit(自身)、パレット行で.
· kamo-internal
「AIチームメンバーからのコール」を1つのプロファイル(SP95 T27)に
人のプロフィールは、その職場でカードを獲得します。 組織の AI チームメンバーは、それらを電話することができ、その 数字。 スイッチは、選択した番号の永続的な同意をオンにします (デフォルトで最初の1つ) またはオフで、別の番号を選択 そこに同意を移動します。両方は新しいBFFを通して一度に救います SecurityService の ai-call-consent ルートのリレー。 同意を残した プロファイルがオフに読み込まれていない番号、「あなたの番号 変更」; 番号のないプロファイルは、最初に尋ねます。 カードは言う チャットでリクエストされたコールは、オフ時にも許可され、再読み込み 会員の記録が他の場所で変更された場合。 セキュリティ管理者は、同僚のカード読み取り専用、キャプションを確認 他人のために、それを変更できるネーミング。 ゲートはあります aiCallsView(自分自身またはMANAGE MEMBER SECURITY、保存された人にある チームメンバー)と aiCallsEdit(自身)、パレット行で.
· SecurityService
チームサブリソース(メンバー、権利、役割)と再計算エンドポイント(KamoCollab CP01 T11)
メニュー /rights および /roles および POST ******************** (spec §5.7). 読書はあります orgの任意のセッションに開く; 書き込みはCONFIGURE SYSTEMまたはオープンが必要です チームを見上げる前にチェックした神窓。 各PUTはそれを取り替えます TeamWriterによる1つの必須リストは、TeamServiceを実行します。 その後Write と 今すぐ権利を読んでいるようにリストに応答Recalculated: メンバー 参加した者と、チームに所属する権利と役割を左右する者を再計算する メンバー 再計算は {recalculated: n}, 会員数, 何も漏れない500です.
· kamo-internal
SP96 AI の音声カードおよび TTS ピンのないチャーターの VOICE セクション
AIのメンバーのアイデンティティ部屋は、そのボイスカードを獲得します:スピーチごとの1ライン 使うことができるモデル、順番でそれを試してみると、それが話している声で そこで、そのモデルが最初に使われるモデルと、そのモデルが、 性別の音声と、話す次の時間を変更する音声 なぜ。 ビューアAIServiceでは、別の音声(ダイアログ)を選択するように変更できます。 最初に使用したモデルや、どちらでも一度保存 AIServiceのメンバーの声エンドポイントの新しいBFFリレーを通して。 ザ・オブ・ザ・ カードは、保存された性別が変更されたときに再びその声を読みます。 その門、 aiVoiceViewはAIServiceの読み込みルールであり、パレット行を持っています。 チャーターエディタのVOICEセクションはスタイルテキストのみです: TTSピッカー チャーターボイスカタログ(クライエントコールとBFFルート)がなくなり、 セクションでは、音声がプロファイルで選択され、アイテムはまだ ボイスピンの持ち運びは、共有リブとしてフラグが付けられており、それを拒否します.
· kamo-internal
SP96 プロフィールのAIボイスカード、およびTTSピンのないチャーターズボイスセクション
AI会員のアイデンティティールームが音声カードを1ライン獲得 使うことができるモデル、順番でそれを試してみると、それが話している声で そこで、そのモデルが最初に使われるモデルと、そのモデルが、 性別の音声と、話す次の時間を変更する音声 なぜ。 ビューアAIServiceでは、別の音声(ダイアログ)を選択するように変更できます。 最初に使用したモデルや、どちらでも一度保存 AIServiceのメンバーの声エンドポイントの新しいBFFリレーを通して。 ザ・オブ・ザ・ カードは、保存された性別が変更されたときに再びその声を読みます。 その門、 aiVoiceViewはAIServiceの読み込みルールであり、パレット行を持っています。 チャーターエディタのVOICEセクションはスタイルテキストのみです: TTSピッカー チャーターボイスカタログ(クライエントコールとBFFルート)がなくなり、 セクションでは、音声がプロファイルで選択され、アイテムはまだ ボイスピンの持ち運びは、共有リブとしてフラグが付けられており、それを拒否します.
· AIService
チームの名前(KamoCollab CP01 T17)でチームの目的を導きます
TEAM PURPOSE ラインが「{title} チームのメンバーとして」を読んでいます。 ROLE、DEPARTMENT、JOB TITLEなど、ジョブタイトル。 VERSION の滞在 (D19): チームレイヤーがまだあるので、コンパイルする必要はありません.
· SecurityService
TeamController — リスト、作成、読み込み、更新、削除 (KamoCollab CP01 T10)
GET|POST /api/security/teams と GET|PUT|DELETE /api/security/teams/{id} (spec §5.7)。 すべてのハンドラは、呼び出し主を最初に解決します (401 orgなしで); reads は org のどのセッションにも開かれます。conFIGURE SYSTEM や、 神窓を開けて下さい(403 MISSING RIGHTと必須Right)、点検される前に チームを見上げる 非UIDパスID、未知のID、その他のorgのチーム 全部 404 TEAM NOT FOUND TeamWriterのトランザクションで書き込みが実行され、 TeamService.afterWrite を外部に作成・更新 {team(詳細、チャーター項目付き)、権利Recalculated}、削除 {deleted: true, rightRecalculated} です。 RefusalsはTeamErrorsのボディ、チャーターを保ちます refusals のCharterErrors の形状と、データベースが強制する制約 同時保存は、500ではなくリロードを求める409です.
· MediaService
内部DMパスはチャットポリシーとAIターンガードを通過し、すべてのチャットラインはそれを書いたと言います(KamoCollab CP00 T7)
POST ************************ では、ソースの MEMBER または システム(400SOURCE REQUIRED) チャットポリシーでMEMBERラインがチェックされます 既存のDMが存在しない場合、メンバーの送信(オープン・テン・センド)として ONE WAY応答ウィンドウのguid、403 CHAT POLICY、AIを拒否 ターンガード(429 AI TURN LIMIT)で送信者の行がカウントされます。 AIの 自分のスーパーバイザーへの行列は決してカウントされず、ルールを渡します ProtectManagerLine がオンになっています。 システムライン(カレンダー通知)は両方をスキップします。 ハンドラはトランザクションを開きません: ターン制限は最初に読み込まれます。 内部DirectMessageWriter(@Transactional@RetryOnDbConflict)が開きます DMは、ターンを認め、ラインを書き、ファンアウトを準備します。 通知はコミットに従います。 media objs.source が書かれています。メンバーが送信する MEMBER と Exec2Exec 投稿、 内部システムラインおよびExec2Execの歓迎、サービスによるシステム アラート システムやサービスラインは人為ではなく、もう AIカウンターをリセットします。 ファンアウトフレーム、送信応答、NATS フレームと履歴列は、ソースを運ぶ(NULL行のMEMBER).
· kamo-internal
SP96 の雇用形態は AI の性別を要求し、雇用は電話延長またはワークステーションを離れることを可能にします; 人々は任意性を得ます; チェックリストのセットアップ今(SP96 T18)
- AI の採用: 必須の女性/男性選択(採用ボタンはそれのために待ちます)、および 電話延長/ワークステーション スイッチ、両方オン;ペイロードはいつも送ります aiPhoneExtension と aiWorkstation を booleans として、フォームのチェックリスト プレビューリストは、このレンタルがセットアップされるものだけをリストします。 - 人(所有者、2026-10-04):両方のフォームは、オプションの性別を提供します (未指定/女性/男性)を書けるクリエイターに (sexEditAtCreate = sexEdit for new record); 選択した時にのみ送信されます。 - AIコンタクトノートは、独自のメールボックスのみを約束します。 - チェックリストを雇う: NOT REQUESTED AT HIRE は単語で書かれている; スキップされた-at-hire 行のオファー 今、同じ再試行を、独自のトーストで設定します.
· kamo-internal
SP96 の雇用形態は、AI の性別を要求し、雇用は、その携帯電話の拡張またはワークステーションを離れることを可能にします。 人々は、オプションの性別を取得します。 チェックリストのセットアップ 今 (SP96 T18)
- AI の採用: 必要な女性/男性選択(採用ボタンはそれのために待ちます)、および 電話延長/ワークステーション スイッチ、両方オン;ペイロードはいつも送ります aiPhoneExtension と aiWorkstation を booleans として、フォームのチェックリスト プレビューリストは、このレンタルがセットアップされるものだけをリストします。 - 人(所有者、2026-10-04):両方のフォームは、オプションの性別を提供します (未指定/女性/男性)を書けるクリエイターに (sexEditAtCreate = sexEdit for new record); 選択した時にのみ送信されます。 - AIのコンタクトノートは、独自のメールボックスだけを約束します。 - チェックリストを雇う: NOT REQUESTED AT HIRE は単語で書かれている; スキップされた-at-hire 行のオファー 今、同じ再試行を、独自のトーストで設定します.
· MediaService
MediaService は org のグラフをキャッシュし、チャット ポリシーの事実をそこから読み出し、管理されたトラッキングスコープは subtree 全体 (KamoCollab CP02 T17)
MediaService は org グラフの loader と 60 秒のキャッシュを宣言し、リスナー security.orggraph.changed.* でグラフとチャットポリシーを緩和 すべてのPodでスナップショット。 チャットポリシーは、キャッシュされたメンバーの事実をビルドします 独自のクエリの代わりにグラフ。 マーケティングトラッキングの管理されたスコープが今 記録的な活動的ではなく、いかなる深さにおいても、発信者と下にあるすべての人 レポートのTEAMスコープと同じ読み込み.
· KBService
AI会員のメモのスーパーバイザーの読み込みは phi access log (KamoCollab CP00 T8) に書かれています
GET /api/notes/members/{memberId}, .../{noteId}, .../{noteId}/versions 今 共有PhiAccessRecorderを介して、成功した後の読み込みを記録します。 リスト行/ノートにリスト(すべてのレコード)、メモまたはその1 VIEW行 歴史; resourceType Note、発信者のorgとメンバー、目的OfUse メニュー 拒否された読み取り (403, 404) または空のリストは何も書き込みません; VIEW と失敗リスト なので、書き込みの失敗はスーパーバイザーの答えに達しません。 kbservice は PHI ライターを獲得: PhiAuditPersistenceConfig が宣言 **************************************************************************************************************************************** KBServiceApplication は、同じコミットで com.kamo.z.shared.phi.audit をスキャンします。 (2026-08-03 レッスン、KbPhiAuditWiringTest は 2 つを一緒に保持)。 監査のスタンプが発生しました。PhiAccessRecorderは、未スタンプを再構築します。 目的のないイベントOfUse.
· SecurityService
チームドメイン — ワイヤー、バリデーション、ライター、サービス、org-graph継ぎ目 (KamoCollab CP01 T9)
TeamWire は、チーム ボディ トライステート (absent / null / value) を読み込み、TeamValidator タイトル、説明、タイムアウト、ロール、権利(レベルとして正規化)をチェックします。 スタッフのみのメンバーシップ、リード、組織に対するキャップ 何でも書かれています。TeamWriterは、すべてのチームが1つの検索で書いています。 トランザクション、独自のインデックスの下にキーによってロールと権利を置き換える (インサートの前に流暢に削除し、所定の位置に保存されます)。 TeamService は reads と afterWrite を扱います。 独自の取引、チャーターアナウンス、TeamChangeListener for グラフの事実のみ (R1-25). LayerCharterSupport はチームカウントを獲得します。 コメントはありません タスク10.
· kamo-shared-library
古いクエリパス(KamoCollab CP02 T5)の横にある org グラフからメンバーの事実をビルドする
ChatPolicySnapshotLoaderは、LongFunction<OrgGraph>のコンストラクタを獲得しました。 load() は、組織のグラフを MemberFacts に新しいグラフをマップします。 MemberFactsFromGraph は、 org の org の 1 回の負荷でグラフを要求します。 アクティブセット。 ChatPolicyFactsリポジトリのコンストラクタと loadFacts は unchanged;タスク18は、両方のサービスが切り替えられたら、それらを削除します。 **************** は、同じ行を動詞のコピーに送ります 今日の loadFacts と OrgGraphRows へ。 fromSql + OrgGraphBuilder + から MemberFactsFromGraph、2,000以上のランダムなorgsおよび固定ループ、ダンリングおよび 範囲外の場合、2つのマップが等しいとアサートします.
· kamo-shared-library
会員IDによる境界再計算、チームメンバー(KamoCollab CP01 T7)に到達するロール編集
メニュー これらのメンバーを正確に再計算する: id で読む 500のチャンク(組織のメンバーがいない)、それぞれrecalcChunkによるチャンク(the チームレベルはチャンクに一度読み込まれ、変更されたメンバーのみが書かれ、通知されます。 メニュー と繰り返された id は、クエリなしで 0 であり、 1,000 以上の異なる ids をドロップします。 退会し、退会前の退会を行ないます。 updateRoleMemberRightsApplied は、すべてのチームのメンバーが、 役割(TeamIdsByRoleId、findMemberIdsByTeamIdIn)は、それぞれ直接の所有者を決して見つけません すでに読む組織のメンバーから2回、500のチャンクで撮影しました.
· SecurityService
SecurityService の org のグラフ ビーンズ、以降のコミット変更パブリッシャー、リスナー、および 2 つの内部ルート (KamoCollab CP02 T7)
OrgGraphBeanConfig は loader を宣言します (読み込み専用トランザクション) テンプレート 独自の Clock.systemUTC() と 60 s OrgGraphCache 。 OrgGraphChangeパブリッシャー org ごとに 1 つのトランザクションの変更を収集し、完了時にこれを緩和します。 Podのグラフとチャットポリシーと公開 org が 1 回、ロールバックが何も発表し、トランザクションが一度に実行されず、 決して投げません。 OrgGraphEventListenerは、すべてのPodのキャッシュを両立させます イベント OrgGraphInternalController は GET .../org-graph/{orgId} および X-Internal-Auth の背後にある .../{orgId}/pair; 未知の org は空のグラフです.
· kamo-shared-library
Loader、その8つのorg-boundedクエリ、60 sキャッシュ、変更イベント、ワイヤコーデック、部門ヘッドマッピング(KamoCollab CP02 T4)
- OrgGraphFactsRepository (donotmodify.dao.repos): org id で区切られた8つのネイティブクエリ インデックスを通して、ユーザとCP01のチームテーブルがキー(EXPLAIN-verified)にピン留めされます。 - OrgGraphRows.fromSql:小文字のマップを行に、その方向に(未知の列はエンティティティとして読みます) デフォルトでは、ChatPolicySnapshotLoader の数値と boolean ルール)。 - OrgGraphLoader: 読み込みごとの1つの読み取り専用トランザクション。トランザクションの外でtransientDbRetry、1 1つの内部で試みて下さい。 - OrgGraphCache:カフェイン、書き込み後60秒、ほとんどの1,000オーガナイザー、1つの負荷で1つ; new()はそれを迂回します。 - オルググラフイベント: ************************ その体、およびドロップするディスパッチャサブスクリプション malformed の対象になり、ハンドラの失敗が含まれています。 - OrgGraphWire: 内部のスナップショットのマップ(文字列としてのID)とバック、スタンプの誤差で拒否。 - Department.headMemberId(読み取り専用マッピング)、DepartmentDTOヘッドフィールド、TEAM共有Javadocおよび 滝の葉のみコメント.
· kamo-shared-library
チームレベルの権利とセッションタイムアウトの滝 (KamoCollab CP01 T6)
TeamLevels (pure, not bean) は、4つのクエリでメンバーのチームのセットを読みます 会員、チーム、チーム、 それぞれの役割の権利、およびその直接の権利を持つ役割。 チーム全員 会員は、ウォーターフォールの所有による1つのピアレベルに折りたむ addSettingToLevel ルール (GRANTED は NUKE を打ち負かします)、ジョブのタイトルの後オーバーレイ 会員の前に; 強制, 閉鎖とAIガードレールはまだ従います. ザ・オブ・ザ・ セッションタイムアウトが同じレベルを獲得:最も短い非nullチームタイムアウト ジョブのタイトルをオーバーライドし、メンバー自身もオーバーライドします。 スタッフのみ、部署や職名など: 顧客はチームクエリを負担しません。 単一メンバーのパスは1つのメンバーのレベルをロードします。 recalcChunk はチャンクの読み込みをします お問い合わせ 4つのチームリポジトリは任意です。それらなしで、またはメンバーのために チームがないと、すべての滝はまったく前に解決します:T1黄金の滞在 両方のモードで緑色と未編集.
· kamo-internal
AI画面をパスでヘルプ記事にリンクし、プレースホルダ(SP98 T23)を示すAI設定のヒントを修正
- /help-center/<path> (app/help-center/[...path])):記事をで開きます リーダーの知識ベースがヘルプセンターを保持しているとき /kb ( プラットフォーム構成)、読者の他のパブリックヘルプセンター 言語。 ヘルプセンターのクロスリファレンスは同じアドレスを使用します。 普通のスラグのみが受け入れられています。ヘルプセンターに行くもの フロントページ - HelpArticleLink: 同じタブ、 "ヘルプセンターで詳細を学ぶ" または名前付き 主題; 表面のためのインクは坐ります(速い先端のコラムは軽いです いずれかのパレット - リンク: 設定のすべての8タブ > 人工知能、ホストされている コンピュータ > コンピューター、エッセンシャルセットアップ > セキュリティロール、部門 プロフィールのAI部屋およびAI呼出しのコンソールおよび仕事のタイトル。 - セキュリティモデルタブは「セキュリティモデル」を読み込み、そのクイックヒントと 使用法及び概要のそれらは「どんなタイトル」/「理解ボディ」を読みました: 新しいキーからの実質のコピー。 - HELP ARTICLESはテストによってツール/help-center/manifest.jsonに保持されます.
· kamo-internal
AI画面をパスでヘルプ記事にリンクし、プレースホルダ(SP98 T23)を示すAI設定のヒントを修正
- /help-center/<path> (app/help-center/[...path])):記事をで開きます リーダーの知識ベースがヘルプセンターを保持しているとき /kb ( プラットフォーム構成)、読者の他のパブリックヘルプセンター 言語。 ヘルプセンターのクロスリファレンスは同じアドレスを使用します。 普通のスラグのみが受け入れられています。ヘルプセンターに行くもの フロントページ - HelpArticleLink: 同じタブ、 "ヘルプセンターで詳細を学ぶ" または名前付き 主題; 表面のためのインクは坐ります(速い先端のコラムは軽いです いずれかのパレット - リンク: 設定のすべての8タブ > 人工知能、ホストされている コンピュータ > コンピューター、エッセンシャルセットアップ > セキュリティロール、部門 プロフィールのAI部屋およびAI呼出しのコンソールおよび仕事のタイトル。 - セキュリティモデルタブは「セキュリティモデル」を読み込み、そのクイックヒントと 使用法及び概要のそれらは「どんなタイトル」/「理解ボディ」を読みました: 新しいキーからの実質のコピー。 - HELP ARTICLESはテストによってツール/help-center/manifest.jsonに保持されます.
· kamo-internal
AI チームエリア、15 KamoAI 記事、更新された AI と通知記事、およびパブリックサイト(SP98 T23)で動作するリンク
内容(著者、内容下) - AIチーム(AIアシスタント後)と3つのセクションと15 記事: AI チームのメンバーは説明しました, 採用, 監督, チャーター, ジョブテンプレートとペルソナ、承認; 労働力ハブ、すべてをパユース AIのメンバー、ルーティング&予算、AIワークステーション; AI電話呼び出しと ミーティング、チェックリスト、タスク、イベントの繰り返すAIメンバー そしてAIの仕事のブロック、言及およびチャットのAIのメンバー。 ラベルは 画面自体、辞書から。 - AIプロバイダ(AIプロバイダレジストリ)に出荷されたものに更新され、 プロバイダーの追加、MCP サーバー(読み取り専用ツールのみ)、 AI販売代理店(ペルソス)、AIセキュリティモデル、一般的なAI設定、 アクセスポリシー、AI使用、電子メールヘッダーおよび署名(AI) 開示)、3つの通知記事、ボイスメール、および イベントの作成(繰り返し、時間を見つける)。 - 手作りの2つの記事 (843d0291b)は、許可されていないので、 再構築はそれらを反転しました。今、彼らはいます。 パイプライン: - 代わりに /help-center/<path> (lib/paths.mjs) へのリンクをクロスリファレンス 公式サイトの/kb/<guid> の 404 です。 製品の内部 /help-centerのルートは同じ記事を開きます。 - import.mjs: --comma-separatedリスト(最初に親)のみをとります。 --positions はマニフェスト(カテゴリー)とは異なるものだけを移動します --relations-only のセットは、インサートされた 1 つ以下で参照してください。 新しいバージョン。 - 作者の記事の関連: [slugs] 種その参照リンク (lib/related.mjs) と名前のスラグはビルドに失敗しません。 - manifest.json とリレーション.json を再構築します.
· kamo-internal
AI チームエリア、15 KamoAI 記事、更新された AI と通知記事、およびパブリックサイト(SP98 T23)で動作するリンク
内容(著者、内容下) - AIチーム(AIアシスタント後)と3つのセクションと15 記事: AI チームのメンバーは説明しました, 採用, 監督, チャーター, ジョブテンプレートとペルソナ、承認; 労働力ハブ、すべてをパユース AIのメンバー、ルーティング&予算、AIワークステーション; AI電話呼び出しと ミーティング、チェックリスト、タスク、イベントの繰り返すAIメンバー そしてAIの仕事のブロック、言及およびチャットのAIのメンバー。 ラベルは 画面自体、辞書から。 - AIプロバイダ(AIプロバイダレジストリ)に出荷されたものに更新され、 プロバイダーの追加、MCP サーバー(読み取り専用ツールのみ)、 AI販売代理店(ペルソス)、AIセキュリティモデル、一般的なAI設定、 アクセスポリシー、AI使用、電子メールヘッダーおよび署名(AI) 開示)、3つの通知記事、ボイスメール、および イベントの作成(繰り返し、時間を見つける)。 - 手作りの2つの記事 (843d0291b)は、許可されていないので、 再構築はそれらを反転しました。今、彼らはいます。 パイプライン: - 代わりに /help-center/<path> (lib/paths.mjs) へのリンクをクロスリファレンス 公式サイトの/kb/<guid> の 404 です。 製品の内部 /help-centerのルートは同じ記事を開きます。 - import.mjs: --comma-separatedリスト(最初に親)のみをとります。 --positions はマニフェスト(カテゴリー)とは異なるものだけを移動します --relations-only のセットは、インサートされた 1 つ以下で参照してください。 新しいバージョン。 - 作者の記事の関連: [slugs] 種その参照リンク (lib/related.mjs) と名前のスラグはビルドに失敗しません。 - manifest.json とリレーション.json を再構築します.
· EmailService
カレンダーチャットラインはシステムライン(KamoCollab CP00 T5)
MediaChatClient.sendDirect は、メンバーの横にある「ソース」を投稿します。 アイド, toMemberIdとメッセージ: カレンダーの招待状またはキャンセルは通知です 主催者のお名前に書かれているが、主催者の言葉ではなく。 メディアサービス (CP00 タスク 7) は MEDIA OBJS.SOURCE = SYSTEM として保存し、チャットから保存します。 ポリシーとAIがガードをオンにします。その後、未知のキーを無視します。 試験: ********************は4キーボディをピン留めします.
· KlusterServices
Org-graphリスナーは、org-graph変更の対象を購読することができます
KamoCollab CP02 タスク 6A (マスター R1-23、CP-D75)。 セキュリティ サービス公開 ******************************************************************************************** その上で org グラフの evicts をキャッシュします。 NATSユーザが購読できない そのため、すべてのリスナーがサブスクリプション違反とその キャッシュは 60 s TTL だけに悪用されます。 nineの購読許可リストに「security.orggraph.changed.>」を追加します。 リスナーユーザ: svc security, svc media, svc kamoai (CP02), svc kb, svc email、svc voip、svc docs(CP05)、svc mcpgateway(CP07)、svc rag (CP11). svc docs は何も購読していません (deny ">)); 今購読することができます 単独でその主題。 パスワードハッシュ、公開リスト、その他のユーザー変更はありません.
· kamo-shared-library
チャーターレベル。チーム、ジョブのタイトルとメンバー間(KamoCollab CP01 T5)
チームをチャーターレベル(DEFAULT以降、CP03のORGが次なるR1-11) Javadoc では、解決順序が憲章である。 ランク, 決して 宣言順序。 CharterItems.validateは変更を必要としません: TEAMは ROLEもEMBERもないので、仕事のタイトルのルールに従います。 テスト: チームを隠してロックすることができます。すべてのセクションは、TEAMで検証します。 JOB TITLE;仕事のタイトルとメンバー間の2つのピアチームレイヤー(最初に) リスト オーダーは SPECIFIC キーと競合の名前を他の ADDITIVE に勝ちます union, チームは、ジョブタイトル項目を非表示にします, 会員は、チーム項目を隠します, 仲間 L|/I|チームレスチェーンのキャノンのライン スタンプテキストは、メイン(ハッシュピネートなし、R1-1)で撮影された行を等しい。 TEAM レイヤーは独自の行のみを追加します。 CharterEnumsTest は、任意のレベルを名前付けます 注文(R1-11).
· SecurityService
適切なハウスキーピングカバーorg team rights(KamoCollab CP01 T8)
RoleRightsSyncService 名 org team rights リストの3つに、 凍結チェックを解除するたびに、削除された右に命名する行が 削除され、その親を与えられたチームのために分割された権利が確認されます。 dept rights と同じです。 シードのEXISTSガードがキーオン (team id、type)、テーブルのユニークなインデックスなので、チームを重複させない 右またはインデックスを旅行します.
· kamo-internal
設定の電話サーバのアウトバウンドポリシー:新しいエクステンションの呼び出し、および有料ガード(SP93 T14)
FreePBXサーバー上のAIボイスカードは、すでに2つのSP93設定VOIPServiceを獲得 ストア: ブランドの新しい拡張子が外にダイヤルすることを可能にするかどうか、および 4 オプションのトール詐欺ガード(国際、プレミアムレート、高リスクエリアコード、カスタム) prefixes)、911と933がブロックできないという見出しの下。 - V10の全置換PUTが要求するので、すべての保存は、すべての5つを送信します(SP93-T4-3)。 - カスタム接頭辞 VOIPService は拒否されます(1〜15 digits、または 911、933、または開始 いずれかの)何も送信される前に、追加と保存で拒否されます。プレフィックスはタイプされますが、 リストは 25 で停止します。 - FreePBXのダイヤルプランのみが機能するので、Kamo PBXはそれらのどれも見せません。 保存した値を保存(SP93-T14-1)に送ります。 - 発信者のプレビューボックスはテーマトークンをとりますので、暗いテーマはそれを読むことができます.
· kamo-shared-library
純粋なorgグラフコア: OrgGraph、そのビルダー、ノード、関係(KamoCollab CP02 T3)
パッケージcom.kamo.z.shared.org.graph(ピュア、豆なし)、カモコルラボマスター §6.2 および CP02 仕様 §5.2-§5.3: - enums OrgRelationship、CounterpartKind、OrgGraphChangeCause(STRING)、 添付ファイル - OrgNode、OrgDepartment、OrgTeam、OrgGraphRowsの8つのレコード ネストされた行のレコード; - OrgGraphBuilder.build: 部署ツリーとルート・トゥ・リーフ・パス (チャットの) ancestry は逆にしました)、ノード、有効なレベル(D5)、そして OrgGraph.of; - OrgGraph:関係(bはa)、管理チェーン(BFS以上) マネージャーとAIスーパーバイザーエッジ)、ManagerChain(チャットウォーク)、レポート、 派生したチーム、最も低いCommonManager (D9)、outranks (D6、CP-D15)、 効果的なレベル、部門の頭部、チーム リード、部門ManagerCandidates (D12)、24ヘックスコンテンツスタンプ サイクルセーフ。 仕様 §5.3 の期待値表の行ごとにピンをテストします。 org, サイクルケース, 5 s 予算の下の 2,000 個のランダムな形状, 5 不変、スタンプ。 ルーリング CP02-T3-1...5.
· kamo-shared-library
チーム組織、リポジトリ、制限(KamoCollab CP01 T4)
Team(org teams)、TeamMembership(org team members、@IdClass Key)、TeamRole、 TeamRight(RightTypeIdConverterによるタイプ)とTeamCharterItem (team charter items, テキスト列 'text'), スペックを持つ5つのリポジトリ 5.2のメソッドとJPQL、TeamLimits(D11) 表は、 便利なセキュリティサービスのDDL メニュー すべての列、無効性、長さをDDLにテストし、すべてのクエリを解析します。 実際のマッピングに対して(選択したタイプとオブジェクト[]列の形状を含む)、 すべての派生したファインダーを解決し、@IdClass;Hibernate 6.5.3で緑色 車両の6.2.13に.
