Skip to content

Commit

Permalink
hotfix: 위도 경도를 인식하지 못하는 문제 해결
Browse files Browse the repository at this point in the history
  • Loading branch information
yo0oni committed Aug 13, 2024
1 parent e8b10db commit 0cf6fb0
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 68 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,50 +24,47 @@ public class GptConfig {
위 정보들을 토대로 일정을 만들어줘
너가 주의해야 할 사항은 아래 네가지야.
1. 고객이 원하는 목적지를 기반으로 여행 계획을 만들어 줘야 하는데, 너무 멀리 있는 장소들을 묶으면 안돼.
2. 하루에 최소 세 개의 명소를 방문하고 싶어.
3. 하루에 최소 9시간을 돌아다닐거야.
4. 3일 간의 여행이면 3일짜리 계획을 만들어주면 돼.
5. 장소의 좌푯값도 소수점까지 함께 알려줘.
6. 일정마다 입장료나 이용 비용을 여행지 화폐에 맞춰 작성해줘.
5. 예를 들어 8월 15일부터 8월 18일까지의 여행이면 4일짜리 계획을 만들어주면 돼.
6. 장소의 좌푯값도 소수점까지 함께 알려줘.
7. 일정마다 입장료나 이용 비용을 여행지 화폐에 맞춰 작성해줘.
8. 식사 비용이나 입장료 같은 경우 (0.0)으로 작성해줘.
9. 특수 문자를 사용하지 않고, 아래 예시대로 일정을 작성해줘.
10. 일정 외의 다른 주의사항이나 추가 문장은 추가하지마.
11. 비용은 반드시 숫자로만 추가해줘.
4번의 예시는 아래와 같아
10. 비용은 반드시 숫자로만 추가해줘.
11. 반드시 "-\\s*(.*?):\\s*([\\d.]+,\\s*[\\d.]+)?\\s*\\[(.*?)\\]" 이 포맷을 지켜줘.
12. 일정은 반드시 한글로만 작성해줘.
예시는 아래와 같아
<2024.02.06>
- 세비야 대성당:37.38610100, -5.99220400 (11.0)
- 알카사르 세비야:37.38338500, -5.99051600 (12.0)
- 점심식사 에스피넬리 글로리아: 37.39404600, -5.99379500 (0.0)
- 히랄다 탑:37.38603000, -5.99303300 (13.0)
- 스페인 광장:37.37722200, -5.98694400 (0.0)
- 저녁식사 바루로:37.37734300, -5.98742700 (0.0)
- 쇼핑 세비야 엘 코르테 잉글레스:37.38942400, -5.99407200 (0.0)
- 세비야 대성당: 37.38610100, -5.99220400 [11.0]
- 알카사르 세비야: 37.38338500, -5.99051600 [12.0]
- 점심식사 에스피넬리 글로리아: 37.39404600, -5.99379500 [0.0]
- 히랄다 탑: 37.38603000, -5.99303300 [13.0]
- 스페인 광장: 37.37722200, -5.98694400 [0.0]
- 저녁식사 바루로: 37.37734300, -5.98742700 [0.0]
- 쇼핑 세비야 엘 코르테 잉글레스: 37.38942400, -5.99407200 [0.0]
<2024.02.07>
- 세비야 대성당:37.38610100, -5.99220400 (11.0)
- 알카사르 세비야:37.38338500, -5.99051600 (12.0)
- 점심식사 에스피넬리 글로리아: 37.39404600, -5.99379500 (0.0)
- 히랄다 탑:37.38603000, -5.99303300 (13.0)
- 스페인 광장:37.37722200, -5.98694400 (0.0)
- 저녁식사 바루로:37.37734300, -5.98742700 (0.0)
- 쇼핑 세비야 엘 코르테 잉글레스:37.38942400, -5.99407200 (0.0)
- 세비야 대성당: 37.38610100, -5.99220400 [11.0]
- 알카사르 세비야: 37.38338500, -5.99051600 [12.0]
- 점심식사 에스피넬리 글로리아: 37.39404600, -5.99379500 [0.0]
- 히랄다 탑: 37.38603000, -5.99303300 [13.0]
- 스페인 광장: 37.37722200, -5.98694400 [0.0]
- 저녁식사 바루로: 37.37734300, -5.98742700 [0.0]
- 쇼핑 세비야 엘 코르테 잉글레스: 37.38942400, -5.99407200 [0.0]
<2024.02.08>
- 세비야 대성당:37.38610100, -5.99220400 (11.0)
- 알카사르 세비야:37.38338500, -5.99051600 (12.0)
- 점심식사 에스피넬리 글로리아: 37.39404600, -5.99379500 (0.0)
- 히랄다 탑:37.38603000, -5.99303300 (13.0)
- 스페인 광장:37.37722200, -5.98694400 (0.0)
- 저녁식사 바루로:37.37734300, -5.98742700 (0.0)
- 쇼핑 세비야 엘 코르테 잉글레스:37.38942400, -5.99407200 (0.0)
- 세비야 대성당: 37.38610100, -5.99220400 [11.0]
- 알카사르 세비야: 37.38338500, -5.99051600 [12.0]
- 점심식사 에스피넬리 글로리아: 37.39404600, -5.99379500 [0.0]
- 히랄다 탑: 37.38603000, -5.99303300 [13.0]
- 스페인 광장: 37.37722200, -5.98694400 [0.0]
- 저녁식사 바루로: 37.37734300, -5.98742700 [0.0]
- 쇼핑 세비야 엘 코르테 잉글레스: 37.38942400, -5.99407200 [0.0]
날짜 형식은 반드시 <YYYY.MM.DD> 을 지켜줘.
매일 점심과 저녁은 레스토랑에서 먹을 거니까, 실제로 맛있고 유명한 레스토랑도 일정에 포함시켜줘.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,8 @@ public enum ParsingConstants {
PRICE_PREFIX("("),
PRICE_SUFFIX(")"),
DETAIL_PREFIX("- "),
PRICE_FREE("무료"),
PRICE_VAR("변동"),
DETAIL_SUFFIX(": "),
DEFAULT_PRICE(0.0),
DETAIL_SUFFIX(":"),
DEFAULT_COORDINATE(0.0);
private final String stringValue;
private final Double doubleValue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
@Component
public class GptScheduleParser {

private static final Pattern LINE_PATTERN = Pattern.compile("-\\s*(.*?):\\s*([\\d.]+,\\s*[\\d.]+)?\\s*\\((.*?)\\)");
private static final Pattern LINE_PATTERN =Pattern.compile("-\\s*(.*?):\\s*([\\d.]+),\\s*([-\\d.]+)\\s*\\[(\\d+(\\.\\d+)?)\\]");


public List<GptSchedule> parseScheduleText(String scheduleText) {
System.out.println(scheduleText);
Expand All @@ -35,16 +36,23 @@ public List<GptSchedule> parseScheduleText(String scheduleText) {

Matcher matcher = LINE_PATTERN.matcher(line);
if (matcher.find()) {
String detail = matcher.group(1);
String coordinatesStr = matcher.group(2);
String priceStr = matcher.group(3);

Coordinate coordinate = parseCoordinates(coordinatesStr);
double price = parsePriceString(priceStr);

scheduleDetails.add(new GptScheduleDetail(detail, price, coordinate));
try {
String detail = matcher.group(1);
String latitude = matcher.group(2);
String longitude = matcher.group(3);
String priceString = matcher.group(4);

Coordinate coordinate = new Coordinate(Double.parseDouble(latitude), Double.parseDouble(longitude));
double price = parsePriceString(priceString);

scheduleDetails.add(new GptScheduleDetail(detail, price, coordinate));
} catch (Exception e) {
System.err.println("Error processing line: " + line);
e.printStackTrace();
throw new NonValidatedParsingException();
}
} else {
System.out.println("767867889");
System.out.println("No match found for line: " + line);
throw new NonValidatedParsingException();
}
}
Expand All @@ -59,26 +67,6 @@ private String parseDate(String line) {
return line.trim().replace(ParsingConstants.DATE_SUFFIX.getStringValue(), "");
}

private Coordinate parseCoordinates(String coordinatesStr) {
if (coordinatesStr == null || coordinatesStr.isEmpty()) {
return new Coordinate(ParsingConstants.DEFAULT_COORDINATE.getDoubleValue(), ParsingConstants.DEFAULT_COORDINATE.getDoubleValue());
}

String[] parts = coordinatesStr.split(",");
if (parts.length != 2) {
System.out.println("1546351");
throw new NonValidatedParsingException();
}

try {
double latitude = Double.parseDouble(parts[0].trim());
double longitude = Double.parseDouble(parts[1].trim());
return new Coordinate(latitude, longitude);
} catch (NumberFormatException e) {
System.out.println("1234");
throw new NonValidatedParsingException();
}
}

private double parsePriceString(String priceStr) {
if (ParsingConstants.PRICE_FREE.getStringValue().equals(priceStr)) {
Expand All @@ -88,7 +76,6 @@ private double parsePriceString(String priceStr) {
try {
return Double.parseDouble(priceStr.replaceAll("[^\\d.]", ""));
} catch (NumberFormatException e) {
System.out.println("5678");
return ParsingConstants.DEFAULT_PRICE.getDoubleValue();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import com.isp.backend.domain.gpt.entity.GptMessage;
import com.isp.backend.domain.gpt.entity.GptSchedule;
import com.isp.backend.domain.gpt.entity.GptScheduleParser;
import com.isp.backend.domain.schedule.service.ScheduleService;
import com.isp.backend.global.exception.schedule.CountryNotFoundException;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
Expand All @@ -37,7 +36,6 @@ public class GptService {

private final GptScheduleParser gptScheduleParser;
private final CountryRepository countryRepository;
private final ScheduleService scheduleService;
private final WebClient webClient;

@Value("${api-key.gpt-trip}")
Expand Down

0 comments on commit 0cf6fb0

Please sign in to comment.