コンテンツへ移動
KAMOUniverse

チェンジログ

何が新しいの?

プラットフォームのすべての改良 それが出荷される

  1. · SecurityService

    作成および更新によって親部門を通して下さい

    DepartmentService は、8 つの位置引数の代わりに DTO をリクエストします。 親は同じタイプの列でニンスになるのではなく、ペイロードに参加します 文字列。 変異エンドポイントの Org のスキャッピングは変更されません。親のテナント サイクルガードと一緒に生活を確認してください.

  2. · kamo-internal

    親ピッカーで部門を org チャートとして描画する

    部門タブはフラットリストだったので、操作 > 顧客成功 > オンボーディングは言うまでもなく、それを見る方法がなかった。 Add/edit は、親戚がいるので、名前で置いた、親部門の選択を取得します 操作ではなく構造的。 レンダリング順序でツリーを提供し、無効にします 部門自体とそれの下ですべて - これらは正確に選択肢です サーバは拒否し、常に失敗する選択肢を提供し、提供しないよりも悪くなります。 リストは org-chart Spine になります。 レベルごとの1つの柵のコラム、各丁度1つのアイコン チップの幅が広いので、近くではなく親の破片の中央に列の肘の土地 それ; 最後の子供の柵は、ランニングではなく、角で止まります。 インデントをカウントすることなく、ブランチの終了を表示します。 細胞は縦を運びません パディング - レールは、すべての行で両方のエッジまたはラインブレイクに達する必要があります。 均一破片が何であるので深さは小さいおよびタイプ重量、破片のサイズを、読みます レールジオメトリを正確にします。 列のヘッダーは霜を付けられた棒のオペレータ ラベルになります、 ブランドトークンを無視するハードコードされた青-50/indigo-50/gray-900 を取り替えて下さい。 ツリービルディングは、departmentTree.tsに住んでいるので、awkwardのケースはどこかにある 検査: 親は子供から削除され、トップレベルではなく、 ページを掛けるのではなく、テーブルのレンダリングに辿り着いたサイクル。 失敗した保存はサーバー自身の説明を報告しました。 4xx ボディを落としました ステータスラインの好意で、「部署は自分でできない」 "Bad Request" への親".

  3. · kamo-shared-library

    親部門を親部門の下に置くようにする

    部門は平坦なリストだったので、操作で組織図 > 顧客成功 > オンボーディングは言うまでもなくなかった。 部門は、オプションのセルフレフェレンスを獲得 親; null はまだトップレベルを意味します。これは、すべての既存の行が滞在するものです。 FK カラム ピン カラム 定義 = "UID" 左折、Hibernateコピー 参照された主キーの定義 -- UUID DEFAULT gen random uuid() --に FK なので、 ddl-auto は、ランダムな親を持つすべての行にポップアップ表示 部門とADDのCONSTRAINTを一致させない。 両親の割り当ては、ピッカーだけでなく、サービスで検証されます。 サイクル(提案された親から歩くと、部門が所属していない 別の組織の親である移動)、未知のIDはすべて拒否されます。 部門の削除は、その子を自分の親に昇進させるのではなく、 ダング・ポインターの背後にあるそれらをストランド. ******************** は 8 つではなく DTO をリクエストできるようになりました 位置引数は、避ける価値のニンスを追加したものです.

  4. · kamo-internal

    To/Cc/Bcc フィールドを 3 行に成長し、スクロールします

    コンパスツールウィンドウの受信フィールドは、あるべき1つの nowrap 行だった サイドウェイをドラッグして読み、ウィンドウは幅360pxで、再サイズ化できないので3分の1 アドレスは、すでに視線の外にありました。 彼らは今ラップします: フィールドはチップとして一度に行を成長させます 幅を記入し、3列で止まり、スリムで垂直に貼り付ける スクロールバー。 チップを追加すると、入力を下回るので、注意が見えるようになります。 列の帽子は測定された破片の高さから計算されるピクセル最高高さです従ってそれは常にです 行の境界線に切り込みます。最大化されたコンポーザーとスケール化されたブラウザフォントの両方が移動します。 ラベルとコンタクトボタンが中央に浮かぶのではなく、最初の行にピン 3列ブロックの 今、意味のない `mode` の prop をドロップし、水平にドラッグツースクロールして存在します.

  5. · kamo-internal

    Make org creation survivable, and offer every branding option up front

    The wizard could fail a customer in ways nothing on screen explained, and it asked for a fraction of what Settings → Behavior & Labeling exposes. Creation reliability: - Logo and background uploads went to /api/imaging/upload with assocType "ORG_LOGO" — not an ImageAssocType constant, on an endpoint whose assocType is a numeric ordinal. The parser swallowed the failure and filed them as MY_DOCS, so branding silently never existed. They now use the real org branding endpoints, one call per logo slot. - The creator's phone/email PUT could only ever 403: that endpoint requires session-org to equal the member's org, and the session is still on the parent. Moved onto the create payload. - Post-create warnings were collected, passed to /setup/dns as a query param, and read by nothing. /setup/dns now renders them. - Submit was never re-validated, so clearing the name after reaching Review created an org with a NULL title and alias. - deriveConfigType read the branch type's ALLOWED age ranges instead of the selected one, stamping KIDS_CLUB on adult businesses — which disables email and phone account recovery. - Colour variants were never derived, phone inputs were unbounded against VARCHAR(20), a stale age range 403'd on submit, and a taken domain surfaced as a bare 500. Behavior & Labeling parity — everything except the two mortgage identifiers: website, company contact email, white-label identity, all seven social profiles, the eight custom labels with their inherit-from-parent flags, default language and currency, private-org visibility, background watermark, the three brand-source selectors, and all four logo slots. Two new steps (Labels, Preferences); timezone moves to Preferences beside its siblings. All of it rides on the create payload, not follow-up calls: PATCH /org/{id}/branch-titles has the same session-org check that broke the member update, and one transaction means the answers either all land or none do. Guidance and skippability: Every input has help text grounded in what the value actually does. Only Type and Basics carry required fields, and that is now stated on the step header, in the stepper, on the nav bar, and in the sidebar — with "Skip for now" on every optional step. Also: settings no longer destroys org phone extensions on save, /api/generate-background is no longer an unauthenticated billable proxy, and the org-by-id proxy stops corrupting int64 ids.

  6. · kamo-internal

    会員がから来たエディタのバックボタンを送信する

    壁紙エディタはデッドエンドだった - 方法はありませんが、navレール。 エントリー ポイント(ホームトップバーチップとメンバープロファイルヘッダーショートカット)がスタンプ hrefの起源, エディタは、そのバックピルにそれを解決します。 eyebrow 行: ホームはダッシュボードに戻り、プロファイルはメンバーに戻ります そのページは、それを仮定するのではなく、押されたIDを使用して 壁紙の所有者。 スタンプなしのURLは、このメンバーのプロフィールに戻ります。 fromId は不透明の形状に対してチェックされているため、URL の生成は行いません。 任意のリダイレクトにボタン。 useSearchParams が必要なので、ページ App のルーターの Suspense 境界を要求します得て下さい.

  7. · kamo-internal

    メンバーのプロファイル名の下にプライマリメールボックスを表示

    誰かのプライマリとして保持されるメールボックスは、その人のアドレスです。 「セールスデスク」として — 暫定されたときにラベル付けされたことが起こったことは何でも — 人の代わりにメールボックスに名前を付けます。 autocomplete 行と受信者 同じフィールドを両方読み込んでいるので、両方とも一緒に間違っていた。 ディレクトリは mailbox の displayName の先頭にプライマリMemberName を 取ります。 個人的なメールボックスに割り当てられたMemberName、そのシングルアサインは、 オーナー。 エイリアスと共有メールボックスは、特定のものではなく、 自分の名前。 設定はソースリストなので、バックエンドはソースリストではありません。 まだフィールドを出荷するだけで、 displayName に戻って表示されます.

  8. · EmailService

    保持しているメンバーの後にプライマリメールボックス名

    誰かが主として保持しているメールボックスは、その人のアドレスなので、 メールボックスがプロビジョニング時にラベル付けされたものを提示する— 単にジェーン・ドーの箱のための「セールスデスク」 — 人の名前を誤って オートコンプリートと受取人カードで行います。 listMailboxes は現在、 ************************ 会員様向け org アドレスディレクトリが優先するプライマリ割り当て mailbox 独自の displayName です。 プライマリホルダーのカウントだけ: mailbox は誰か 自分の名前ではなく、自分の名前を保ち、設定だけにアクセスできる テーブルは displayName を任意の方法でレンダーします。 名前の解像度は、AccessibleMailboxService から共有ヘルパーに移動します そのため、2つの面は、メンバーが何を呼び出しているかについて不審にはなりません.

  9. · kamo-internal

    設定のnavとランディングページで手数料ページを登録する

    タブは存在しますが、それらにリンクされていない。 メニュー お問い合わせ すでにこのリポジトリの注意例:カードなしの実際のページ、タブなし URL を入力するだけで、nav エントリーができません。 経理と財務は、独自のセクションであり、それ自体のnavトピックは2つ以上ではなく、 マイアカウントのエントリー サブオプションは自分の門を運ぶので、これらを折りたたみません 口座のゲートを強制的に資金のみの所有者に開放し、それらを示す 彼らが使用できない4つのリンク - 同じ推論は、Fi-complianceを維持します セキュリティトピック。 自分のセクションの財務タブで、マイアカウント ゲートはCONFIGURE SYSTEMだけに戻ります。 パーソナルコミッションカードは、視聴者がチームメンバーであることに調整されます。 タブのゲートを映す。 レンダリングしないタブを開くカード カードがないより悪い.

  10. · kamo-internal

    会員コミッションタブと2つの財務アカウントタブ

    会員タブ(自己のみ、チームメンバーのみ):バランス+レジャー、委託 機会、支払いのセットアップ、および撤退。 口座設定が組織を増加させる ストライプおよびコミッションプロセッサ。 会員タブは、イソセルフと会員タイプにゲートされます。 checkRight は、アクティブな神モードにあるすべてのものに対して真を返します。 canViewOtherMemberアカウントまたは関連のない権利を含む ******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 会員の残高と銀行の情報は、誰にでも保持しています。 「マイペイアウト」ではなく「マイバンク」。 会員は、ほとんどストライプアカウントを持っていません。 OAuth read write が別の方法で管理されたアカウントを拒否した場合に 1 つを添付します。 プラットフォーム。 雇用主のプラットフォームは、支払いのみの受取人アカウントを作成し、 彼らは自分のアイデンティティを検証します。 パネルは、ストライプが収集するものを述べ、ストライプが持っている 彼らとのサポート関係なし、そしてそのお金はおよそ6-8のカレンダー日かかります 到着 - 彼らがその後発見しなければならないもののどれも。 組織ストライプはガイド付きチェックリストであり、フォームではなく、StripeにはAPIがないためです。 コネクトプラットフォームになるため。 ステップ6はヒントではなく、完全な警告を実行します。 ストライプバランスの支払いが自動的に手数料フロートを失うorg リリースジョブが実行される前に、すべての転送は不十分な資金に失敗します それを説明するためのストライプイベントはありません。 お金は終わるべき小節の端であり、数()-ed が選ばれる以外です 色。 負の量は実質的です - 無効な手数料は引きになります - そして、 codebase は 1 つを示すための慣例がないため、エラートーンでレンダーします。 明示的なマイナスとドローチップ。 Sub-tabs は ?sub= に同期します。SettingsView は ?tab= を所有し、全てのタブ変更で書き換えます。 コミッションService が ClusterIP 専用であるため、BFF ルートは存在します。 すべてのサービスは健康であり、すべてのビルドは緑である間、全機能404s.

  11. · kamo-internal

    操作できるフォルダ、選択できるメール

    アクションのフォルダを右クリックします。 メニューヘッダーはクロームではありません。 フォルダ名をつけて、そのライブの未読/トータルが表示されますので、すべての読み込みをマークし、 以降ではなくクリックされる前に空のフォルダを判断できます。 応募不可能な行為は、その理由で無効に表示されています。 未読, フォルダ空の, ビルトインフォルダは、その名前を維持) 代わりに、 メールクロームのために構築された確認でルートを空にして削除します。 アプリ全体の MUI 確認ダイアログは、すべてのタイプのチャレンジワードを要求します 時間; 回復可能な行動への挑戦は、人々をタイプするために訓練するだけ 警告を通して。 そのため、門はメールを破壊する2人のために予約されます outright — フォルダーを削除し、ゴミ箱を空にします。 その結果:他のすべてがゴミ箱に移動し、そう言う。 共有ui-preferencesに格納されているメンバーごとにドラッグ、メンバーごとにフォルダを並べ替え テーブルなので、デバイス間でのアレンジが続きます。 注文は1つです フォルダ名のフラットリスト: 兄弟は互いに比較されます、 そのため、1つのリストはすべてのレベルを注文し、名前を変更または移動するフォルダ 木の腐敗ではなく、その自然な位置に戻ります。 ドロップス レベル全体が無視されます。メールサーバでは、 ソートしない。 メールを選択すると、選択方法が他の場所で動作します。 アンカー、cmd/ctrl-click から範囲を 1 つを選ぶためにシフト クリックします。 そしてアバターは、すべての列を課すのではなく、ホバーのチェックボックスに変わります 恒久的なチェックボックス列で。 浮遊するバーのアクション リストを上回って選択で葉, 代わりにストリップの雑草 リストをすべてのダニで取り上げたクロームに。 また: 管理フォルダのフッターがなくなった — フォルダーの横にあるボタン すでにフォルダーを見出し、リフレッシュボタンがついに四角になります。 CSS はそれ自体ではできない: flex 行では、メインサイズは解決します align-self:stretch の前に項目の高さを与えます、従って aspect-square は持っていました からの幅を導き出す高さ無し。 代わりに行を測定します.

  12. · EmailService

    スクロールしたページだけでなく、フォルダ全体で動作する

    マーク すべての読み込みと空のフォルダは、フォルダ全体の操作クライアントです uids をバッチすることで表現できない: そこにいるページだけを保持する スクロールしたので、4,000の未読のフォルダは80往復かかります。 決して読み込まれないすべてを逃します。 FolderManager が setFolderSeen と emptyFolder を獲得しました。 IMAPパスフリップ 1つのサーバー側の呼び出しにフラグをつけ、実際にメッセージに触れるだけ ターゲットの状態に不一致 — 空白 setFlags はフラグを再書き込み サーバは既にあるし、接続されたクライアントが何も再同期させる。 グラフはバルクに等しいので、フォルダとパッチを歩く。 フィルタシュリンクが進むので、代わりに最初のページを再読み込み paging と $skip, 前のバッチだけをステップオーバーするだろう 結果セットから折り返します。 天井を重ねるのは、無声です。 空中はゴミ箱を特別に保ちます:ゴミ箱は、実際のところ、他のすべての人に公開されています フォルダは、コンテンツをゴミ箱に移動し、回復可能なままにします。 グラフのDELETE すでにそのように振る舞います。そのため、フォルダー名は特別な名前ではありません。 両方とも エンドポイントは、移動したメッセージの数を返すため、UI は "marked 240" を伝えることができます。 "nothing to do" から読み込み、変更イベントのみを公開する 実際に変化する何か.

  13. · SecurityService

    委託機能のブラウザフェーシングリレー

    セッションを解決し、オーガニゼーションとコミッションサービスに承認し、中継 そのセッションからスタンプされたメンバーは、発信者から送られるものはありません。 お問い合わせ 唯一の場所の権利チェック: SecurityService は、任意のリクエスト().permitAll() を実行します。 ハンドロールされたパーハンドラーのauthで、チェックを忘れるエンドポイントが開きます パブリック API リレーを通して到達可能。 3つの権利ではなく、その職務の分離は明白です。 助成金は、手数料を発行しても支払いを解放し、取り消すことができます。 それらをキャッチするために存在している。 マネー・ムービングとペイアウト・デスティネーションの行動は、偽装の下で難しくなります。 公平性は、その拒否なしで、仲裁人としてフルセッションを最小限に 神管理者は、自分の銀行で支払いをポイントし、撤退し、誰かとして入ることができます キャンセル。 組織の所有者は暗黙の所有者です。 ブランドの新しい権利が付与される 誰が機能を有効にできるかを含め、展開する日に誰もいません。 そのため、所有者が機能船の休眠と到達不能を分岐させることなく。 /me/opportunities は、SecurityService が所有しているため、リレーではなくここで提供されます。 機会モデル; それらのリポジトリをコミッションサービスに登録する 1つの共有ライブラリモデルの2つの作家を与えます。 会員の分裂行を解除する 代理店が所有するので、プライマリエージェントである予約で 手数料は1つの側面だけを静かに隠す割れ目行および照会を作り出しません 会員の獲得の半分.

  14. · kamo-shared-library

    独自のコミッションビューでメンバーのコミッションを分割

    Org-scoped は、メンバーだけにキーをつけるのではなく: ORG ID はこれに重複します テーブルなので、 行は id でクロステナントを読み込むことはできません。 無視されたファインダー 静かにそうしないだろう。 「私が獲得する機会」の半分だけ — 予約レベルの手数料は所属しています プライマリエージェントに分割された行を全て生成しないため、呼び出し側はこれをユニオンしなければなりません。 そのエージェントの予約で。 次の呼び出し主がメソッドで文書化した 会員の収益を半減させないビューを発送しません.

  15. · kamo-internal

    会員は、実際のカモデータグリッドを表面にする

    会員のパッケージは、動きのないカードリストでした。これは、残りがどのようにでないかです。 カモのルック。 これは今、家のAGグリッド:保留と完成サブタブ ?sub= に同期し、サーバー側の paging エンドへ (page/size/status は DocsService に達する) 200列のキャップをスライスするのではなく、その行にサイジングするのではなく、ペインを埋める タイトルなし — 設定タブは既に名前をつけます。 状態は灰色の破片としてではなく一目で読みます: 期限は自分自身を運びます 緊急性、および待ち合わせの他および内容変更はの代りに正当な状態です 隠されたもの。 モーションは拘束され、使用にゲートされていますReducedMotion.

  16. · kamo-internal

    「こんにちは」プレフィックスなしでメンバーの名前を表示

  17. · DocsService

    会員の割り当てリストのためのサーバー・サイド・ピアジング

    MAX SIZEを無条件に要求し、結果をスライスしたメンバー表面 ブラウザなので、ページが表示されたグリッドは既に全体をダウンロードしました 雇用の歴史を築き上げる 両方のメンバーの読者はページ/サイズおよびサイズを取っています データベース内のページのリスト。 Spec.status (1 enum) は Spec.statuses (a セット) およびワイヤー変数の滞在になります `status` は、CSV を受け入れるようになりました。 つまり、メンバーのグリッドは、 BUCKET — 作業中の3つのOpen STATES、または4つのターミナルの1つ - 単一評価されたフィルターは1回につき3回の往復なしで表現できません サイトマップ 1 つのトークンは 1 つの要素セットにパースされます。そのため、HR グリッドの既存の status=EXECUTED は、ワイヤのバイト番号で、クライアントの変更は必要ありません。 ログイン リスト内の未知のトークンは、トークンを命名する400で、サイレントに落ちることはありません filter: 全てを示すときにフィルタリングされると主張するコンプライアンスグリッド 最悪の利用可能な結果。 lockPage/clampSizeが公開されているため、メンバーリーダーはSAMEルールを介したクランプが公開されます。 文字通りMAX SIZEを渡すのではなく、HRグリッドとして「paged」 静かに終点すると、無向のものになります。 listMine は paging を自由に転送します 再配達するので、クランプは一度存在します。 正規化は非接触であり、テストピン: 会員エンドポイントは、 MemberGuarded() + LegalAssignmentOwnership, HRエンドポイントはガード() + LegalPackageAccess と 3 つの新しい @RequestParams は、名前をつけて 正確にステータス/ページ/サイズ — この表面が安全である理由は何もない 人の名前に。 スキーマの変更はありません。 新規事業はありません。 mvn -o テスト: 391 テスト, 0 失敗, 0 エラー (was 379).

  18. · kamo-internal

    パーソナルメール通知カードは通知タブを置き換えます

    どちらのスイッチは、パスワードカードと同じ形のマイプロファイルに移動します。 1枚のカード、アイコンタイル 1列あたりのテキストのヘルプと、静かな時間だけ表示される小さなインセット。 ヘッダーの編集なし ボタン — スイッチは、タブが行なったと正確に、自身を保存します。 一部のメンバーが間違っているので、メールがどこにあるかをカードがリードします。通知は USERアカウントのアドレスに、カード名、メールボックスにこのアドレスに送らない 組織はそれらを割り当てました - 彼らが読むためにサインインしなければならないメールボックス、それは非常にことです 通知は、それらが行うことを伝えています. SecurityService は、そのアドレスをメンバーにのみ返します。 属するので、注意は無名のフォームに戻ります。 チームメンバーのみ: 記者は内部チャットとサポートチケットを提供しています。 お問い合わせ 好みのルートが私と誰かの他の誰かにあるので、自在である これらのスイッチは、管理者の静かな時間を編集します.

  19. · SecurityService

    会員プロフィールでユーザーアカウントのメールを公開

    プロフィールの個人的なメール通知カードは、住所の欠落したメッセージ通知を名前付ける必要があります 実際にアクセスし、そのアドレスはユーザーアカウントです。つまり、その横にある `email` フィールドではなく、 この組織がメンバーを割り当てたメールボックス。 セッションが自身のメンバーの行を読んだときにのみ返されます。 個人的な住所は何かではありません 管理者は同僚のプロファイルを収集し、他の発信者はそれを望む理由はありません.

  20. · kamo-internal

    経理と財務許可グループと財務権によるアカウント設定へのアクセス

    SecurityRoleManager にのみアクセスセキュリティと管理グループが存在しています。 インラインネームリストとして、 JobTitleManager, DepartmentManager, RolesPermissionsTab lumped all serviceType-less を全般に。 4番目のコピーを追加するよりもむしろ、 グループ定義は、パーミッションGroups.ts に移動し、すべての 4 個のエディタが読み込みます。 is GeneralPermission は重要な理由です: !serviceType 単独でフィルタリング 全体的に2回、そして1回、自分自身で刻まれたアウトをレンダリングする 2つの独立したトグルを置くセクション。 MemberPermissionsTabは意図的に非接触です - その概要の権限リスト 実際の権利データではなく、ハードコードされた読み取り/書き込み/削除/adminモックです。 /settings/account およびそのランディングセクションでは、財務の権利も認めています。 MANAGE ORG FINANCESのみを保持するコントローラーは、それ以外の場合はリダイレクトされます 直接 /settings に戻ります。 2 の 1 つだけを広まることはページを残します URL で到達可能だが、 nav で見えない.

  21. · InitializerService

    手数料レジャーとストライプペイアウトテーブルの移行

    ミラーcom.kamo.z.shared.commission. ddl-auto はこれらをから作成します とにかく注釈; explicit DDLは家会議であり、 ダースン・エンティティティティ・クラスを越えるのではなく、一か所でレビュー可能な形状です。 COMMISSION STRIPE WEBHOOK EVENT は (ORG ID, STRIPE EVENT ID) にキーが入ります。 イベントIDのみ。 すべての組織は、独自のStripe Connectプラットフォームを実行します。 イベント ID は 1 つのアカウント内でのみユニークでなければなりません。 LOAN STRIPE WEBHOOK イベント ビードのキーは、その理由だけ安全です 機能には、単一のStripeアカウントがあります。 すべての9つのテーブルとすべてのユニークなガードは、現在検証されています.

  22. · SecurityService

    すべてのブランチモデルのADMINISTRATORテンプレートに財務権をシード

    以前に存在しなかった3つのコミッションの権利ゲートは、 NEW RIGHT SEEDSは意図的にそれらについて何も言う - そのメカニズムは、 既存の助成金が先に進むので、デプロイは黙ってREMOVESアクセスをなくし、それを使用しません ここは、決して持っていなかった人々 にお金の移動力を渡します。. 代わりに必要なのは、ロールタイプのデフォルトで、存在しない。 2つの部品: - テンプレートSeedSetting 資金を付与する DefaultRoleType の過負荷を得るため ADMINISTRATORテンプレートのみの権利。 GRANTED ではなく FORCE GRANTED: org は 会員の管理者からお金を取り消すことができます プロファイル、および FORCE GRANTED は、滝の後にレイヤーをオーバーライドします。 - SecureRoleTypeTemplates は 1 つの欠けているモデルの ADMINISTRATOR 行を作成します。 デフォルトルールの行はレイジーで、モデルのデフォルトを保存したときにのみ作成されます。 そして、syncSecurityModelRoleRightsは、そのテーブルを反復します。 デフォルトは、決してカスタマイズされていないものを除き、すべてのブランチモデルに適用されます。 静かに、そしてそれらが最も可能性が高いのは、as-isに頼る.

  23. · kamo-shared-library

    チームメンバーのコミッションレジャーとストライプペイアウトドメイン

    Com.kamo.z.shared.commissionを追加します。: 付属の署名付きレジャー, パーメンバー 並行出金をシリアライズするために純粋に存在するバランスの列、 コミッション プロセッサーのバッチ/ライン項目モデル、および/org の縞は接続します 支払いの実体。 維持する価値のある3つの決定: - レジャーは、付属専用であり、Java(@PreUpdate/@PreRemove)で強制されます。 スロー)。 @Column(updatable=false) は、Hibernate が列を省略するだけ UPDATEは書き込みが失敗しないので、ストール補正が見える 成功しました。 修正は行を逆転させます。 - 利用可能なvs pendingは、ステートマシンではなく、EFFECTIVE AT上のクエリです。 ツイート 翌月の成熟度で今日発行された手数料は、その上で利用可能な移動 つまり、スイープが存在しないので、保留中のお金に失敗し、送金することができません。 - COMMISSION MEMBER BALANCEは建設によってレジャーと冗長です。 それは、 残高が集計され、SELECT FOR UPDATEがロックできないため存在 総計; 1列なしでPESSIMISTIC WRITEを、2つの同時取ります 両方の出金は、独自の流暢なチェックを渡します。 お金は、全体的にNUMERIC(19,4)であり、org idsは、代わりにINT8カラムをプレーン 金融レコードのアウトライブメンバーのチャルン、ORG ID が重複しているという関連付け 子行に 1 列の fetch がクロステナントを読み込みません。 また、財務面に3つの権利(187-189)を追加します。 それらは分割されるので 職務の分離は明白です:問題のある人 手数料はペイアウトを解放し、そこに存在するホールドをキャンセルすることもできます それらをキャッチ. serviceType は、null を非適度に - 新しい ServiceType はグループ これらは、アプリのセクションだけなので、エディタなしで自動的にレンダリングします。 orgがそのアプリが有効になっているときに表示されます。 KamoInitializerによって加えられるScheema;プロットで示されるすべての9つのテーブルは現われます kamoアプリユーザの全ての特権を持ちます.

  24. · kamo-internal

    パスワードカードにMFAをフォールドし、サインインセキュリティタブをドロップ

    2つの場所は1つの質問を聞きました。私はこのアカウントにどのようにアクセスするか — なので、2番目の要因は今住んでいる マイプロファイルのパスワードの横に、カードで「パスワードとマルチファクター認証」を修飾しました。 入学の流れは、タブから ************************ に移動します。 クロムフリーなので ページではなく行としてレンダリングします。: ステータス ピル, 番号付き QR/secret と 1 つのインセットのコード ステップ, そして同じ不明確な回復コード ダイアログ。 カードヘッダは今それを編集ボタンを持っていません パスワード行は、独自の「パスワード変更」を持ち、2つの独立したアクションを所有しています。 「ターンオン」 MFA は、タブがいた理由だけに自在にとどまります: SecurityService の MFA エンドポイントは、ユーザを解決します caller のセッションからユーザパラメーターを使わないので、他の人のプロファイルの管理者は 自分の認証者を登録する。 パスワード変更はより広い(MANAGE MEMBER SECURITY、神)なので、 その行だけはそこにレンダリングします。 パスワード状態はパスワードのSecurityCardに移動します。これにより、デッドブランチを途中で固定します。 古いカード *translated*のパスワードエラーを英語のリテラルに比べ、「現在のパスワードが間違っている」 所属するフィールドに決して到達しません。 エラーはフィールドを処理します.

  25. · kamo-internal

    Org独自のメールボックス、エイリアス、共有メールボックスを提案

    受信者のオートコンプリートは、連絡先とアドレスが切れているだけを認識し、 Sentフォルダなので、組織のアドレスは、すべて管理されます ******************** — メモリから入力する必要がありました。 新しい GET /api/email/directory ファン 4 つのメールサービス ソースの背後にある そのページを 1 つの重複したアドレスリストを返します。 サーバ側の集計 それぞれの呼び出しは、独自のワンタイムキーを消費します。ブラウザから、 コンポーザーが開いているたびに4つのOTKラウンドトリップ。 各ソースは、その上で劣化します 独自に、プロバイダーがまだそのエイリアスを得ていないので、そのオーガニゼーションをしている。 リストは、メモリにキャッシュされ、ローカルにマッチします。 orgs には、これらが10つあります。 数千、およびキーストロークごとのクエリパラメータは、ネットワークのラウンドトリップを 提案の前に、ブラウザは既に回答することができます。 したがって、塗料にマッチする コンタクトとSent-folderのルックアップがフライト中でもすぐに、 それらはドロップダウンを導きます:それは小さい厳密なセットであり、内部アドレスはそれです また、連絡先帳に連絡先カードではなく、メールボックスとして読む必要があります。 [設定] でメールボックスを編集すると、キャッシュがドロップされますので、新しいアドレスが提案されます リロードなし。 emailServiceのベースURLとフォワードヘルパーは、キャッチオールのルートから抜け出すので、 新しいルートは OTK を 2 番目のコピーを保持するのではなく、同じ方法に mints します.

  26. · kamo-internal

    1つのメールボックスビューとすべてのリストにある列

    会話/クラシックトグルが消え、すべてのメンバーが取得 クラシックリスト。 会話ビューは、独自のリスト、独自のスレッドを保有 同じを読むための2番目の方法のためのペインと独自の API 表面 mail — 全て削除され、 localStorage モードとともに ブラウザごとに記憶されます。 リストの列のヘッダはそれに行きました。 フォルダ名、そのアイコン、 それの下の記述およびリフレッシュ ボタンはクロムの6つの縁でした 高さを望んでいたリストの上に、フォルダツリーはすでに述べています フォルダが開きます。 検索とフィルターパネルがフォルダに移動 フォルダラベルの上のサイドバーなので、リスト列は何もありませんが、 リスト。 更新ボタンはメールボックスのスイッチャーの横に戻ります 四角: ボタンの行とアスペクト スクエアのアイテム ストレッチ 高さは、スイッチャーとその幅は高さを追跡します。 座って 単一メールボックスカードの横に、ドロップダウンのないメンバー リフレッシュを失わない。 フィルタは1つの列にドロップします。2つはサイドバイサイドを選択し、 320pxのサイドバー。 SMTP 専用プロバイダーにはフォルダーのサイドバーがないので、 検索パネルは消えるのではなく、リストの上にとどまります。 削除された表面のためのストリングは、すべての22のローカルからスクラブクされます kamo-translation-dictionary (61fdfcf, 最初にプッシュ). スレッドDetail from/to/cc/noContent 滞在 — リード コミュニケーション タブはそれらをレンダリングします.

  27. · SecurityService

    パートナメント・ロースターの連絡先メールを公開

    インタラクション・センターは、メンバーのアドレスをコンポーザーのプレフィルメント、 一つを運んだ唯一のエンドポイントは、シングルメンバーのディテールフェッチでした。 目に見える行ごとの要求。 EmbEmail は、メンバーの行に roster を埋め込む すでに読み込まれているので、ここには費用はかかりず、N+1を取り除きます.

  28. · kamo-internal

    直接メンバーにメールを送る

    行のアクションドックは、チャット、ミーティング、ダイヤル、プロフィールを開くことができます。 メールが届かないので、メールで同僚に届く パネルを離れ、コンポーザーを開き、アドレスを再入力する。 コンポーザーツールウィンドウを開く他の人と一緒にメールボタンを追加します。 すでに To フィールドにメンバーがいます。 アドレスは、 by-departmentのペイロード(EmbEmailはメンバーの行にあるため、追加費用はかかりません。 クエリ) は 1 列詳細フェッチではなく、モジュール/右ゲートは 1行ではなくNavTopPanelで一度解決しました.

  29. · DaemonService

    毎日の法的パッケージリマインダーティック

    DaemonService は、DocsService ができないため、ティックを所有しています。 デーモンサービス ストラテジー:Recreate — 古いポッドは、新しいポッドが始まる前になくなっているので、デプロイ 窓は二重火炎できません。 DocsService は RollingUpdate maxSurge:1 なので、 @Scheduled はおそらくできます: すべてのロールアウトの長さのために 2 つのポッドがあります そして、両方とも13時です。 出力したジョブは、すべての上書きにメールをかける プラットフォーム上の従業員は、「通常は一度」プロパティではありません。 それはまた私達を与えます @DisallowConcurrentExecution, JobTriggerControllerのマニュアルトリガーとcron DocsService を再デプロイせずに調整可能。 LeadEmailSweepJob でモデル化され、ロードベアリングの部分を含む stylistic よりも: デフォルトの RestTemplate は FOREVER を待ちます。そのため、 Wedged DocsService @DisallowConcurrentExecution の下のこの糸をピン留め、スイープを停止します Podが再起動するまで、無声で無期限に、正確に「いいえ」のように見える リマインダーが原因でした。 タイムアウトは明示的です。 DocsInternalAuthFilter の値 DocsInternalAuthFilter 内部.auth.secret (public-chat) バリデーション — MLOS の内部シークレットではなく、異なる値と 403s すべての呼び出し、修正ステワード通知とVoipGlobalSyncJobの両方が必要。 毎日、時折ない:バケツは日の機能です、従って時機を得たダニは24xです ほとんどの 1 つの余分送りおよび 24x の送風半径のための交差組織スキャン。 なし configmap 変更 — docs ベース URL と cron の両方が動作デフォルトを実行します.

  30. · DocsService

    期限付きリマインダーとバッチ付き、読み取り専用スイープ

    バケツは(dueDate、今日)の純粋な機能であり、決して「私達が去った時 send": 設定されたオフセットの UPCOMING D{n}, DUE TODAY, その後 PAST DUE P{floor(daysOverdue/インターバル)}. 9日目に5回スイープを実行 したがって、1つの Bucket を yield し、レジャークレームはそれを重複するものです。 どこでも状態が記憶されます。 オフセットはデータです。クラスで何も知りません 番号3。 過去最高期間のデフォルトは0にUNLIMITEDを意味します。 決定#4は、過去デューのリマインダー再発とサイレントキャップが正確に見えると述べています ほとんどのメンバーを追いかける必要を放棄している間、作業は広がります。 cutoff は、今日 + max(upcomingDays) + 1 ではありません(): リポジトリの述語 beFORE なので、今() のカットオフは上行と全体だけを見つける 梯子の後半は火を発さないだろう。 スライスごとの1つの短い読み取り専用トランザクション、各バッチを完全に材料化 プレーンレコード — 組織とメンバーはLAZYなので、fqdn、ラベル、 name とアドレスは内部で解決されます。トランザクションは CLOSED です。 最初の送信の前に。 emailService の send は HTTP をブロックして SMTP をブロックします。 そしてバッチはすべての往復の長さのためのHikariの関係を開けます では、WOPIのサービスも提供しています。 sweep は ZERO の書き込みを実行します。 シリアライズリトリートはできず、デッドロックは不可 ウィザードに対して、その行をミュートしないため、ピュアは安定しています お問い合わせ DryRunは解決し、カウントし、何も主張しません。ドライラン クレームは、検査した全ての Bucket をバーンし、サイレントで実行を抑制します。 レコーダーは、変更されていないディスパッチの横にあるディスパッチを割り当てます。 LegalReminderSweepResultDtoは既に主張され、失敗し、単一の送信された カウントはそれらを埋めることができません:再実行で「400の0を宣言」は正しい、健康です 回答と「要求400、送信された0」はオナージュであり、デーモンログはできる それらを分けて言うために.

君の宇宙は待ってる

数分で無料で開始できます。準備ができたらいつでも製品を追加できます。移行も新しいログインも不要です。

クレジットカード不要