maruyama.t f0d71937e3 Merged PR 780: データ変換ツール(汚いデータ対応版)の作成+動作確認
## 概要
[Task3776: データ変換ツール(汚いデータ対応版)の作成](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/3776)

綺麗なデータ対応版のレビュー指摘も合わせて修正。
一旦OMDS様よりいただいた1万件~のデータを処理できることは確認済みです。
実装コストとバグの入れ込みを懸念し、有効期限が"9999/12/31"のデータは最初にデータを積む段階で除外するようにしました。

## レビューポイント
- メールアドレス重複チェックについて、想定通りの重複対象を検索出来ているか。
- step3の1.アカウントとユーザが同じ場合
adminMainとuserEmailが重複していた場合に、重複していたユーザーは削除し、アカウントのみを残す(accountユーザーのroleとauthorIdは削除したuserに設定されていたものとする)処理は妥当か。
→accountのIFにroleとauthorIdを追加し、register側のcreateAccountで登録するようにしています。

## 動作確認状況
- ローカルで確認(Account_transition_2024.1.19.csvで実施)
4つのJSONファイルができていることを確認。
Countryの場合の付け替えができていることを確認。
adminMainとemailが重複している場合の重複削除ができていることを確認。

## 補足
- 登録ツールと共通のパラメータで動作するようにしました。
例)
POST:
localhost:8280/transfer
Body:
{
    "inputFilePath": "./data/"
}

 変換ツールの使い方としてはAccount_transition.jsonというファイルを見るようにしています。
2024-02-27 06:24:41 +00:00

407 lines
7.9 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 階層
* @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 USER_ROLE_ORDERS = [
USER_ROLES.AUTHOR,
USER_ROLES.TYPIST,
USER_ROLES.NONE,
] as string[];
/**
* ライセンス注文状態
* @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;
/**
* タイムゾーンを加味したライセンスの有効期間8時間
* @const {number}
*/
export const LICENSE_EXPIRATION_TIME_WITH_TIMEZONE = 8;
/**
* カードライセンスの桁数
* @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_EXPIRY_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;
/**
* オプションアイテムのタイプ文字列と数値の対応
**/
export const OPTION_ITEM_VALUE_TYPE_NUMBER: {
type: string;
value: number;
}[] = [
{
type: OPTION_ITEM_VALUE_TYPE.BLANK,
value: 1,
},
{
type: OPTION_ITEM_VALUE_TYPE.DEFAULT,
value: 2,
},
{
type: OPTION_ITEM_VALUE_TYPE.LAST_INPUT,
value: 3,
},
];
/**
* ADB2Cユーザのidentity.signInType
* @const {string[]}
*/
export const ADB2C_SIGN_IN_TYPE = {
EMAILADDRESS: "emailAddress",
} as const;
/**
* MANUAL_RECOVERY_REQUIRED
* @const {string}
*/
export const MANUAL_RECOVERY_REQUIRED = "[MANUAL_RECOVERY_REQUIRED]";
/**
* 利用規約種別
* @const {string[]}
*/
export const TERM_TYPE = {
EULA: "EULA",
DPA: "DPA",
PRIVACY_NOTICE: "PrivacyNotice",
} as const;
/**
* 音声ファイルのフォーマット
* @const {string}
*/
export const USER_AUDIO_FORMAT = "DS2(QP)";
/**
* ユニットテスト実行をしている場合のNODE_ENVの値
* @const {string[]}
*/
export const NODE_ENV_TEST = "test";
/**
* ユーザに対するライセンスの状態
* @const {string[]}
*/
export const USER_LICENSE_STATUS = {
UNALLOCATED: "unallocated",
ALLOCATED: "allocated",
EXPIRED: "expired",
} as const;
/**
* typeの取りうる値移行元CSV)
* @const {string[]}
*/
export const MIGRATION_TYPE = {
ADMINISTRATOR: "Administrator",
BC: "BC",
COUNTRY: "Country",
CUSTOMER: "Customer",
DEALER: "Dealer",
DISTRIBUTOR: "Distributor",
USER: "USER",
} as const;
/**
* 移行先の名称と移行元の値
* @const {string[]}
*/
export const COUNTRY_LIST = [
{ value: "CA", label: "Canada" },
{ value: "KY", label: "Cayman Islands" },
{ value: "US", label: "United States" },
{ value: "AU", label: "Australia" },
{ value: "NZ", label: "New Zealand" },
{ value: "AT", label: "Austria" },
{ value: "BE", label: "Belgium" },
{ value: "BG", label: "Bulgaria" },
{ value: "HR", label: "Croatia" },
{ value: "CY", label: "Cyprus" },
{ value: "CZ", label: "Czech" },
{ value: "DK", label: "Denmark" },
{ value: "EE", label: "Estonia" },
{ value: "FI", label: "Finland" },
{ value: "FR", label: "France" },
{ value: "DE", label: "Germany" },
{ value: "GR", label: "Greece" },
{ value: "HU", label: "Hungary" },
{ value: "IS", label: "Iceland" },
{ value: "IE", label: "Ireland" },
{ value: "IT", label: "Italy" },
{ value: "LV", label: "Latvia" },
{ value: "LI", label: "Liechtenstein" },
{ value: "LT", label: "Lithuania" },
{ value: "LU", label: "Luxembourg" },
{ value: "MT", label: "Malta" },
{ value: "NL", label: "Netherlands" },
{ value: "NO", label: "Norway" },
{ value: "PL", label: "Poland" },
{ value: "PT", label: "Portugal" },
{ value: "RO", label: "Romania" },
{ value: "RS", label: "Serbia" },
{ value: "SK", label: "Slovakia" },
{ value: "SI", label: "Slovenia" },
{ value: "ZA", label: "South Africa" },
{ value: "ES", label: "Spain" },
{ value: "SE", label: "Sweden" },
{ value: "CH", label: "Switzerland" },
{ value: "TR", label: "Turkey" },
{ value: "GB", label: "United Kingdom" },
];
/**
* recording_modeの取りうる値移行元CSV)
* @const {string[]}
*/
export const RECORDING_MODE = {
DS2_QP: "DS2 (QP)",
DS2_SP: "DS2 (SP)",
DSS: "DSS",
} as const;
/**
* AutoIncrementの初期値
* @const {number}
*/
export const AUTO_INCREMENT_START = 853211;
/**
* 移行データ登録時のsleep間隔
* @const {number}
*/
export const MIGRATION_DATA_REGISTER_INTERVAL_MILLISEC = 13;