o
    i                     @   sx   d Z ddlZddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 e  dd ZdddZdd Zdd ZdS )u  
Slack通知ユーティリティモジュール

このモジュールは、Slackへのメッセージ送信とファイル送信機能を提供します。

推奨使用方法:
- メッセージ送信: send_slack_message(message, webhook_url)
- ファイル送信: send_slack_file(file_path, message, channel_id, title)

既存の関数は互換性のために残されていますが、
新しいコードでは上記の汎用関数を使用することを推奨します。
    N)datetime)load_environment_variables)	WebClient)SlackApiErrorc                 C   s,   ddi}d| i}t j||t|d}|jS )u   
    汎用Slackメッセージ送信関数
    
    Args:
        message: 送信するメッセージ
        webhook_url: WebhookのURL環境変数キー
    
    Returns:
        Slack APIからのレスポンス
    zContent-Typezapplication/jsontext)headersdata)requestspostjsondumpsr   )messagewebhook_urlr   r   response r   8/var/www/html/status_management/src/services/my_slack.pysend_slack_message   s   r   C052Z37SWAVFile Uploadc              
   C   s   z-t d}t|d}t j| std|  d|j| |||d}|d td |W S  t	yJ } ztd|j
d	   W Y d
}~d
S d
}~ww )un  
    汎用Slackファイル送信関数
    
    Args:
        file_path: 送信するファイルのパス
        message: ファイルと一緒に送信するメッセージ
        channel_id: 送信先チャンネルID（デフォルト: C052Z37SWAV）
        title: ファイルのタイトル
    
    Returns:
        Slack APIからのレスポンス
    PROD_SLACK_BOT_TOKEN)tokenz	The file z does not exist.)filetitlechannelinitial_commentr   zFile uploaded successfully.zSlack API Error: errorN)osgetenvr   pathexistsFileNotFoundErrorfiles_upload_v2getprintr   r   )	file_pathr   
channel_idr   slack_tokenclientr   er   r   r   send_slack_file)   s&   


r)   c              	   C   Z   t jt jt jt jt}| d}t d}| d| d}t|| ddS Nz/myapp/apis/file/status_historyz%Y-%m-%dz	/history_z.csvr   zToday's Status Management File	r   r   dirnameabspath__file__r   nowstrftimer)   r   current_directoryfolder_name	timestampr$   r   r   r   send_slack_api_fileM   
   $
r6   c              	   C   r*   r+   r,   r2   r   r   r    send_slack_api_file_individuallyV   r7   r8   )r   r   )__doc__r   r	   r   r   config.load_envr   	slack_sdkr   slack_sdk.errorsr   r   r)   r6   r8   r   r   r   r   <module>   s    
$	