KnowledgeLoader.java
package com.hwhub.batch.infrastructure.s3;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.GetObjectRequest;
import software.amazon.awssdk.services.s3.model.NoSuchKeyException;
@Component
@RequiredArgsConstructor
@Slf4j
public class KnowledgeLoader {
private final S3Client s3Client;
@Value("${hwhub.knowledge.s3.bucket}")
private String bucket;
@Value("${hwhub.knowledge.s3.faq-key}")
private String faqKey;
@Value("${hwhub.knowledge.s3.howto-key}")
private String howtoKey;
public String load() {
String faq = readFile(faqKey);
String howto = readFile(howtoKey);
return (faq + "\n\n---\n\n" + howto).strip();
}
private String readFile(String key) {
try {
return s3Client
.getObjectAsBytes(GetObjectRequest.builder().bucket(bucket).key(key).build())
.asUtf8String();
} catch (NoSuchKeyException e) {
log.warn("S3ナレッジファイルが見つかりません: s3://{}/{}", bucket, key);
return "";
}
}
}