package cn.nianxx.thhotel.platform.message.service;

import cn.nianxx.thhotel.platform.message.common.request.SourceMessageOriginalAccessRequest;
import cn.nianxx.thhotel.platform.message.common.result.SourceMessageOriginalResponse;
import java.util.Optional;

/**
 * SourceMessage 原文读取服务。该服务负责权限口令校验、原文读取和访问审计。
 */
public interface SourceMessageOriginalService {

    /**
     * 校验原文读取访问口令，当前用于替代尚未落地的角色权限体系。
     *
     * @param submittedAccessKey 调用方提交的原文读取口令
     * @return 口令可用时返回 true
     */
    boolean canReadOriginal(String submittedAccessKey);

    /**
     * 按内部 SourceMessage ID 读取原文内容，并记录成功访问审计。
     *
     * @param inboxId SourceMessage Inbox ID
     * @param request 原文读取调用方和访问场景
     * @return 存在时返回原文内容，不存在时为空
     */
    Optional<SourceMessageOriginalResponse> readOriginal(Long inboxId, SourceMessageOriginalAccessRequest request);
}
