makabe.t 0b7d979fae Merged PR 375: API実装(ワークタイプID追加API)
## 概要
[Task2516: API実装(ワークタイプID追加API)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/2516)

- ワークタイプ追加APIとテストを実装しました。
  - オプションアイテムも一緒に追加されるように実装しています。
  - ワークタイプの制限のためにカスタムバリデータを実装しています。

## レビューポイント
- 追加時のエラー処理は適切か
- バリデータは適切か

## UIの変更
- なし

## 動作確認状況
- ローカルで確認
2023-09-04 07:08:19 +00:00

241 lines
4.1 KiB
TypeScript

/**
* 階層
* @const {number}
*/
export const TIERS = {
//OMDS東京
TIER1: 1,
//OMDS現地法人
TIER2: 2,
//代理店
TIER3: 3,
//販売店
TIER4: 4,
//エンドユーザー
TIER5: 5,
} as const;
/**
* 音声ファイルをEast USに保存する国リスト
* @const {number}
*/
export const BLOB_STORAGE_REGION_US = ['CA', 'KY', 'US'];
/**
* 音声ファイルをAustralia Eastに保存する国リスト
* @const {number}
*/
export const BLOB_STORAGE_REGION_AU = ['AU', 'NZ'];
/**
* 音声ファイルをNorth Europeに保存する国リスト
* @const {number}
*/
export const BLOB_STORAGE_REGION_EU = [
'AT',
'BE',
'BG',
'HR',
'CY',
'CZ',
'DK',
'EE',
'FI',
'FR',
'DE',
'GR',
'HU',
'IS',
'IE',
'IT',
'LV',
'LI',
'LT',
'LU',
'MT',
'NL',
'NO',
'PL',
'PT',
'RO',
'RS',
'SK',
'SI',
'ZA',
'ES',
'SE',
'CH',
'TR',
'GB',
];
/**
* 管理ロール
* @const {string[]}
*/
export const ADMIN_ROLES = {
ADMIN: 'admin',
STANDARD: 'standard',
} as const;
/**
* ロール
* @const {string[]}
*/
export const USER_ROLES = {
NONE: 'none',
AUTHOR: 'author',
TYPIST: 'typist',
} as const;
/**
* ライセンス注文状態
* @const {string[]}
*/
export const LICENSE_ISSUE_STATUS = {
ISSUE_REQUESTING: 'Issue Requesting',
ISSUED: 'Issued',
CANCELED: 'Order Canceled',
};
/**
* ライセンス種別
* @const {string[]}
*/
export const LICENSE_TYPE = {
TRIAL: 'TRIAL',
NORMAL: 'NORMAL',
CARD: 'CARD',
} as const;
/**
* ライセンス状態
* @const {string[]}
*/
export const LICENSE_ALLOCATED_STATUS = {
UNALLOCATED: 'Unallocated',
ALLOCATED: 'Allocated',
REUSABLE: 'Reusable',
DELETED: 'Deleted',
} as const;
/**
* 切り替え元種別
* @const {string[]}
*/
export const SWITCH_FROM_TYPE = {
NONE: 'NONE',
CARD: 'CARD',
TRIAL: 'TRIAL',
} as const;
/**
* ライセンスの期限切れが近いと見なす日数のしきい値
* @const {number}
*/
export const LICENSE_EXPIRATION_THRESHOLD_DAYS = 14;
/**
* ライセンスの有効期間
* @const {number}
*/
export const LICENSE_EXPIRATION_DAYS = 365;
/**
* カードライセンスの桁数
* @const {number}
*/
export const CARD_LICENSE_LENGTH = 20;
/**
* 音声ファイルに紐づくオプションアイテムの数
* @const {string}
*/
export const OPTION_ITEM_NUM = 10;
/**
* 文字起こしタスクのステータス
* @const {string[]}
*/
export const TASK_STATUS = {
UPLOADED: 'Uploaded',
PENDING: 'Pending',
IN_PROGRESS: 'InProgress',
FINISHED: 'Finished',
BACKUP: 'Backup',
} as const;
/**
* タスク一覧でソート可能な属性の一覧
*/
export const TASK_LIST_SORTABLE_ATTRIBUTES = [
'JOB_NUMBER',
'STATUS',
'ENCRYPTION',
'AUTHOR_ID',
'WORK_TYPE',
'FILE_NAME',
'FILE_LENGTH',
'FILE_SIZE',
'RECORDING_STARTED_DATE',
'RECORDING_FINISHED_DATE',
'UPLOAD_DATE',
'TRANSCRIPTION_STARTED_DATE',
'TRANSCRIPTION_FINISHED_DATE',
] as const;
/**
* タスク一覧のソート条件(昇順・降順)
*/
export const SORT_DIRECTIONS = ['ASC', 'DESC'] as const;
/**
* 通知タグの最大個数
* NotificationHubの仕様上タグ式のOR条件で使えるタグは20個まで
* https://learn.microsoft.com/ja-jp/azure/notification-hubs/notification-hubs-tags-segment-push-message#tag-expressions
*/
export const TAG_MAX_COUNT = 20;
/**
* 通知のプラットフォーム種別文字列
*/
export const PNS = {
WNS: 'wns',
APNS: 'apns',
};
/**
* ユーザーのライセンス状態
*/
export const USER_LICENSE_STATUS = {
NORMAL: 'Normal',
NO_LICENSE: 'NoLicense',
ALERT: 'Alert',
RENEW: 'Renew',
};
/**
*トライアルライセンスの有効期限(日数)
* @const {number}
*/
export const TRIAL_LICENSE_EXPIRATION_DAYS = 30;
/**
* ライセンスの発行数
* @const {number}
*/
export const TRIAL_LICENSE_ISSUE_NUM = 100;
/**
* worktypeの最大登録数
* @const {number}
*/
export const WORKTYPE_MAX_COUNT = 20;
/**
* worktypeのDefault値の取りうる値
**/
export const OPTION_ITEM_VALUE_TYPE = {
DEFAULT: 'Default',
BLANK: 'Blank',
LAST_INPUT: 'LastInput',
} as const;