Changes
12 changed files (+201/-0)
-
-
@@ -6,6 +6,7 @@package yamori.worker.v1; import "yamori/work_record/v1/work_record_filter.proto"; import "yamori/worker/v1/paid_leave_provision_filter.proto"; import "yamori/worker/v1/worker_id.proto"; import "yamori/worker/v1/worker_read_mask.proto"; import "yamori/workspace/v1/workspace_id.proto";
-
@@ -22,4 +23,7 @@ WorkerReadMask read_mask = 3;// ok.work_records の取得対象。 yamori.work_record.v1.WorkRecordFilter work_record_filter = 4; // ok.paid_leave_provisions の取得対象。 PaidLeaveProvisionFilter paid_leave_provision_filter = 5; }
-
-
-
@@ -6,6 +6,7 @@package yamori.worker.v1; import "yamori/work_record/v1/work_record_filter.proto"; import "yamori/worker/v1/paid_leave_provision_filter.proto"; import "yamori/worker/v1/worker_read_mask.proto"; import "yamori/workspace/v1/workspace_id.proto";
-
@@ -18,4 +19,7 @@ WorkerReadMask read_mask = 2;// ok.workers.work_records の取得対象。 yamori.work_record.v1.WorkRecordFilter work_record_filter = 3; // ok.workers.paid_leave_provisions の取得対象。 PaidLeaveProvisionFilter paid_leave_provision_filter = 4; }
-
-
-
@@ -0,0 +1,41 @@// SPDX-FileCopyrightText: 2024 Shota FUJI <pockawoooh@gmail.com> // SPDX-License-Identifier: AGPL-3.0-only edition = "2023"; package yamori.worker.v1; import "google/protobuf/timestamp.proto"; import "yamori/type/v1/date.proto"; message PaidLeaveProvision { // 付与日。 yamori.type.v1.Date provided_at = 1; // 失効日。 yamori.type.v1.Date expires_at = 2; // 付与された年次有給休暇の日数。 int32 amount_days = 3; // 付与された年次有給休暇の残日数。 int32 remaining_days = 4; // 年次有給休暇の半日取得を行った際のもう半日分が余っているかどうか。 // 半日分も含めた残日数は以下のようにして計算できる。 // ``` // a = 0.5 if is_halved_day_remaining // 0 otherwise // x = remaining_days + a // ``` bool is_halved_day_remaining = 5; // 付与が行われた日時。 google.protobuf.Timestamp created_at = 6; // 内容の最終更新日時。 google.protobuf.Timestamp updated_at = 7; // この付与に関するメモ。 string note = 8; }
-
-
-
@@ -0,0 +1,22 @@// SPDX-FileCopyrightText: 2024 Shota FUJI <pockawoooh@gmail.com> // SPDX-License-Identifier: AGPL-3.0-only edition = "2023"; package yamori.worker.v1; import "yamori/type/v1/date.proto"; message PaidLeaveProvisionFilter { // 付与日がこの日付と同じかそれ以降の付与に限定する。 yamori.type.v1.Date provided_at_since = 1; // 付与日がこの日付と同じかそれ以前の付与に限定する。 yamori.type.v1.Date provided_at_until = 2; // 失効日がこの日付と同じかそれ以降の付与に限定する。 yamori.type.v1.Date expires_at_since = 3; // 失効日がこの日付と同じかそれ以前の付与に限定する。 yamori.type.v1.Date expires_at_until = 4; }
-
-
-
@@ -0,0 +1,24 @@// SPDX-FileCopyrightText: 2024 Shota FUJI <pockawoooh@gmail.com> // SPDX-License-Identifier: AGPL-3.0-only edition = "2023"; package yamori.worker.v1; import "yamori/type/v1/date.proto"; message PaidLeaveProvisionInput { // [必須] 付与日。キーとなるため同日の付与履歴がある場合は上書きをする。 yamori.type.v1.Date provided_at = 1; // 失効日。未指定の場合は provided_at の 2 年後。 yamori.type.v1.Date expires_at = 2; // 付与する年次有給休暇の日数。 // 負数は 0 として扱われるが、将来的に変わる可能性もあるため指定しないこと。 // 0 (未指定) の場合は付与しなかったことになり、既存の付与履歴を削除する。 int32 amount_days = 3; // この付与に関するメモ。 string note = 4; }
-
-
-
@@ -0,0 +1,12 @@// SPDX-FileCopyrightText: 2024 Shota FUJI <pockawoooh@gmail.com> // SPDX-License-Identifier: AGPL-3.0-only edition = "2023"; package yamori.worker.v1; message PaidLeaveProvisionInputMask { // 書き込む `PaidLeaveProvisionInput` のフィールド番号。 // `provided_at` は必須のため未指定でも読まれる。 repeated int32 fields = 1; }
-
-
-
@@ -0,0 +1,11 @@// SPDX-FileCopyrightText: 2024 Shota FUJI <pockawoooh@gmail.com> // SPDX-License-Identifier: AGPL-3.0-only edition = "2023"; package yamori.worker.v1; message PaidLeaveProvisionReadMask { // 出力に含める yamori.worker.v1.PaidLeaveProvision のフィールド番号。 repeated int32 fields = 1; }
-
-
-
@@ -0,0 +1,33 @@// SPDX-FileCopyrightText: 2024 Shota FUJI <pockawoooh@gmail.com> // SPDX-License-Identifier: AGPL-3.0-only edition = "2023"; package yamori.worker.v1; import "yamori/capability/v1/capability_key.proto"; import "yamori/worker/v1/paid_leave_provision_input.proto"; import "yamori/worker/v1/paid_leave_provision_input_mask.proto"; import "yamori/worker/v1/paid_leave_provision_read_mask.proto"; import "yamori/worker/v1/worker_id.proto"; import "yamori/workspace/v1/workspace_id.proto"; message ProvidePaidLeaveRequest { // [必須] 対象労働者が所属するワークスペースの ID 。 yamori.workspace.v1.WorkspaceID workspace_id = 1; // [必須] 対象労働者の ID 。 WorkerID worker_id = 2; // [必須] 対象労働者に年次有給休暇を付与するためのキー。 yamori.capability.v1.CapabilityKey provide_paid_leave_key = 3; // [必須] 付与する年次有給休暇。 PaidLeaveProvisionInput paid_leave = 4; // `paid_leave` に対してかけるフィールドマスク。 PaidLeaveProvisionInputMask write_mask = 5; // ProvidePaidLeaveResponse.ok にかけるマスク。 PaidLeaveProvisionReadMask read_mask = 6; }
-
-
-
@@ -0,0 +1,34 @@// SPDX-FileCopyrightText: 2024 Shota FUJI <pockawoooh@gmail.com> // SPDX-License-Identifier: AGPL-3.0-only edition = "2023"; package yamori.worker.v1; import "yamori/error/v1/capability_error.proto"; import "yamori/error/v1/missing_field_error.proto"; import "yamori/error/v1/not_found.proto"; import "yamori/error/v1/system_error.proto"; import "yamori/worker/v1/paid_leave_provision.proto"; message ProvidePaidLeaveResponse { message OK { PaidLeaveProvision paid_leave_provision = 1; } oneof result { OK ok = 1; // システムエラーが発生した。 yamori.error.v1.SystemError system_error = 2; // 必須フィールドに値が入っていないため作成されなかった。 yamori.error.v1.MissingFieldError missing_field = 3; // 権限がない、もしくはキーが不正。 yamori.error.v1.CapabilityError capability_error = 4; // 指定されたワークスペースもしくは労働者が存在しない、アクセスできない。 yamori.error.v1.NotFound not_found = 5; } }
-
-
-
@@ -7,6 +7,7 @@ package yamori.worker.v1;import "yamori/capability/v1/capability_key.proto"; import "yamori/work_record/v1/work_record.proto"; import "yamori/worker/v1/paid_leave_provision.proto"; import "yamori/worker/v1/worker_id.proto"; // 被雇用の労働者を表す。
-
@@ -19,6 +20,12 @@// 勤怠記録。 repeated yamori.work_record.v1.WorkRecord work_records = 3; // 年次有給休暇の付与記録。 repeated PaidLeaveProvision paid_leave_provisions = 5; // 勤怠記録を更新するためのキー。 yamori.capability.v1.CapabilityKey write_work_record_key = 4; // 年次有給休暇をこの労働者に付与するためのキー。 yamori.capability.v1.CapabilityKey provide_paid_leave_key = 6; }
-
-
-
@@ -6,6 +6,7 @@package yamori.worker.v1; import "yamori/work_record/v1/work_record_read_mask.proto"; import "yamori/worker/v1/paid_leave_provision_read_mask.proto"; // Worker を出力する際のフィールドマスク。 message WorkerReadMask {
-
@@ -14,4 +15,7 @@ repeated int32 fields = 1;// work_records の各要素にかけるマスク。 yamori.work_record.v1.WorkRecordReadMask work_records_mask = 2; // paid_leave_provisions の各要素にかけるマスク。 PaidLeaveProvisionReadMask paid_leave_provisions_mask = 3; }
-
-
-
@@ -11,6 +11,8 @@ import "yamori/worker/v1/get_request.proto";import "yamori/worker/v1/get_response.proto"; import "yamori/worker/v1/list_request.proto"; import "yamori/worker/v1/list_response.proto"; import "yamori/worker/v1/provide_paid_leave_request.proto"; import "yamori/worker/v1/provide_paid_leave_response.proto"; import "yamori/worker/v1/write_work_record_request.proto"; import "yamori/worker/v1/write_work_record_response.proto";
-
@@ -26,4 +28,7 @@ rpc Create(CreateRequest) returns (CreateResponse);// 労働者の勤怠記録を更新する。 rpc WriteWorkRecord(WriteWorkRecordRequest) returns (WriteWorkRecordResponse); // 労働者に年次有給休暇を付与する。 rpc ProvidePaidLeave(ProvidePaidLeaveRequest) returns (ProvidePaidLeaveResponse); }
-