Merge pull request #80 feature-NEWDWH2021-560 into develop-6crm
This commit is contained in:
commit
9a511af10b
@ -11,7 +11,7 @@ def backup_crm_csv_data_process(target_object: TargetObject, execute_datetime: E
|
||||
|
||||
Args:
|
||||
target_object (TargetObject): 取得対象オブジェクト情報インスタンス
|
||||
execute_datetime (ExecuteDateTime): 実行日次取得インスタンス
|
||||
execute_datetime (ExecuteDateTime): 実行日時取得インスタンス
|
||||
csv_string (str): csvデータ
|
||||
|
||||
Raises:
|
||||
|
||||
@ -12,7 +12,7 @@ def backup_crm_data_process(target_object: TargetObject, sf_object_dict: dict, e
|
||||
Args:
|
||||
target_object (TargetObject): 取得対象オブジェクト名
|
||||
sf_object_dict (dict): Salesforceオブジェクトデータ
|
||||
execute_datetime (ExecuteDateTime): 実行日次取得インスタンス
|
||||
execute_datetime (ExecuteDateTime): 実行日時取得インスタンス
|
||||
|
||||
Raises:
|
||||
FileUploadException: S3のファイルアップロード失敗
|
||||
|
||||
@ -10,7 +10,7 @@ def check_object_info_process(object_info: dict, execute_datetime: ExecuteDateTi
|
||||
|
||||
Args:
|
||||
object_info (dict): 取得対象オブジェクト情報
|
||||
execute_datetime (ExecuteDateTime): 実行日次取得インスタンス
|
||||
execute_datetime (ExecuteDateTime): 実行日時取得インスタンス
|
||||
|
||||
Raises:
|
||||
InvalidConfigException: オブジェクト情報定義が不正だった場合
|
||||
|
||||
@ -1,13 +1,22 @@
|
||||
from src.system_var.constants import (
|
||||
COLUMNS_KEY, COLUMNS_TYPE, DATE_PATTERN_YYYYMMDDTHHMMSSTZ,
|
||||
DATETIME_COLUMN_DEFAULT_VALUE, DATETIME_COLUMN_KEY, DATETIME_COLUMN_TYPE,
|
||||
DATE_PATTERN_EXPECTED_YYYYMMDDTHHMMSSTZ, IS_SKIP_KEY, IS_SKIP_TYPE,
|
||||
IS_UPDATE_LAST_FETCH_DATETIME_KEY, IS_UPDATE_LAST_FETCH_DATETIME_TYPE,
|
||||
LAST_FETCH_DATETIME_FILE_NAME_KEY, LAST_FETCH_DATETIME_FILE_NAME_TYPE,
|
||||
LAST_FETCH_DATETIME_FROM_KEY, LAST_FETCH_DATETIME_FROM_TYPE,
|
||||
LAST_FETCH_DATETIME_TO_KEY, LAST_FETCH_DATETIME_TO_TYPE, OBJECT_NAME_KEY,
|
||||
OBJECT_NAME_TYPE, OBJECTS_KEY, OBJECTS_TYPE, UPLOAD_FILE_NAME_KEY,
|
||||
UPLOAD_FILE_NAME_TYPE)
|
||||
from src.system_var.constants import (COLUMNS_KEY, COLUMNS_TYPE,
|
||||
DATE_PATTERN_EXPECTED_YYYYMMDDTHHMMSSTZ,
|
||||
DATE_PATTERN_YYYYMMDDTHHMMSSTZ,
|
||||
DATETIME_COLUMN_DEFAULT_VALUE,
|
||||
DATETIME_COLUMN_KEY,
|
||||
DATETIME_COLUMN_TYPE, IS_SKIP_KEY,
|
||||
IS_SKIP_TYPE,
|
||||
IS_UPDATE_LAST_FETCH_DATETIME_KEY,
|
||||
IS_UPDATE_LAST_FETCH_DATETIME_TYPE,
|
||||
LAST_FETCH_DATETIME_FILE_NAME_KEY,
|
||||
LAST_FETCH_DATETIME_FILE_NAME_TYPE,
|
||||
LAST_FETCH_DATETIME_FROM_KEY,
|
||||
LAST_FETCH_DATETIME_FROM_TYPE,
|
||||
LAST_FETCH_DATETIME_TO_KEY,
|
||||
LAST_FETCH_DATETIME_TO_TYPE,
|
||||
OBJECT_NAME_KEY, OBJECT_NAME_TYPE,
|
||||
OBJECTS_KEY, OBJECTS_TYPE,
|
||||
UPLOAD_FILE_NAME_KEY,
|
||||
UPLOAD_FILE_NAME_TYPE)
|
||||
from src.util.dict_checker import DictChecker
|
||||
from src.util.execute_datetime import ExecuteDateTime
|
||||
|
||||
@ -119,10 +128,12 @@ class LastFetchDatetime():
|
||||
def __validate(self) -> None:
|
||||
self.__dict_checker.assert_key_exist(LAST_FETCH_DATETIME_FROM_KEY)
|
||||
self.__dict_checker.assert_data_type(LAST_FETCH_DATETIME_FROM_KEY, LAST_FETCH_DATETIME_FROM_TYPE)
|
||||
self.__dict_checker.assert_match_pattern(LAST_FETCH_DATETIME_FROM_KEY, DATE_PATTERN_YYYYMMDDTHHMMSSTZ,DATE_PATTERN_EXPECTED_YYYYMMDDTHHMMSSTZ)
|
||||
self.__dict_checker.assert_match_pattern(LAST_FETCH_DATETIME_FROM_KEY, DATE_PATTERN_YYYYMMDDTHHMMSSTZ,
|
||||
DATE_PATTERN_EXPECTED_YYYYMMDDTHHMMSSTZ)
|
||||
if self.__dict_checker.check_key_exist(LAST_FETCH_DATETIME_TO_KEY):
|
||||
self.__dict_checker.assert_data_type(LAST_FETCH_DATETIME_TO_KEY, LAST_FETCH_DATETIME_TO_TYPE)
|
||||
self.__dict_checker.assert_match_pattern(LAST_FETCH_DATETIME_TO_KEY, DATE_PATTERN_YYYYMMDDTHHMMSSTZ,DATE_PATTERN_EXPECTED_YYYYMMDDTHHMMSSTZ)
|
||||
self.__dict_checker.assert_match_pattern(LAST_FETCH_DATETIME_TO_KEY, DATE_PATTERN_YYYYMMDDTHHMMSSTZ,
|
||||
DATE_PATTERN_EXPECTED_YYYYMMDDTHHMMSSTZ)
|
||||
return
|
||||
|
||||
@property
|
||||
|
||||
@ -71,7 +71,7 @@ def _fetch_crm_data(fetch_target_objects: FetchTargetObjects, execute_datetime:
|
||||
|
||||
Args:
|
||||
fetch_target_objects (FetchTargetObjects): CRMオブジェクト情報インスタンス
|
||||
execute_datetime (ExecuteDateTime): 実行日次取得インスタンス
|
||||
execute_datetime (ExecuteDateTime): 実行日時取得インスタンス
|
||||
process_result (dict): 取得処理実行結果辞書オブジェクト
|
||||
|
||||
Returns:
|
||||
@ -80,10 +80,12 @@ def _fetch_crm_data(fetch_target_objects: FetchTargetObjects, execute_datetime:
|
||||
|
||||
for object_info in fetch_target_objects:
|
||||
try:
|
||||
# 1.処理結果出力用のマップの初期化
|
||||
process_result[object_info.get(OBJECT_NAME_KEY)] = 'fail'
|
||||
|
||||
_fetch_crm_data_per_object(object_info, execute_datetime)
|
||||
|
||||
# 16.処理結果出力用のマップの更新
|
||||
process_result[object_info.get(OBJECT_NAME_KEY)] = 'success'
|
||||
|
||||
except MeDaCaCRMDataFetchException as e:
|
||||
@ -105,35 +107,35 @@ def _fetch_crm_data_per_object(object_info: dict, execute_datetime: ExecuteDateT
|
||||
|
||||
Args:
|
||||
object_info (dict): 取得対象オブジェクト情報
|
||||
execute_datetime (ExecuteDateTime): 実行日次取得インスタンス
|
||||
execute_datetime (ExecuteDateTime): 実行日時取得インスタンス
|
||||
"""
|
||||
|
||||
# 1. オブジェクト処理結果の初期化
|
||||
# 2. 対象オブジェクト情報の内容をログに出力する
|
||||
logger.debug(f'D-CTRL-04 対象のオブジェクト情報を出力します オブジェクト情報:[{object_info}]')
|
||||
|
||||
# 2. オブジェクト情報形式チェック処理を呼び出す
|
||||
# 3. オブジェクト情報形式チェック処理を呼び出す
|
||||
logger.info('I-CTRL-05 オブジェクト情報形式チェック処理呼び出し')
|
||||
|
||||
target_object = check_object_info_process(object_info, execute_datetime)
|
||||
target_object_name = target_object.object_name
|
||||
|
||||
# 3. 処理対象のオブジェクト名をログ出力する
|
||||
# 4. 処理対象のオブジェクト名をログ出力する
|
||||
logger.info(
|
||||
f'I-CTRL-06 [{target_object_name}]のデータ取得を開始します')
|
||||
|
||||
# 4. オブジェクト情報.is_skipがTrueの場合、次のオブジェクトの処理に移行する
|
||||
# 5. オブジェクト情報.is_skipがTrueの場合、次のオブジェクトの処理に移行する
|
||||
if target_object.is_skip is True:
|
||||
logger.info(
|
||||
f'I-CTRL-07 [{target_object_name}]のデータ取得処理をスキップします')
|
||||
return
|
||||
|
||||
# 5. データ取得期間設定処理を呼び出す
|
||||
# 6. データ取得期間設定処理を呼び出す
|
||||
logger.info(
|
||||
f'I-CTRL-08 [{target_object_name}]のデータ取得期間設定処理呼び出し')
|
||||
|
||||
last_fetch_datetime = set_datetime_period_process(target_object, execute_datetime)
|
||||
|
||||
# 6. CRMデータ取得処理を呼び出す
|
||||
# 7. CRMデータ取得処理を呼び出す
|
||||
logger.info(
|
||||
f'I-CTRL-09 [{target_object_name}]のデータ取得処理呼び出し')
|
||||
|
||||
@ -145,41 +147,41 @@ def _fetch_crm_data_per_object(object_info: dict, execute_datetime: ExecuteDateT
|
||||
f'I-CTRL-22 [{target_object_name}]のレコード件数が0件のため、ファイルアップロードをスキップします')
|
||||
return
|
||||
|
||||
# 7. 出力ファイル名をログ出力する
|
||||
# 8. 出力ファイル名をログ出力する
|
||||
logger.info(
|
||||
f'I-CTRL-10 [{target_object_name}] の出力ファイル名は [{target_object.upload_file_name}] となります')
|
||||
|
||||
# 8. CRM電文データバックアップ処理を呼び出す
|
||||
# 9. CRM電文データバックアップ処理を呼び出す
|
||||
logger.info(
|
||||
f'I-CTRL-11 [{target_object_name}] CRM電文データバックアップ処理呼び出し')
|
||||
backup_crm_data_process(target_object, crm_data_response, execute_datetime)
|
||||
|
||||
# 9. CSV変換処理を呼び出す
|
||||
# 10. CSV変換処理を呼び出す
|
||||
logger.info(
|
||||
f'I-CTRL-12 [{target_object.object_name}] CSV変換処理呼び出し')
|
||||
csv_string = convert_crm_csv_data_process(target_object, crm_data_response)
|
||||
|
||||
# 10. CSVバックアップ処理を呼び出す
|
||||
# 11. CSVバックアップ処理を呼び出す
|
||||
logger.info(
|
||||
f'I-CTRL-13 [{target_object_name}] CSVデータバックアップ処理呼び出し')
|
||||
backup_crm_csv_data_process(target_object, execute_datetime, csv_string)
|
||||
|
||||
# 11. CSVアップロード処理を呼び出す
|
||||
# 12. CSVアップロード処理を呼び出す
|
||||
logger.info(
|
||||
f'I-CTRL-14 [{target_object_name}] CSVデータアップロード処理呼び出し')
|
||||
copy_crm_csv_data_process(target_object, execute_datetime)
|
||||
|
||||
# 12. メモリ解放
|
||||
# 13. メモリ解放
|
||||
del crm_data_response
|
||||
del csv_string
|
||||
gc.collect()
|
||||
|
||||
# 13. 前回取得日時ファイル更新処理を呼びだす
|
||||
# 14. 前回取得日時ファイル更新処理を呼びだす
|
||||
logger.info(
|
||||
f'I-CTRL-15 [{target_object_name}] 前回取得日時ファイル更新処理呼び出し')
|
||||
upload_last_fetch_datetime_process(target_object, last_fetch_datetime)
|
||||
|
||||
# 14. オブジェクトのアップロードが完了した旨をログに出力する
|
||||
# 15. 1オブジェクトのアップロードが完了した旨をログに出力する
|
||||
logger.info(f'I-CTRL-16 [{target_object_name}] 処理正常終了')
|
||||
|
||||
return
|
||||
|
||||
@ -12,7 +12,7 @@ def copy_crm_csv_data_process(target_object: TargetObject, execute_datetime: Exe
|
||||
|
||||
Args:
|
||||
target_object (TargetObject): 取得対象オブジェクト情報インスタンス
|
||||
execute_datetime (ExecuteDateTime): 実行日次取得インスタンス
|
||||
execute_datetime (ExecuteDateTime): 実行日時取得インスタンス
|
||||
|
||||
Raises:
|
||||
FileUploadException: S3のファイルアップロード失敗
|
||||
|
||||
@ -19,7 +19,7 @@ def prepare_data_fetch_process():
|
||||
|
||||
Returns:
|
||||
fetch_target_objects : CRMオブジェクト情報インスタンス
|
||||
execute_datetime : 実行日次取得インスタンス
|
||||
execute_datetime : 実行日時取得インスタンス
|
||||
process_result : 取得処理実行結果辞書オブジェクト
|
||||
"""
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@ def set_datetime_period_process(target_object: TargetObject, execute_datetime: E
|
||||
|
||||
Args:
|
||||
target_object (TargetObject): 取得対象オブジェクト情報インスタンス
|
||||
execute_datetime (ExecuteDateTime): 実行日次取得インスタンス
|
||||
execute_datetime (ExecuteDateTime): 実行日時取得インスタンス
|
||||
|
||||
Raises:
|
||||
FileNotFoundException: S3上のファイルが存在しない場合
|
||||
|
||||
@ -162,7 +162,7 @@ class TestController:
|
||||
assert self.mock_convert_crm_csv_data_process.call_count == 3, 'CSV変換処理が複数回実行されること'
|
||||
assert self.mock_backup_crm_csv_data_process.call_count == 3, 'CSVバックアップ処理が複数回実行されること'
|
||||
assert self.mock_copy_crm_csv_data_process.call_count == 3, 'CSVアップロード処理が複数回実行されること'
|
||||
assert self.mock_upload_last_fetch_datetime_process.call_count == 3, '前回取得日次ファイル更新処理が複数回実行されること'
|
||||
assert self.mock_upload_last_fetch_datetime_process.call_count == 3, '前回取得日時ファイル更新処理が複数回実行されること'
|
||||
assert self.mock_upload_result_data_process.called is True, '取得処理実施結果アップロード処理が1回のみ実行されること'
|
||||
assert self.mock_upload_result_data_process.call_count == 1, '取得処理実施結果アップロード処理が1回のみ実行されること'
|
||||
|
||||
|
||||
@ -239,7 +239,8 @@
|
||||
"MSJ_Evaluation_Comment__c",
|
||||
"Position_vod__c",
|
||||
"Talk_Title_vod__c",
|
||||
"MSJ_Attendee_Reaction__c"
|
||||
"MSJ_Attendee_Reaction__c",
|
||||
"MSJ_Registration__c"
|
||||
],
|
||||
"is_skip": false,
|
||||
"is_update_last_fetch_datetime": true
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user