# モジュールロード import os import sys from datetime import datetime import src.pre as pre # データ取得準備処理 import src.chk as chk # オブジェクト情報形式チェック処理 import src.date as date # データ取得期間設定処理 import src.fetch as fetch # CRMデータ取得処理 import src.resbk as resbk # CRM電文データバックアップ処理 import src.conv as conv # CSV変換処理 import src.csvbk as csvbk # CSVバックアップ処理 import src.upld as upld # CSVアップロード処理 import src.upd as upd # 前回取得日時ファイル更新 import src.end as end # 取得処理実施結果アップロード処理 from src.utils.logger import Logger import src.utils.data_retention as data_retention # 変数 # logger設定 logger = Logger().get_logger() # 処理 def main() -> None: """コントロール処理 各処理を呼び出すコントローラー """ try: # ① CRMデータ取得処理開始ログを出力する logger.info('I-CTRL-01 CRMデータ取得処理を開始します') # ② データ取得準備処理を呼び出す try: logger.info('I-CTRL-02 データ取得準備処理呼び出し') crm_object_info_var = data_retention.CrmObjectInfoVar() crm_object_info_dict, execute_datetime, process_result_per_object = pre( crm_object_info_var) except Exception as e: logger.error('') raise CustomException(e) # ③ object_infoのobjectsキーの値の件数分ループする logger.info('I-CTRL-03 取得対象オブジェクトのループ処理開始') for object_info in crm_object_info_dict.get('objects'): try: # 1. オブジェクト情報形式チェック処理を呼び出す logger.info('I-CTRL-04 オブジェクト情報形式チェック処理呼び出し') try: chk() except Exception as e: logger.error('') # 2. 処理対象のオブジェクト名をログ出力する logger.info('I-CTRL-05 ') # 3. オブジェクト情報.is_skipがTrueの場合、次のオブジェクトの処理に移行する logger.info('I-CTRL-06 ') # 4. データ取得期間設定処理を呼び出す logger.info('I-CTRL-07 ') try: except Exception as e: logger.error('') # 5. CRMデータ取得処理を呼び出す logger.info('I-CTRL-08 ') try: except Exception as e: logger.error('') # 6. CRMデータのジェネレータをループする # 6-1. 出力ファイル名を生成する logger.info('I-CTRL-10 ') try: except Exception as e: logger.error('') # 6-2. CRM電文データバックアップ処理を呼び出す logger.info('I-CTRL-11 ') try: except Exception as e: logger.error('') # 6-3. CSV変換処理を呼び出す logger.info('I-CTRL-12 ') try: except Exception as e: logger.error('') # 6-4. CSVバックアップ処理を呼び出す logger.info('I-CTRL-13 ') try: except Exception as e: logger.error('') # 6-5. CSVアップロード処理を呼び出す logger.info('I-CTRL-14 ') try: except Exception as e: logger.error('') # 7. 前回取得日時ファイル更新処理を呼びだす logger.info('I-CTRL-15 ') try: except Exception as e: logger.error('') # 8. 1オブジェクトのアップロードが完了した旨をログに出力する logger.info('I-CTRL-16 ') except GetObjectException as e: logger.error( '[取得対象のオブジェクト名] の[処理名]でエラーが発生しました 次のオブジェクトの処理に移行します') except Exception as e: logger.error( '[取得対象のオブジェクト名] の処理中に予期せぬエラーが発生しました 次のオブジェクトの処理に移行します') # ④ すべてのオブジェクトの処理が完了したことと、オブジェクト毎の処理結果をログに出力する try: logger.info(f'I-CTRL-17 すべてのオブジェクトの処理が終了しました 実行結果:[{実行結果JSON}]') except Exception as e: logger.error('') raise CustomException() # ⑤ 取得処理実施結果アップロード処理を呼び出す try: logger.info('I-CTRL-18 CRM_取得処理実施結果ファイルアップロード処理開始') except Exception as e: logger.error('') raise CustomException() # ⑥ CRMデータ取得処理終了ログを出力する try: logger.info('I-CTRL-19 CRMデータ取得処理を終了します') except Exception as e: logger.error('') raise except CustomException as e: logger.error('I-ERR-01 [処理名]でエラーが発生したため、処理を終了します') except Exception as e: logger.error('I-ERR-02 予期せぬエラーが発生したため、処理を終了します') # カスタムExceptionクラス class CustomException(Exception, metaclass=ABCMeta): def __init__(self, id, arg): self.arg = arg self.id = id class GetObjectException(CustomException): pass if __name__ == '__main__': main()