From 0a31d3707d21a6c924b0e7e8854ce5790c3ba39e Mon Sep 17 00:00:00 2001 From: crolvlee Date: Sun, 14 Jun 2026 23:46:31 +0900 Subject: [PATCH 1/3] =?UTF-8?q?chore(be):=20=EA=B8=B0=EC=A1=B4=20=EB=B0=B1?= =?UTF-8?q?=EC=97=94=EB=93=9C=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0=20?= =?UTF-8?q?(#3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/.classpath | 57 ----- backend/.project | 34 --- .../.settings/org.eclipse.jdt.apt.core.prefs | 4 - backend/.settings/org.eclipse.jdt.core.prefs | 9 - backend/.settings/org.eclipse.m2e.core.prefs | 4 - backend/pom.xml | 29 --- .../model/dao/BasicHouseDealDAO.java | 155 ------------ .../model/dao/BasicHouseInfoDAO.java | 162 ------------ .../salmanApp/model/dao/HouseDealDAO.java | 17 -- .../salmanApp/model/dao/HouseInfoDAO.java | 17 -- .../salmanApp/model/dto/HouseDealDTO.java | 39 --- .../salmanApp/model/dto/HouseInfoDTO.java | 48 ---- .../model/service/BasicHouseService.java | 234 ------------------ .../salmanApp/model/service/HouseService.java | 25 -- .../ssafy/salmanApp/test/HouseDealTest.java | 46 ---- .../ssafy/salmanApp/test/HouseInfoTest.java | 48 ---- .../java/com/ssafy/salmanApp/test/TXTest.java | 31 --- .../java/com/ssafy/salmanApp/util/DBUtil.java | 42 ---- .../model/dao/BasicHouseDealDAO.class | Bin 7891 -> 0 bytes .../model/dao/BasicHouseInfoDAO.class | Bin 8343 -> 0 bytes .../salmanApp/model/dao/HouseDealDAO.class | Bin 1267 -> 0 bytes .../salmanApp/model/dao/HouseInfoDAO.class | Bin 1028 -> 0 bytes .../salmanApp/model/dto/HouseDealDTO.class | Bin 3533 -> 0 bytes .../salmanApp/model/dto/HouseInfoDTO.class | Bin 4840 -> 0 bytes .../model/service/BasicHouseService.class | Bin 7934 -> 0 bytes .../model/service/HouseService.class | Bin 1672 -> 0 bytes .../ssafy/salmanApp/test/HouseDealTest.class | Bin 2790 -> 0 bytes .../ssafy/salmanApp/test/HouseInfoTest.class | Bin 2815 -> 0 bytes .../com/ssafy/salmanApp/test/TXTest.class | Bin 2083 -> 0 bytes .../com/ssafy/salmanApp/util/DBUtil.class | Bin 1859 -> 0 bytes 30 files changed, 1001 deletions(-) delete mode 100644 backend/.classpath delete mode 100644 backend/.project delete mode 100644 backend/.settings/org.eclipse.jdt.apt.core.prefs delete mode 100644 backend/.settings/org.eclipse.jdt.core.prefs delete mode 100644 backend/.settings/org.eclipse.m2e.core.prefs delete mode 100644 backend/pom.xml delete mode 100644 backend/src/main/java/com/ssafy/salmanApp/model/dao/BasicHouseDealDAO.java delete mode 100644 backend/src/main/java/com/ssafy/salmanApp/model/dao/BasicHouseInfoDAO.java delete mode 100644 backend/src/main/java/com/ssafy/salmanApp/model/dao/HouseDealDAO.java delete mode 100644 backend/src/main/java/com/ssafy/salmanApp/model/dao/HouseInfoDAO.java delete mode 100644 backend/src/main/java/com/ssafy/salmanApp/model/dto/HouseDealDTO.java delete mode 100644 backend/src/main/java/com/ssafy/salmanApp/model/dto/HouseInfoDTO.java delete mode 100644 backend/src/main/java/com/ssafy/salmanApp/model/service/BasicHouseService.java delete mode 100644 backend/src/main/java/com/ssafy/salmanApp/model/service/HouseService.java delete mode 100644 backend/src/main/java/com/ssafy/salmanApp/test/HouseDealTest.java delete mode 100644 backend/src/main/java/com/ssafy/salmanApp/test/HouseInfoTest.java delete mode 100644 backend/src/main/java/com/ssafy/salmanApp/test/TXTest.java delete mode 100644 backend/src/main/java/com/ssafy/salmanApp/util/DBUtil.java delete mode 100644 backend/target/classes/com/ssafy/salmanApp/model/dao/BasicHouseDealDAO.class delete mode 100644 backend/target/classes/com/ssafy/salmanApp/model/dao/BasicHouseInfoDAO.class delete mode 100644 backend/target/classes/com/ssafy/salmanApp/model/dao/HouseDealDAO.class delete mode 100644 backend/target/classes/com/ssafy/salmanApp/model/dao/HouseInfoDAO.class delete mode 100644 backend/target/classes/com/ssafy/salmanApp/model/dto/HouseDealDTO.class delete mode 100644 backend/target/classes/com/ssafy/salmanApp/model/dto/HouseInfoDTO.class delete mode 100644 backend/target/classes/com/ssafy/salmanApp/model/service/BasicHouseService.class delete mode 100644 backend/target/classes/com/ssafy/salmanApp/model/service/HouseService.class delete mode 100644 backend/target/classes/com/ssafy/salmanApp/test/HouseDealTest.class delete mode 100644 backend/target/classes/com/ssafy/salmanApp/test/HouseInfoTest.class delete mode 100644 backend/target/classes/com/ssafy/salmanApp/test/TXTest.class delete mode 100644 backend/target/classes/com/ssafy/salmanApp/util/DBUtil.class diff --git a/backend/.classpath b/backend/.classpath deleted file mode 100644 index df66b20..0000000 --- a/backend/.classpath +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/backend/.project b/backend/.project deleted file mode 100644 index d1addfe..0000000 --- a/backend/.project +++ /dev/null @@ -1,34 +0,0 @@ - - - salman - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature - - - - 1780649354953 - - 30 - - org.eclipse.core.resources.regexFilterMatcher - node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ - - - - diff --git a/backend/.settings/org.eclipse.jdt.apt.core.prefs b/backend/.settings/org.eclipse.jdt.apt.core.prefs deleted file mode 100644 index dfa4f3a..0000000 --- a/backend/.settings/org.eclipse.jdt.apt.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.apt.aptEnabled=true -org.eclipse.jdt.apt.genSrcDir=target/generated-sources/annotations -org.eclipse.jdt.apt.genTestSrcDir=target/generated-test-sources/test-annotations diff --git a/backend/.settings/org.eclipse.jdt.core.prefs b/backend/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 87f474b..0000000 --- a/backend/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,9 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 -org.eclipse.jdt.core.compiler.compliance=17 -org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore -org.eclipse.jdt.core.compiler.processAnnotations=enabled -org.eclipse.jdt.core.compiler.release=disabled -org.eclipse.jdt.core.compiler.source=17 diff --git a/backend/.settings/org.eclipse.m2e.core.prefs b/backend/.settings/org.eclipse.m2e.core.prefs deleted file mode 100644 index f897a7f..0000000 --- a/backend/.settings/org.eclipse.m2e.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/backend/pom.xml b/backend/pom.xml deleted file mode 100644 index c6005dd..0000000 --- a/backend/pom.xml +++ /dev/null @@ -1,29 +0,0 @@ - - 4.0.0 - com.ssafy - salman - 0.0.1-SNAPSHOT - salmanApp - - - 17 - 17 - - - - - - com.mysql - mysql-connector-j - 8.3.0 - - - - - org.projectlombok - lombok - 1.18.46 - compile - - - \ No newline at end of file diff --git a/backend/src/main/java/com/ssafy/salmanApp/model/dao/BasicHouseDealDAO.java b/backend/src/main/java/com/ssafy/salmanApp/model/dao/BasicHouseDealDAO.java deleted file mode 100644 index 31b67ff..0000000 --- a/backend/src/main/java/com/ssafy/salmanApp/model/dao/BasicHouseDealDAO.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.ssafy.salmanApp.model.dao; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; -import java.util.List; - -import com.ssafy.salmanApp.model.dto.HouseDealDTO; - -public class BasicHouseDealDAO implements HouseDealDAO { - - private static BasicHouseDealDAO instance = new BasicHouseDealDAO(); - - private BasicHouseDealDAO() {} - - public static BasicHouseDealDAO getInstance() { - return instance; - } - - @Override - public void insertHouseDeal(Connection conn, HouseDealDTO houseDeal) throws SQLException { - String sql = "INSERT INTO housedeals (apt_seq, apt_dong, floor, deal_year, deal_month, deal_day, exclu_use_ar, deal_amount) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"; - try (PreparedStatement stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { - stmt.setString(1, houseDeal.getAptSeq()); - stmt.setString(2, houseDeal.getAptDong()); - stmt.setString(3, houseDeal.getFloor()); - stmt.setInt(4, houseDeal.getDealYear()); - stmt.setInt(5, houseDeal.getDealMonth()); - stmt.setInt(6, houseDeal.getDealDay()); - stmt.setDouble(7, houseDeal.getExcluUseAr()); - stmt.setString(8, houseDeal.getDealAmount()); - stmt.executeUpdate(); - ResultSet generatedKeys = stmt.getGeneratedKeys(); - if (generatedKeys.next()) { - houseDeal.setNo(generatedKeys.getInt(1)); - } - } - } - - @Override - public HouseDealDTO getHouseDealByNo(Connection conn, int no) throws SQLException { - String sql = "SELECT * FROM housedeals WHERE no = ?"; - try (PreparedStatement stmt = conn.prepareStatement(sql)) { - stmt.setInt(1, no); - try (ResultSet rs = stmt.executeQuery()) { - if (rs.next()) { - return mapResultSetToHouseDeal(rs); - } - } - } - return null; - } - - @Override - public void updateHouseDeal(Connection conn, HouseDealDTO houseDeal) throws SQLException { - String sql = "UPDATE housedeals SET apt_seq=?, apt_dong=?, floor=?, deal_year=?, deal_month=?, deal_day=?, exclu_use_ar=?, deal_amount=? WHERE no=?"; - try (PreparedStatement stmt = conn.prepareStatement(sql)) { - stmt.setString(1, houseDeal.getAptSeq()); - stmt.setString(2, houseDeal.getAptDong()); - stmt.setString(3, houseDeal.getFloor()); - stmt.setInt(4, houseDeal.getDealYear()); - stmt.setInt(5, houseDeal.getDealMonth()); - stmt.setInt(6, houseDeal.getDealDay()); - stmt.setDouble(7, houseDeal.getExcluUseAr()); - stmt.setString(8, houseDeal.getDealAmount()); - stmt.setInt(9, houseDeal.getNo()); - stmt.executeUpdate(); - } - } - - @Override - public void deleteHouseDeal(Connection conn, int no) throws SQLException { - String sql = "DELETE FROM housedeals WHERE no = ?"; - try (PreparedStatement stmt = conn.prepareStatement(sql)) { - stmt.setInt(1, no); - stmt.executeUpdate(); - } - } - - @Override - public List getAllHouseDeals(Connection conn) throws SQLException { - String sql = "SELECT * FROM housedeals"; - List list = new ArrayList<>(); - try (PreparedStatement stmt = conn.prepareStatement(sql); - ResultSet rs = stmt.executeQuery()) { - while (rs.next()) { - list.add(mapResultSetToHouseDeal(rs)); - } - } - return list; - } - - @Override - public List getHouseDealsByAptSeq(Connection conn, String aptSeq) throws SQLException { - String sql = "SELECT * FROM housedeals WHERE apt_seq = ?"; - List list = new ArrayList<>(); - try (PreparedStatement stmt = conn.prepareStatement(sql)) { - stmt.setString(1, aptSeq); - try (ResultSet rs = stmt.executeQuery()) { - while (rs.next()) { - list.add(mapResultSetToHouseDeal(rs)); - } - } - } - return list; - } - - @Override - public List getHouseDealsByDealYear(Connection conn, int dealYear) throws SQLException { - String sql = "SELECT * FROM housedeals WHERE deal_year = ?"; - List list = new ArrayList<>(); - try (PreparedStatement stmt = conn.prepareStatement(sql)) { - stmt.setInt(1, dealYear); - try (ResultSet rs = stmt.executeQuery()) { - while (rs.next()) { - list.add(mapResultSetToHouseDeal(rs)); - } - } - } - return list; - } - - @Override - public List getHouseDealsByYearAndMonth(Connection conn, int dealYear, int dealMonth) throws SQLException { - String sql = "SELECT * FROM housedeals WHERE deal_year = ? AND deal_month = ?"; - List list = new ArrayList<>(); - try (PreparedStatement stmt = conn.prepareStatement(sql)) { - stmt.setInt(1, dealYear); - stmt.setInt(2, dealMonth); - try (ResultSet rs = stmt.executeQuery()) { - while (rs.next()) { - list.add(mapResultSetToHouseDeal(rs)); - } - } - } - return list; - } - - private HouseDealDTO mapResultSetToHouseDeal(ResultSet rs) throws SQLException { - return new HouseDealDTO( - rs.getInt("no"), - rs.getString("apt_seq"), - rs.getString("apt_dong"), - rs.getString("floor"), - rs.getInt("deal_year"), - rs.getInt("deal_month"), - rs.getInt("deal_day"), - rs.getDouble("exclu_use_ar"), - rs.getString("deal_amount") - ); - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/ssafy/salmanApp/model/dao/BasicHouseInfoDAO.java b/backend/src/main/java/com/ssafy/salmanApp/model/dao/BasicHouseInfoDAO.java deleted file mode 100644 index 045d495..0000000 --- a/backend/src/main/java/com/ssafy/salmanApp/model/dao/BasicHouseInfoDAO.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.ssafy.salmanApp.model.dao; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; - -import com.ssafy.salmanApp.model.dto.HouseInfoDTO; - -public class BasicHouseInfoDAO implements HouseInfoDAO { - - private static BasicHouseInfoDAO instance = new BasicHouseInfoDAO(); - - private BasicHouseInfoDAO() {} - - public static BasicHouseInfoDAO getInstance() { - return instance; - } - - @Override - public void insertHouseInfo(Connection conn, HouseInfoDTO houseInfo) throws SQLException { - String sql = "INSERT INTO houseinfos (apt_seq, sgg_cd, umd_cd, umd_nm, jibun, road_nm_sgg_cd, road_nm, road_nm_bonbun, road_nm_bubun, apt_nm, build_year, latitude, longitude) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; - try (PreparedStatement stmt = conn.prepareStatement(sql)) { - stmt.setString(1, houseInfo.getAptSeq()); - stmt.setString(2, houseInfo.getSggCd()); - stmt.setString(3, houseInfo.getUmdCd()); - stmt.setString(4, houseInfo.getUmdNm()); - stmt.setString(5, houseInfo.getJibun()); - stmt.setString(6, houseInfo.getRoadNmSggCd()); - stmt.setString(7, houseInfo.getRoadNm()); - stmt.setString(8, houseInfo.getRoadNmBonbun()); - stmt.setString(9, houseInfo.getRoadNmBubun()); - stmt.setString(10, houseInfo.getAptNm()); - stmt.setInt(11, houseInfo.getBuildYear()); - stmt.setString(12, houseInfo.getLatitude()); - stmt.setString(13, houseInfo.getLongitude()); - stmt.executeUpdate(); - } - } - - @Override - public HouseInfoDTO getHouseInfoByAptSeq(Connection conn, String aptSeq) throws SQLException { - String sql = "SELECT * FROM houseinfos WHERE apt_seq = ?"; - try (PreparedStatement stmt = conn.prepareStatement(sql)) { - stmt.setString(1, aptSeq); - try (ResultSet rs = stmt.executeQuery()) { - if (rs.next()) { - return mapResultSetToHouseInfo(rs); - } - } - } - return null; - } - - @Override - public void updateHouseInfo(Connection conn, HouseInfoDTO houseInfo) throws SQLException { - String sql = "UPDATE houseinfos SET sgg_cd=?, umd_cd=?, umd_nm=?, jibun=?, road_nm_sgg_cd=?, road_nm=?, road_nm_bonbun=?, road_nm_bubun=?, apt_nm=?, build_year=?, latitude=?, longitude=? WHERE apt_seq=?"; - try (PreparedStatement stmt = conn.prepareStatement(sql)) { - stmt.setString(1, houseInfo.getSggCd()); - stmt.setString(2, houseInfo.getUmdCd()); - stmt.setString(3, houseInfo.getUmdNm()); - stmt.setString(4, houseInfo.getJibun()); - stmt.setString(5, houseInfo.getRoadNmSggCd()); - stmt.setString(6, houseInfo.getRoadNm()); - stmt.setString(7, houseInfo.getRoadNmBonbun()); - stmt.setString(8, houseInfo.getRoadNmBubun()); - stmt.setString(9, houseInfo.getAptNm()); - stmt.setInt(10, houseInfo.getBuildYear()); - stmt.setString(11, houseInfo.getLatitude()); - stmt.setString(12, houseInfo.getLongitude()); - stmt.setString(13, houseInfo.getAptSeq()); - stmt.executeUpdate(); - } - } - - @Override - public void deleteHouseInfo(Connection conn, String aptSeq) throws SQLException { - String sql = "DELETE FROM houseinfos WHERE apt_seq = ?"; - try (PreparedStatement stmt = conn.prepareStatement(sql)) { - stmt.setString(1, aptSeq); - stmt.executeUpdate(); - } - } - - @Override - public List getAllHouseInfos(Connection conn) throws SQLException { - String sql = "SELECT * FROM houseinfos"; - List list = new ArrayList<>(); - try (PreparedStatement stmt = conn.prepareStatement(sql); - ResultSet rs = stmt.executeQuery()) { - while (rs.next()) { - list.add(mapResultSetToHouseInfo(rs)); - } - } - return list; - } - - @Override - public List getHouseInfosBySggCd(Connection conn, String sggCd) throws SQLException { - String sql = "SELECT * FROM houseinfos WHERE sgg_cd = ?"; - List list = new ArrayList<>(); - try (PreparedStatement stmt = conn.prepareStatement(sql)) { - stmt.setString(1, sggCd); - try (ResultSet rs = stmt.executeQuery()) { - while (rs.next()) { - list.add(mapResultSetToHouseInfo(rs)); - } - } - } - return list; - } - - @Override - public List getHouseInfosByUmdCd(Connection conn, String umdCd) throws SQLException { - String sql = "SELECT * FROM houseinfos WHERE umd_cd = ?"; - List list = new ArrayList<>(); - try (PreparedStatement stmt = conn.prepareStatement(sql)) { - stmt.setString(1, umdCd); - try (ResultSet rs = stmt.executeQuery()) { - while (rs.next()) { - list.add(mapResultSetToHouseInfo(rs)); - } - } - } - return list; - } - - @Override - public List getHouseInfosByAptNm(Connection conn, String aptNm) throws SQLException { - String sql = "SELECT * FROM houseinfos WHERE apt_nm LIKE ?"; - List list = new ArrayList<>(); - try (PreparedStatement stmt = conn.prepareStatement(sql)) { - stmt.setString(1, "%" + aptNm + "%"); - try (ResultSet rs = stmt.executeQuery()) { - while (rs.next()) { - list.add(mapResultSetToHouseInfo(rs)); - } - } - } - return list; - } - - private HouseInfoDTO mapResultSetToHouseInfo(ResultSet rs) throws SQLException { - return new HouseInfoDTO( - rs.getString("apt_seq"), - rs.getString("sgg_cd"), - rs.getString("umd_cd"), - rs.getString("umd_nm"), - rs.getString("jibun"), - rs.getString("road_nm_sgg_cd"), - rs.getString("road_nm"), - rs.getString("road_nm_bonbun"), - rs.getString("road_nm_bubun"), - rs.getString("apt_nm"), - rs.getInt("build_year"), - rs.getString("latitude"), - rs.getString("longitude") - ); - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/ssafy/salmanApp/model/dao/HouseDealDAO.java b/backend/src/main/java/com/ssafy/salmanApp/model/dao/HouseDealDAO.java deleted file mode 100644 index a65d9e4..0000000 --- a/backend/src/main/java/com/ssafy/salmanApp/model/dao/HouseDealDAO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.ssafy.salmanApp.model.dao; - -import java.sql.Connection; -import java.sql.SQLException; -import java.util.List; -import com.ssafy.salmanApp.model.dto.HouseDealDTO; - -public interface HouseDealDAO { - void insertHouseDeal(Connection conn, HouseDealDTO houseDeal) throws SQLException; - HouseDealDTO getHouseDealByNo(Connection conn, int no) throws SQLException; - void updateHouseDeal(Connection conn, HouseDealDTO houseDeal) throws SQLException; - void deleteHouseDeal(Connection conn, int no) throws SQLException; - List getAllHouseDeals(Connection conn) throws SQLException; - List getHouseDealsByAptSeq(Connection conn, String aptSeq) throws SQLException; - List getHouseDealsByDealYear(Connection conn, int dealYear) throws SQLException; - List getHouseDealsByYearAndMonth(Connection conn, int dealYear, int dealMonth) throws SQLException; -} \ No newline at end of file diff --git a/backend/src/main/java/com/ssafy/salmanApp/model/dao/HouseInfoDAO.java b/backend/src/main/java/com/ssafy/salmanApp/model/dao/HouseInfoDAO.java deleted file mode 100644 index 2f76f61..0000000 --- a/backend/src/main/java/com/ssafy/salmanApp/model/dao/HouseInfoDAO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.ssafy.salmanApp.model.dao; - -import java.sql.Connection; -import java.sql.SQLException; -import java.util.List; -import com.ssafy.salmanApp.model.dto.HouseInfoDTO; - -public interface HouseInfoDAO { - void insertHouseInfo(Connection conn, HouseInfoDTO houseInfo) throws SQLException; - HouseInfoDTO getHouseInfoByAptSeq(Connection conn, String aptSeq) throws SQLException; - void updateHouseInfo(Connection conn, HouseInfoDTO houseInfo) throws SQLException; - void deleteHouseInfo(Connection conn, String aptSeq) throws SQLException; - List getAllHouseInfos(Connection conn) throws SQLException; - List getHouseInfosBySggCd(Connection conn, String sggCd) throws SQLException; - List getHouseInfosByUmdCd(Connection conn, String umdCd) throws SQLException; - List getHouseInfosByAptNm(Connection conn, String aptNm) throws SQLException; -} \ No newline at end of file diff --git a/backend/src/main/java/com/ssafy/salmanApp/model/dto/HouseDealDTO.java b/backend/src/main/java/com/ssafy/salmanApp/model/dto/HouseDealDTO.java deleted file mode 100644 index 4f21fc5..0000000 --- a/backend/src/main/java/com/ssafy/salmanApp/model/dto/HouseDealDTO.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.ssafy.salmanApp.model.dto; - -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; - -@ToString -@Setter -@Getter -public class HouseDealDTO { - private int no; - private String aptSeq; - private String aptDong; - private String floor; - private int dealYear; - private int dealMonth; - private int dealDay; - private double excluUseAr; - private String dealAmount; - - public HouseDealDTO() { - super(); - } - - public HouseDealDTO(int no, String aptSeq, String aptDong, String floor, - int dealYear, int dealMonth, int dealDay, - double excluUseAr, String dealAmount) { - super(); - this.no = no; - this.aptSeq = aptSeq; - this.aptDong = aptDong; - this.floor = floor; - this.dealYear = dealYear; - this.dealMonth = dealMonth; - this.dealDay = dealDay; - this.excluUseAr = excluUseAr; - this.dealAmount = dealAmount; - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/ssafy/salmanApp/model/dto/HouseInfoDTO.java b/backend/src/main/java/com/ssafy/salmanApp/model/dto/HouseInfoDTO.java deleted file mode 100644 index a2b068c..0000000 --- a/backend/src/main/java/com/ssafy/salmanApp/model/dto/HouseInfoDTO.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.ssafy.salmanApp.model.dto; - -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; - -@ToString -@Setter -@Getter -public class HouseInfoDTO { - private String aptSeq; - private String sggCd; - private String umdCd; - private String umdNm; - private String jibun; - private String roadNmSggCd; - private String roadNm; - private String roadNmBonbun; - private String roadNmBubun; - private String aptNm; - private int buildYear; - private String latitude; - private String longitude; - - public HouseInfoDTO() { - super(); - } - - public HouseInfoDTO(String aptSeq, String sggCd, String umdCd, String umdNm, - String jibun, String roadNmSggCd, String roadNm, - String roadNmBonbun, String roadNmBubun, String aptNm, - int buildYear, String latitude, String longitude) { - super(); - this.aptSeq = aptSeq; - this.sggCd = sggCd; - this.umdCd = umdCd; - this.umdNm = umdNm; - this.jibun = jibun; - this.roadNmSggCd = roadNmSggCd; - this.roadNm = roadNm; - this.roadNmBonbun = roadNmBonbun; - this.roadNmBubun = roadNmBubun; - this.aptNm = aptNm; - this.buildYear = buildYear; - this.latitude = latitude; - this.longitude = longitude; - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/ssafy/salmanApp/model/service/BasicHouseService.java b/backend/src/main/java/com/ssafy/salmanApp/model/service/BasicHouseService.java deleted file mode 100644 index 2a31e85..0000000 --- a/backend/src/main/java/com/ssafy/salmanApp/model/service/BasicHouseService.java +++ /dev/null @@ -1,234 +0,0 @@ -package com.ssafy.salmanApp.model.service; - -import java.sql.Connection; -import java.util.List; - -import com.ssafy.salmanApp.model.dao.BasicHouseDealDAO; -import com.ssafy.salmanApp.model.dao.BasicHouseInfoDAO; -import com.ssafy.salmanApp.model.dao.HouseDealDAO; -import com.ssafy.salmanApp.model.dao.HouseInfoDAO; -import com.ssafy.salmanApp.model.dto.HouseDealDTO; -import com.ssafy.salmanApp.model.dto.HouseInfoDTO; -import com.ssafy.salmanApp.util.DBUtil; - -public class BasicHouseService implements HouseService { - - private static BasicHouseService instance = new BasicHouseService(); - private HouseInfoDAO houseInfoDAO = BasicHouseInfoDAO.getInstance(); - private HouseDealDAO houseDealDAO = BasicHouseDealDAO.getInstance(); - - private BasicHouseService() {} - - public static BasicHouseService getInstance() { - return instance; - } - - // ────────────────────────────────────── - // HouseInfo - // ────────────────────────────────────── - - @Override - public void insertHouseInfo(HouseInfoDTO houseInfo) throws Exception { - Connection conn = DBUtil.getConnection(); - try { - conn.setAutoCommit(false); - houseInfoDAO.insertHouseInfo(conn, houseInfo); - conn.commit(); - } catch (Exception e) { - e.printStackTrace(); - if (conn != null) conn.rollback(); - throw e; - } finally { - DBUtil.close(conn); - } - } - - @Override - public HouseInfoDTO getHouseInfoByAptSeq(String aptSeq) throws Exception { - Connection conn = DBUtil.getConnection(); - try { - return houseInfoDAO.getHouseInfoByAptSeq(conn, aptSeq); - } finally { - DBUtil.close(conn); - } - } - - @Override - public void updateHouseInfo(HouseInfoDTO houseInfo) throws Exception { - Connection conn = DBUtil.getConnection(); - try { - conn.setAutoCommit(false); - houseInfoDAO.updateHouseInfo(conn, houseInfo); - conn.commit(); - } catch (Exception e) { - e.printStackTrace(); - if (conn != null) conn.rollback(); - throw e; - } finally { - DBUtil.close(conn); - } - } - - @Override - public void deleteHouseInfo(String aptSeq) throws Exception { - Connection conn = DBUtil.getConnection(); - try { - conn.setAutoCommit(false); - // 아파트 삭제 시 연관된 거래 내역도 함께 삭제 - List deals = houseDealDAO.getHouseDealsByAptSeq(conn, aptSeq); - for (HouseDealDTO deal : deals) { - houseDealDAO.deleteHouseDeal(conn, deal.getNo()); - } - houseInfoDAO.deleteHouseInfo(conn, aptSeq); - conn.commit(); - } catch (Exception e) { - e.printStackTrace(); - if (conn != null) conn.rollback(); - throw e; - } finally { - DBUtil.close(conn); - } - } - - @Override - public List getAllHouseInfos() throws Exception { - Connection conn = DBUtil.getConnection(); - try { - return houseInfoDAO.getAllHouseInfos(conn); - } finally { - DBUtil.close(conn); - } - } - - @Override - public List getHouseInfosBySggCd(String sggCd) throws Exception { - Connection conn = DBUtil.getConnection(); - try { - return houseInfoDAO.getHouseInfosBySggCd(conn, sggCd); - } finally { - DBUtil.close(conn); - } - } - - @Override - public List getHouseInfosByUmdCd(String umdCd) throws Exception { - Connection conn = DBUtil.getConnection(); - try { - return houseInfoDAO.getHouseInfosByUmdCd(conn, umdCd); - } finally { - DBUtil.close(conn); - } - } - - @Override - public List getHouseInfosByAptNm(String aptNm) throws Exception { - Connection conn = DBUtil.getConnection(); - try { - return houseInfoDAO.getHouseInfosByAptNm(conn, aptNm); - } finally { - DBUtil.close(conn); - } - } - - // ────────────────────────────────────── - // HouseDeal - // ────────────────────────────────────── - - @Override - public void insertHouseDeal(HouseDealDTO houseDeal) throws Exception { - Connection conn = DBUtil.getConnection(); - try { - conn.setAutoCommit(false); - houseDealDAO.insertHouseDeal(conn, houseDeal); - conn.commit(); - } catch (Exception e) { - e.printStackTrace(); - if (conn != null) conn.rollback(); - throw e; - } finally { - DBUtil.close(conn); - } - } - - @Override - public HouseDealDTO getHouseDealByNo(int no) throws Exception { - Connection conn = DBUtil.getConnection(); - try { - return houseDealDAO.getHouseDealByNo(conn, no); - } finally { - DBUtil.close(conn); - } - } - - @Override - public void updateHouseDeal(HouseDealDTO houseDeal) throws Exception { - Connection conn = DBUtil.getConnection(); - try { - conn.setAutoCommit(false); - houseDealDAO.updateHouseDeal(conn, houseDeal); - conn.commit(); - } catch (Exception e) { - e.printStackTrace(); - if (conn != null) conn.rollback(); - throw e; - } finally { - DBUtil.close(conn); - } - } - - @Override - public void deleteHouseDeal(int no) throws Exception { - Connection conn = DBUtil.getConnection(); - try { - conn.setAutoCommit(false); - houseDealDAO.deleteHouseDeal(conn, no); - conn.commit(); - } catch (Exception e) { - e.printStackTrace(); - if (conn != null) conn.rollback(); - throw e; - } finally { - DBUtil.close(conn); - } - } - - @Override - public List getAllHouseDeals() throws Exception { - Connection conn = DBUtil.getConnection(); - try { - return houseDealDAO.getAllHouseDeals(conn); - } finally { - DBUtil.close(conn); - } - } - - @Override - public List getHouseDealsByAptSeq(String aptSeq) throws Exception { - Connection conn = DBUtil.getConnection(); - try { - return houseDealDAO.getHouseDealsByAptSeq(conn, aptSeq); - } finally { - DBUtil.close(conn); - } - } - - @Override - public List getHouseDealsByDealYear(int dealYear) throws Exception { - Connection conn = DBUtil.getConnection(); - try { - return houseDealDAO.getHouseDealsByDealYear(conn, dealYear); - } finally { - DBUtil.close(conn); - } - } - - @Override - public List getHouseDealsByYearAndMonth(int dealYear, int dealMonth) throws Exception { - Connection conn = DBUtil.getConnection(); - try { - return houseDealDAO.getHouseDealsByYearAndMonth(conn, dealYear, dealMonth); - } finally { - DBUtil.close(conn); - } - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/ssafy/salmanApp/model/service/HouseService.java b/backend/src/main/java/com/ssafy/salmanApp/model/service/HouseService.java deleted file mode 100644 index f422a0f..0000000 --- a/backend/src/main/java/com/ssafy/salmanApp/model/service/HouseService.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.ssafy.salmanApp.model.service; - -import java.util.List; -import com.ssafy.salmanApp.model.dto.HouseInfoDTO; -import com.ssafy.salmanApp.model.dto.HouseDealDTO; - -public interface HouseService { - void insertHouseInfo(HouseInfoDTO houseInfo) throws Exception; - HouseInfoDTO getHouseInfoByAptSeq(String aptSeq) throws Exception; - void updateHouseInfo(HouseInfoDTO houseInfo) throws Exception; - void deleteHouseInfo(String aptSeq) throws Exception; - List getAllHouseInfos() throws Exception; - List getHouseInfosBySggCd(String sggCd) throws Exception; - List getHouseInfosByUmdCd(String umdCd) throws Exception; - List getHouseInfosByAptNm(String aptNm) throws Exception; - - void insertHouseDeal(HouseDealDTO houseDeal) throws Exception; - HouseDealDTO getHouseDealByNo(int no) throws Exception; - void updateHouseDeal(HouseDealDTO houseDeal) throws Exception; - void deleteHouseDeal(int no) throws Exception; - List getAllHouseDeals() throws Exception; - List getHouseDealsByAptSeq(String aptSeq) throws Exception; - List getHouseDealsByDealYear(int dealYear) throws Exception; - List getHouseDealsByYearAndMonth(int dealYear, int dealMonth) throws Exception; -} \ No newline at end of file diff --git a/backend/src/main/java/com/ssafy/salmanApp/test/HouseDealTest.java b/backend/src/main/java/com/ssafy/salmanApp/test/HouseDealTest.java deleted file mode 100644 index cc62a2d..0000000 --- a/backend/src/main/java/com/ssafy/salmanApp/test/HouseDealTest.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.ssafy.salmanApp.test; - -import java.util.List; -import com.ssafy.salmanApp.model.dto.HouseDealDTO; -import com.ssafy.salmanApp.model.service.BasicHouseService; -import com.ssafy.salmanApp.model.service.HouseService; - -public class HouseDealTest { - public static void main(String[] args) { - try { - HouseService houseService = BasicHouseService.getInstance(); - - // ── 전체 거래 목록 조회 ── - System.out.println("===== 거래 전체 목록 ====="); - for (HouseDealDTO d : houseService.getAllHouseDeals()) { - System.out.println(d); - } - - // ── no로 단건 조회 ── - int testNo = 1; // 실제 DB에 있는 no로 변경 - HouseDealDTO fetchedDeal = houseService.getHouseDealByNo(testNo); - System.out.println("거래 단건 조회 : " + fetchedDeal); - - // ── aptSeq로 거래 목록 조회 ── - System.out.println("===== aptSeq로 거래 검색 ====="); - for (HouseDealDTO d : houseService.getHouseDealsByAptSeq("11110-100")) { - System.out.println(d); - } - - // ── 연도로 거래 검색 ── - System.out.println("===== 2011년 거래 목록 ====="); - for (HouseDealDTO d : houseService.getHouseDealsByDealYear(2011)) { - System.out.println(d); - } - - // ── 연도+월로 거래 검색 ── - System.out.println("===== 2011년 11월 거래 목록 ====="); - for (HouseDealDTO d : houseService.getHouseDealsByYearAndMonth(2011, 11)) { - System.out.println(d); - } - - } catch (Exception e) { - e.printStackTrace(); - } - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/ssafy/salmanApp/test/HouseInfoTest.java b/backend/src/main/java/com/ssafy/salmanApp/test/HouseInfoTest.java deleted file mode 100644 index dd8a2fa..0000000 --- a/backend/src/main/java/com/ssafy/salmanApp/test/HouseInfoTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.ssafy.salmanApp.test; - -import java.util.List; -import com.ssafy.salmanApp.model.dto.HouseInfoDTO; -import com.ssafy.salmanApp.model.dto.HouseDealDTO; -import com.ssafy.salmanApp.model.service.BasicHouseService; -import com.ssafy.salmanApp.model.service.HouseService; - -public class HouseInfoTest { - public static void main(String[] args) { - try { - HouseService houseService = BasicHouseService.getInstance(); - - // ── 전체 목록 조회 ── - System.out.println("===== 아파트 전체 목록 ====="); - for (HouseInfoDTO h : houseService.getAllHouseInfos()) { - System.out.println(h); - } - - // ── aptSeq로 단건 조회 ── - String testAptSeq = "11110-100"; - HouseInfoDTO fetchedHouse = houseService.getHouseInfoByAptSeq(testAptSeq); - System.out.println("아파트 단건 조회 : " + fetchedHouse); - - // ── 시군구 코드로 검색 ── - System.out.println("===== sggCd 11110 검색 ====="); - for (HouseInfoDTO h : houseService.getHouseInfosBySggCd("11110")) { - System.out.println(h); - } - - // ── 읍면동 코드로 검색 ── - System.out.println("===== umdCd 17400 검색 ====="); - for (HouseInfoDTO h : houseService.getHouseInfosByUmdCd("17400")) { - System.out.println(h); - } - - // ── 아파트명으로 검색 ── - System.out.println("===== 아파트명 '경희궁' 검색 ====="); - for (HouseInfoDTO h : houseService.getHouseInfosByAptNm("경희궁")) { - System.out.println(h); - } - - - } catch (Exception e) { - e.printStackTrace(); - } - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/ssafy/salmanApp/test/TXTest.java b/backend/src/main/java/com/ssafy/salmanApp/test/TXTest.java deleted file mode 100644 index c4b1c57..0000000 --- a/backend/src/main/java/com/ssafy/salmanApp/test/TXTest.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ssafy.salmanApp.test; - -import com.ssafy.salmanApp.model.dto.HouseDealDTO; -import com.ssafy.salmanApp.model.service.BasicHouseService; -import com.ssafy.salmanApp.model.service.HouseService; - -// 트랜잭션 테스트 - 거래 insert 후 rollback 확인 -public class TXTest { - public static void main(String[] args) { - try { - HouseService houseService = BasicHouseService.getInstance(); - - HouseDealDTO newDeal = new HouseDealDTO(); - newDeal.setAptSeq("11680-1234"); // 실제 DB에 있는 apt_seq로 변경 - newDeal.setAptDong("101"); - newDeal.setFloor("5"); - newDeal.setDealYear(2024); - newDeal.setDealMonth(6); - newDeal.setDealDay(1); - newDeal.setExcluUseAr(84.92); - newDeal.setDealAmount("130,000"); - - houseService.insertHouseDeal(newDeal); - System.out.println("거래 등록 성공 - no: " + newDeal.getNo()); - - } catch (Exception e) { - e.printStackTrace(); - System.out.println("거래 등록 실패 - 트랜잭션 롤백"); - } - } -} \ No newline at end of file diff --git a/backend/src/main/java/com/ssafy/salmanApp/util/DBUtil.java b/backend/src/main/java/com/ssafy/salmanApp/util/DBUtil.java deleted file mode 100644 index 2cad749..0000000 --- a/backend/src/main/java/com/ssafy/salmanApp/util/DBUtil.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.ssafy.salmanApp.util; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; -import java.util.Properties; - -public class DBUtil { - private static final String URL = "jdbc:mysql://localhost:3306/ssafy_home"; - // private static final String URL = "jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"; - - private static final String USER = "ssafy"; - private static final String PASSWORD = "ssafy"; - - static { - try { - Class.forName("com.mysql.cj.jdbc.Driver"); - } catch (ClassNotFoundException e) { - throw new RuntimeException("MySQL JDBC Driver not found", e); - } - } // jdbc4.0 이후 부터 생략 가능 : DriverManager.getConnection시에 드라이버라이브러리의 /META-INF/services/java.sql.Driver 파일 안에 들어있는 드라이버구현클래스의이름 읽어서 자동로딩처리함! - // 실행하는 환경에서 드라이버 로딩을 어떤식으로 처리하는지 다를 수 있다고 함 - // 따라서, 명시적 로딩 권장! - - public static Connection getConnection() throws SQLException { - Properties properties = new Properties(); - properties.setProperty("user", USER); - properties.setProperty("password", PASSWORD); - properties.setProperty("profileSQL", "true"); - return DriverManager.getConnection(URL, properties); - } - - public static void close(AutoCloseable... closeables) { - for (AutoCloseable res : closeables) { - try { - res.close(); - } catch (Exception e) { - e.printStackTrace(); - } - } - } -} \ No newline at end of file diff --git a/backend/target/classes/com/ssafy/salmanApp/model/dao/BasicHouseDealDAO.class b/backend/target/classes/com/ssafy/salmanApp/model/dao/BasicHouseDealDAO.class deleted file mode 100644 index ec8db28ee9a9cf4cccbb41ec752d12f413c40de8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7891 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 Mqx?f^UxJVR0~;L^UH||9 diff --git a/backend/target/classes/com/ssafy/salmanApp/model/dao/BasicHouseInfoDAO.class b/backend/target/classes/com/ssafy/salmanApp/model/dao/BasicHouseInfoDAO.class deleted file mode 100644 index 438f493045c48c636f39b4a1dfc18aa123bd56ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8343 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 AF#rGn diff --git a/backend/target/classes/com/ssafy/salmanApp/model/dao/HouseDealDAO.class b/backend/target/classes/com/ssafy/salmanApp/model/dao/HouseDealDAO.class deleted file mode 100644 index b18b9c1a2e94b6fd9a082cecc3e14db003fe32b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1267 zcmbW1QBM;=5Xb*pkxEeuVg*EbwdH|*CKZyyN+hW?l*;O*sP+$u+=w1Zmsw=;#R1k&_R;$p&3ZU2g2|# zCbP05h3W*oD&`oL&c&tRO6Z99PS0iEG1OyiW$FqkL#Npt%j|{XpN!Tdi;Zq~|53|L z*80|Kw@w&ppRf8d$wO@w3k;1SX?WZ%e8d#V`|A6nBl9T1VXF)SwU#9V;p9YXb()O) z%d+lo_Au`tCkvD+;w{4mzr1xfvCPGacVp|?3=3f#Y2mU|GJKyc>SLMq_NYc!|JFj{Y~cH2vxneZHtarAQf?eg?Y#@eWOn`D8|EX}XOm zx|}S~gRe%rGlte9WqpW0X4RHvtc4~^`|==Gv}DW0p3-aI&IdKm!0?2A7r--m{7*4Y z=PI4%=$l(=Se&vvf1r7Rms6TLmQcCRgJsHC!7IwQg4Z5TgFJ7r>hY|RXB}@no(-z` IZk+f1A6kiUegFUf diff --git a/backend/target/classes/com/ssafy/salmanApp/model/dao/HouseInfoDAO.class b/backend/target/classes/com/ssafy/salmanApp/model/dao/HouseInfoDAO.class deleted file mode 100644 index 02fde70f4b895063fe64603e1f31df7a7da1ce3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1028 zcmbtT%}&BV5S~S(f-sGGh=rDXjPmCW^+(1U<_zQtW?F`wT0k>q!x@3-}? z23Z270efN8Wx}T2=K(hrfubWM4^`4ipnckj+vL!tEnf(1b9~Y0{J^DVxgNWX+7p4o z^{dH)@u<`wPoSEB8V{YMMxbKzDSLCI2g=|>0=*?FrVb1hI>K($RuP7NqrhT{&-g83 zTzu}P{%daZSwj7~>n4Dbz{%qI+9cOVIWFxuQZ)$V4aXKtMIm46I6ZZ-ir*{bm;ECT0?MNTxvE0P2pXFe<2{_E_&#rHgGEI#cCx8~l%oiqF>H2IC=VxHyXm*D!J zjXmTD5Lm7=E@*nlu~&l>)UuDQ#(bEscmuq@b3DLbUvlmLlS>YjSOmUT$OV%Ght> zhj2!nF*?H^egHp*pTqHa_fir~hTI=cW^dnp_uXfApZ7=h&%a;(0pKQd1_KIqMb`>p z=xiSpLdUN;!E(J`sOhTf7pjpi+|~P`TXG%0wDBN=l)~}n&I_mDJHbxj!PaxP5-AJ> zT0xZ+hMan|?tZ5*vevd*j~ZUEv!syWY)J<@3h8ZM>xM$MO5mriLvdKddpd}AX()2Z zIZ(*C-&g$o$DzAS6IG%@rj~1ZKj6MYH@v`$K2#XY&uuECR(R?h1~F>k1V$8&t$Bfa zf4{cnHa46s-<5OeisNrO4Nt}`Wh&bBLWPC3m zV@Ra)7Ba|+biu-KEM2sai=}A`M`F867OYsxTR0j^wuLuvOx7+~IF2ldj&$q>g_HTY z?%fr}ACXe8=9YsOUg(jWKd^9Jw7FO-p&;rT7Gsg>EY+(L7oz;g!pDMqgvwGY zNJM|j!iwmvmfl2+Ox(7xDiZ=O3m874zH6b3PZW+)eY+!;c+!&0uUWV!o6Ec`i$iOK z`SHNQLwu%iy5{V;D>|q+(GxG)r4&X^5Rnw;e~y4&Zb^qRv#ESpLVTFRm{5h$eD?ye z$;CEtre!%Wq>@UChg6cl)~J5-qtW>@vz@lz*#EsVVexu^9dXiZuIt#_3 zWIs#AEv=(4YB=?KZnUebVGdiUW>8U>Zr2Adc%k>)LL8ql(W_1+(v1W00HJ^AylBfh z2E6M8Ro@M#*Rhkab!mO7KA1+n7z{<;^rOUH)bWWj<} z@4S3I&^Oh>g}4;9Byom_rtXPQZN>DVY}{}-VC;(6u6>6Sadh5PbM#+1U?#5kP8hmj z273xKU6l4BDT5k|%j->9Sz|^q$rKr6G7Mut3KOLPDNCkjQ8GPClIdBHOwV#;dKM$o zvlN-0g^2wq5m}u1eUqcB>=pa8{X0(nV$4qQo8vaXDWq_kKd{0XBb>n)M*{E`zXI?V zk9UN9Q2^}mCdTcBCeGQHo0zc2QcX&E(RBuCK zQK~obMJHsXjU;plQAG%086yd0LRL|#H&-cK#v(Z>P$&3rvzOa%m^r|c0&g2>HNS^eo)W?^q2K9>3bO(X;2^QsTfWHKN= z$@&0ICF6*1xIREL$$jN~K42ZA9oe=ONef>?ZD$m{t%wSM}V<^0BP|puK)l5 diff --git a/backend/target/classes/com/ssafy/salmanApp/model/dto/HouseInfoDTO.class b/backend/target/classes/com/ssafy/salmanApp/model/dto/HouseInfoDTO.class deleted file mode 100644 index f028ec6b8e4f6032a5f8b660ab90af5a30c4c640..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4840 zcmds4SyvoI6#klJfT0KpW^s%rgb*@x2$Ka90}=&dl8F<*K!`DJ4by>!nQk)OgW|sH zlh3~T?t`A==s9`t2lyNO3;qR<->sf4g6V$r_)v3i-KzTf)?KH5|Lfsz04DKG2U-l6 zD_$|<`_}#KjBgc+mOHh%nJIdCyO7BTUgo-2_U){D-@CFn*MT+zd)KWkD^sxC)y&-T zy1fz@NLZV}g8jfiU#_vZ5R@Eub;3Zqzq&e;CoLEAH9A}5eBD_ty9T;To|T_1E`+-h z;mm*vnQ6~$-Zfp;vvz(_FuIn@P9cBSwn_$!tbxvg6*xgTZ*!^OxvNz^@x0?Y!DR!j z>ER^B6googxI$;holxisxswXXkQ-L$4!KhbD&$Tp z^n_eSVNb}NRp<@5^9p;hPrmW2LSHDmsPF_5bb8>0!De88dU&Va1`gjUyMa?=9B(xQt5-q*XhZ(g7~g7Zs*N+DWMn zSrN`CT&W3fOO%W7s=~D<;cQWaS%n)l;SGs@5#|(bif|7xZ#9xZmgW@ZWl59>mqdC? zVL_z5b!nI;vUXcx=}|D9GqUum!d+Ps-Fc%>qk9Uk;|=B;h0~2}Vy0x}%v%a?%b9L2 z=c>si@@0h;k;}1MEz|l~S8Rp*ST%5{Xl>Xtp1WcNcbs62oF7ZV#hU{MjI;JumQslC^o$4%WQ9pTzt4 zumc|$7;Ll$$KCQa>`a)rVVGRCRsyfIE%Eb_f$y3vRoxu|UbozQ!S)App0`onoY-md zCdnfQ7q>U0~1KXd_(u^_ZE_j}MHt$nlAFW`W^fu=jA9NMt^c>7j#d4stv0sYXwJjV+h(;P2xT<3V1W0vC;jzx|;9ItV_$zeU@ar{V>7TPAn1@&zBZ@lim zH8{I`eVj6}L_+(q;Q`SQyr&=?40qHmDb|s71MAV4{c$lR1q5>=8gn2nrg&E{3(=T^ zaWN%M1hW{8ITRODB2F;fXv}n6Oo?5=^rA7%xR{a!g1H%uIT9CB@<}isL}QM|#gxnx z%u+PwnYfset%eDb+$S%h7s{#l@7mBbZy!m`xQ|&is46O9c~5{>9(r z?isx%4drJX`DZceYAQzU^Fp-{{@ub{URZ zr{C>b?(6d#Ex{2DHi2=Qo!guakJH=fXl~zZxB?oo1uE`tF4B^~D7V)iaC%*az=FoR ze;nsawSe9weQWS;^3~Tg3)qJ-)8X_v)c)q`(AV{b(=+m~&DH#R)IyiX?R5th3uKm* zt`V@+k-J<7jMtHmu>#o()qD7@vzGOwlk|z>%CA2`bEsiA={-OcNO0X#^TV49_bmy$d;UcB-Z059r82ZZ5uq znHpxK;EYL>bY>QFErsnZiskkX>KF~3+y=Vbeu0OEHIp=J8Ld1fo6#ExWdM(@{&P!O(z&`d5I_^yUZGM6Z9eF3+}QD3{7KRV`Op1>G} zsm|y1vW#e0U=krJyZ)^nM|h%oG#20?4d1i2jh@!=Fdm^XzY(bE3;61M-QDg0X)9S@ zx@I)0u}H&0fwDv{1uH(bJam+TnO$F!(3#Yjlddn(QKM>tF3`1H*iomWUJm8;^t!!) zmVnc>rM1`TGUW1QIv$gAqk4TFPdjHcG?1Gx;R>b4=Qm{4NYWqI(TJ4-SuQy$Fs)=m z&~>F#QOi{@b3)Q_7u|@>1hVR4yaXmBq((q+cXLkd9m)-+;TQ#TrL#vBx&~&|a6yUL zTf;gl{K|4`SFdk-P(})wMxo@c?XT$xv>00jmYDHV%Uc2@y0dy%A&A+LX;+PnI@<69 zfz?TpAsm%-cA!o=O>grfB4(P>;EZZG!C@v%Ur&cKV1yt`KRa}^%cRX?3o|0-7>-0V zurRu?S%Z7{7+8HHBxqaUp+$>tIqVM;{>aEVQnV>SXmtAnWZH`!4L*Uf(K9->qF1)d zfYIv=`1m-{(g^i+gE>wM0c_LI$EFgtV9n~-jvdThud#!|P-t0Di4pAL)f#>@JQY@Q zC@NZ;bJ35dbv%Qgu>R}(y<$RqGKUH6DUf|P=gez0G`$HGyGgY>vH;= zl&iG3UPgDX4gkRbuQf8LKEf~?Z>Y%`;wpf+-0Ui7B zn!xPD#G36W(uF9oVe+?hcGh(W%rXr`i%mEcRhkQ|8o{zOV7#v5psdU+f6$v)Cs%iO z)OE;2I;!KaTG%H?SPNDuOIm`Z+|(@>{$9tMY9aNhshhbRafXnQ8|fLsin7e`E}YPD z3~&8Utu<^=AlS!(?#L8U`6FLz`(-^kN*YF__m)ZN;b|SGa3-mTsTmZ=@X`;#_8qC& zazDA(dpgcZHf;2h^%_|OatVtd%^bG?$sF&(ppFYN$Nz7+7dFphNhIw|AUW4&I4RTx zlKr>>sEHpPQND-wl#qsWT)}mLlEh`3XyZ{GAXc@pi2Ac>`UtJv1cxzBa*d z8lHco;{)6fC{5ydqOEhJ>!x?PExx{9m$A$(?@trM_ZIVxS|JJNg@w(C|7Y=UuDpEl z=9?k!GU}I?3jP*wbPUFFRUY5wa9;j5`U*tbMT~nF1!wu1feHMZ%|*aCOjILslvh0S z!v?;|*@Ci*m{fKN_npW6{F#0p#bE>auyIKt|BmOCCZGQbl`%c|DP}7Vb9h}UG0o0W zGl1jA?JRe((Z2_{hYgkd2XZTY zsv;G@bdJs-wwd&87S|PXM`hPj@zOF3G{FxNB8%f78J8`u;ZW^s@XYh-qBbS)IiTIkF~Q~4m++^e#VvR%NB2eC5~a_Xl7hwgl7Wy*8I5}X~8G)39*b+ir}R2_NXp>H-- zM=PibzzV)KlHew0QZq??f@C)HI=o6%z&cjIMy$qDScA=2%dgk**xbgW_WQ4_hVl%b#q z+gP?zc7zg}d|8lFk)hx!OtKme;@1g0|BdoIp{^WCQ&-${ehYQQ!zgsqk1f;{4;}0# zZC>SkysrE<6?D$1M6#Pm_9Q{_hg6Up!yn^hEJ;gOGIo4eDN4VkKTn`9P>Nn8sFw(I zAGQ8vYW*vei&v@j`>FK@C{M3Z>-SUT4^Zn5DgxqL`bk?Zz1Tiw5bvZJ=GSTLFvEO=VLnRqhZ*K04D(Tj`HduD9>7_JGP0!?gj+h#DIp0t zmtv6Ly+=VlMwrJLm@5$lzJomgvk}eVWAW6DRlCF@XKar%XB-=*5IBw3sdQQd%waL&Cp7n>X1)Z?T2mAO$zs zLT|B!-c~SEZ=qWf%Jt=hEz~-!rFAs_8=e1{b^HnI_)|LmG3)pf*72vTB3(;Uk^Vs>pApIDMDhiZd`2Xn6Ui4u@?{bv?~h!OKER(7;P{Ke zae-UQ(_|%&V@>jGTs~#$AU?G5;2b=Im8%BQ4e4JIg;QxB%D6KNN{Xv|y2&Sb8?~#0TJTm_C}ozHP#)Aos6@E_ K7Qe{A?f(M(Q{6NG diff --git a/backend/target/classes/com/ssafy/salmanApp/model/service/HouseService.class b/backend/target/classes/com/ssafy/salmanApp/model/service/HouseService.class deleted file mode 100644 index c6f800af5c28f32669785f172c16482a3f8c715d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1672 zcmb_c+iuf95S>j!L&GKMB@`%k3U!Lq{eS?%p&%lKR;r;=9~XOTT-j^ayROKu@xTZ0 zQHWWaG>+{^3Gfu{oRc|c_Kf%EukSwq;1#@RK#jnj9R^fNb~>Vx`2iDV6wx4bxKAaI zFFc#m4`Cv?l^q&TC(u4)7mWH$xb*PL8MhUImM4&|QtCjQh6JcFoZZ?{Vb)f2_dgx> zy2k{X@4neQQeG%z16ByEPh>6;0vj%$$n-~Mq%3|;;Egey&@B~v!tHezaey-%MgeY*)D~n>m_;_Rp3+2adK>bc(qh1k-!7&zV2(-e~T4Z}i=#7q5%`(LuU= zgSo;Vx0wz68o;doGRm>Mj+<=<}P7B&loAiNI>{x>}?6(dZ6-Wn> zTQiZ(naFLpQ&7GOTZPKK66ZcVC~zKD`hA419#?8VLF6fHS4{E@k>{{eff%USP48j% EH$!#1;{X5v diff --git a/backend/target/classes/com/ssafy/salmanApp/test/HouseDealTest.class b/backend/target/classes/com/ssafy/salmanApp/test/HouseDealTest.class deleted file mode 100644 index f37f38074d829d94f3f5223dee7006e323b58c89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2790 zcmb7G-E$LF6#v~e?WXAhrKLaxAxK;LNg5EU4OrU(QcYVlwaAC)ZF1Wz-Ry?!rV>R( zL1!EtpL}5OW8?{S#u>^W5}Z+Id~n8p!DnZX))}9CU`Fb>yGfh0;ls>i@9w>Of9IUv z`JHq3x4Sog1h5z96_hbFN6kdQviL+MU~xUcjlN_uU<=C*95mCG*eAF?N>2(r3^gbD zG!N+9m<)`JpA=D>p>mIAX!cVK^+ohW zGL|h8DjvZGqRvbcll5*Kni)7mLD&?E;E9kIk23i8%Af!C%$3zhwm+D&V!B$;O5qV* zeY(CN8_H)bappLbwlzHv)+{?zjdpY@=wMh`yrN<|0t{Zw7AbC%}Z@i=yoIt+1|I9-!RD9~(3K{rF&y+e%I=A!oZjgClipOhT-EMd;A0aBav zXpc%IMRlOWxi#z7Rc$(44VvrmcjdpYN;n7ANJvZg8ju>azwA< z85|_@(_BxBkqIj7!X)QiU7q(^>IKiLcn)EPbqPKt223N$?ZcWKr#mTrn-WDSd6?CO#`ocr{Xdzm?*;uXBguwjWAX`;`F4Vi`=mqHy}Zp(*p#1usHRqcp) z|LLem+L~#o5Ke=2sybrx=+tP6%SPqlsYyy%U5UoXpvGla&-FQmu7_x8PBL;ksPVEG zL&tr#EfXyr67oEedS`>wRVRcUjf58a=~Pr4 z(43QGK_>Eq+AcFih0$-Cwq>Vya!A;5GiLel8Zrt_lY*RFI%YIu+ME&rS4OVl5AY~; zos2An*BLGpsx9}n3wV$lF)6zuMI%ENZ4ASgv8FSNE{316dx&1>xQ-`ig5+{> z{!h=|_KjKemSLDyI&Wa$CI$gQkVr!ksdglb=gVBIo{Gy@*HDp1>+#TA4IaXia}MAi za^H(`-)iOeEDry_jmL5uYpSz&x%{DRUWPZ^ejR+qA?XhOr8ZCwN#P0llmHRvA;MIm ztO+&fpm7&{uXLjxy;zH3G+>OrD{O4Q85-ZG)9YjS@h#=+I~sqYUB99kx3CR=(|8AM zxQljHhE69n$0;2|KPE6qwmkR;acJa86Q$=QrYP6l_ysx=bk~a?V9;DSS@Sxp9Vs^9}l+!CUm?qr1294$h(BKeven+yDRo diff --git a/backend/target/classes/com/ssafy/salmanApp/test/HouseInfoTest.class b/backend/target/classes/com/ssafy/salmanApp/test/HouseInfoTest.class deleted file mode 100644 index 648731e7f87fc7c46365f3a300b48e94c8ee4921..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2815 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 Date: Mon, 15 Jun 2026 10:29:13 +0900 Subject: [PATCH 2/3] =?UTF-8?q?chore(be):=20SpringBoot=20=EC=B4=88?= =?UTF-8?q?=EA=B8=B0=20=EC=84=B8=ED=8C=85=20(#3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/.gitattributes | 2 + backend/.gitignore | 33 ++ backend/.mvn/wrapper/maven-wrapper.properties | 3 + backend/mvnw | 295 ++++++++++++++++++ backend/mvnw.cmd | 189 +++++++++++ backend/pom.xml | 54 ++++ .../ssafy/salmanhae/SalmanhaeApplication.java | 13 + .../src/main/resources/application.properties | 1 + .../salmanhae/SalmanhaeApplicationTests.java | 13 + 9 files changed, 603 insertions(+) create mode 100644 backend/.gitattributes create mode 100644 backend/.gitignore create mode 100644 backend/.mvn/wrapper/maven-wrapper.properties create mode 100755 backend/mvnw create mode 100644 backend/mvnw.cmd create mode 100644 backend/pom.xml create mode 100644 backend/src/main/java/com/ssafy/salmanhae/SalmanhaeApplication.java create mode 100644 backend/src/main/resources/application.properties create mode 100644 backend/src/test/java/com/ssafy/salmanhae/SalmanhaeApplicationTests.java diff --git a/backend/.gitattributes b/backend/.gitattributes new file mode 100644 index 0000000..3b41682 --- /dev/null +++ b/backend/.gitattributes @@ -0,0 +1,2 @@ +/mvnw text eol=lf +*.cmd text eol=crlf diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 0000000..667aaef --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/backend/.mvn/wrapper/maven-wrapper.properties b/backend/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..216df05 --- /dev/null +++ b/backend/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,3 @@ +wrapperVersion=3.3.4 +distributionType=only-script +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.16/apache-maven-3.9.16-bin.zip diff --git a/backend/mvnw b/backend/mvnw new file mode 100755 index 0000000..bd8896b --- /dev/null +++ b/backend/mvnw @@ -0,0 +1,295 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.3.4 +# +# Optional ENV vars +# ----------------- +# JAVA_HOME - location of a JDK home dir, required when download maven via java source +# MVNW_REPOURL - repo url base for downloading maven distribution +# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output +# ---------------------------------------------------------------------------- + +set -euf +[ "${MVNW_VERBOSE-}" != debug ] || set -x + +# OS specific support. +native_path() { printf %s\\n "$1"; } +case "$(uname)" in +CYGWIN* | MINGW*) + [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" + native_path() { cygpath --path --windows "$1"; } + ;; +esac + +# set JAVACMD and JAVACCMD +set_java_home() { + # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched + if [ -n "${JAVA_HOME-}" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACCMD="$JAVA_HOME/jre/sh/javac" + else + JAVACMD="$JAVA_HOME/bin/java" + JAVACCMD="$JAVA_HOME/bin/javac" + + if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then + echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 + echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 + return 1 + fi + fi + else + JAVACMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v java + )" || : + JAVACCMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v javac + )" || : + + if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then + echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 + return 1 + fi + fi +} + +# hash string like Java String::hashCode +hash_string() { + str="${1:-}" h=0 + while [ -n "$str" ]; do + char="${str%"${str#?}"}" + h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) + str="${str#?}" + done + printf %x\\n $h +} + +verbose() { :; } +[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } + +die() { + printf %s\\n "$1" >&2 + exit 1 +} + +trim() { + # MWRAPPER-139: + # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. + # Needed for removing poorly interpreted newline sequences when running in more + # exotic environments such as mingw bash on Windows. + printf "%s" "${1}" | tr -d '[:space:]' +} + +scriptDir="$(dirname "$0")" +scriptName="$(basename "$0")" + +# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties +while IFS="=" read -r key value; do + case "${key-}" in + distributionUrl) distributionUrl=$(trim "${value-}") ;; + distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; + esac +done <"$scriptDir/.mvn/wrapper/maven-wrapper.properties" +[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" + +case "${distributionUrl##*/}" in +maven-mvnd-*bin.*) + MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ + case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in + *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; + :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; + :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; + :Linux*x86_64*) distributionPlatform=linux-amd64 ;; + *) + echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 + distributionPlatform=linux-amd64 + ;; + esac + distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" + ;; +maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; +*) MVN_CMD="mvn${scriptName#mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; +esac + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" +distributionUrlName="${distributionUrl##*/}" +distributionUrlNameMain="${distributionUrlName%.*}" +distributionUrlNameMain="${distributionUrlNameMain%-bin}" +MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" +MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" + +exec_maven() { + unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : + exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" +} + +if [ -d "$MAVEN_HOME" ]; then + verbose "found existing MAVEN_HOME at $MAVEN_HOME" + exec_maven "$@" +fi + +case "${distributionUrl-}" in +*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; +*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; +esac + +# prepare tmp dir +if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then + clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } + trap clean HUP INT TERM EXIT +else + die "cannot create temp dir" +fi + +mkdir -p -- "${MAVEN_HOME%/*}" + +# Download and Install Apache Maven +verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +verbose "Downloading from: $distributionUrl" +verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +# select .zip or .tar.gz +if ! command -v unzip >/dev/null; then + distributionUrl="${distributionUrl%.zip}.tar.gz" + distributionUrlName="${distributionUrl##*/}" +fi + +# verbose opt +__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' +[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v + +# normalize http auth +case "${MVNW_PASSWORD:+has-password}" in +'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; +has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; +esac + +if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then + verbose "Found wget ... using wget" + wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" +elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then + verbose "Found curl ... using curl" + curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" +elif set_java_home; then + verbose "Falling back to use Java to download" + javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" + targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" + cat >"$javaSource" <<-END + public class Downloader extends java.net.Authenticator + { + protected java.net.PasswordAuthentication getPasswordAuthentication() + { + return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); + } + public static void main( String[] args ) throws Exception + { + setDefault( new Downloader() ); + java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); + } + } + END + # For Cygwin/MinGW, switch paths to Windows format before running javac and java + verbose " - Compiling Downloader.java ..." + "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" + verbose " - Running Downloader.java ..." + "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" +fi + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +if [ -n "${distributionSha256Sum-}" ]; then + distributionSha256Result=false + if [ "$MVN_CMD" = mvnd.sh ]; then + echo "Checksum validation is not supported for maven-mvnd." >&2 + echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + elif command -v sha256sum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c - >/dev/null 2>&1; then + distributionSha256Result=true + fi + elif command -v shasum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then + distributionSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 + echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + fi + if [ $distributionSha256Result = false ]; then + echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 + echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 + exit 1 + fi +fi + +# unzip and move +if command -v unzip >/dev/null; then + unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" +else + tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" +fi + +# Find the actual extracted directory name (handles snapshots where filename != directory name) +actualDistributionDir="" + +# First try the expected directory name (for regular distributions) +if [ -d "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" ]; then + if [ -f "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD" ]; then + actualDistributionDir="$distributionUrlNameMain" + fi +fi + +# If not found, search for any directory with the Maven executable (for snapshots) +if [ -z "$actualDistributionDir" ]; then + # enable globbing to iterate over items + set +f + for dir in "$TMP_DOWNLOAD_DIR"/*; do + if [ -d "$dir" ]; then + if [ -f "$dir/bin/$MVN_CMD" ]; then + actualDistributionDir="$(basename "$dir")" + break + fi + fi + done + set -f +fi + +if [ -z "$actualDistributionDir" ]; then + verbose "Contents of $TMP_DOWNLOAD_DIR:" + verbose "$(ls -la "$TMP_DOWNLOAD_DIR")" + die "Could not find Maven distribution directory in extracted archive" +fi + +verbose "Found extracted Maven distribution directory: $actualDistributionDir" +printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url" +mv -- "$TMP_DOWNLOAD_DIR/$actualDistributionDir" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" + +clean || : +exec_maven "$@" diff --git a/backend/mvnw.cmd b/backend/mvnw.cmd new file mode 100644 index 0000000..92450f9 --- /dev/null +++ b/backend/mvnw.cmd @@ -0,0 +1,189 @@ +<# : batch portion +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.3.4 +@REM +@REM Optional ENV vars +@REM MVNW_REPOURL - repo url base for downloading maven distribution +@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output +@REM ---------------------------------------------------------------------------- + +@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) +@SET __MVNW_CMD__= +@SET __MVNW_ERROR__= +@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% +@SET PSModulePath= +@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( + IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) +) +@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% +@SET __MVNW_PSMODULEP_SAVE= +@SET __MVNW_ARG0_NAME__= +@SET MVNW_USERNAME= +@SET MVNW_PASSWORD= +@IF NOT "%__MVNW_CMD__%"=="" ("%__MVNW_CMD__%" %*) +@echo Cannot start maven from wrapper >&2 && exit /b 1 +@GOTO :EOF +: end batch / begin powershell #> + +$ErrorActionPreference = "Stop" +if ($env:MVNW_VERBOSE -eq "true") { + $VerbosePreference = "Continue" +} + +# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties +$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl +if (!$distributionUrl) { + Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" +} + +switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { + "maven-mvnd-*" { + $USE_MVND = $true + $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" + $MVN_CMD = "mvnd.cmd" + break + } + default { + $USE_MVND = $false + $MVN_CMD = $script -replace '^mvnw','mvn' + break + } +} + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +if ($env:MVNW_REPOURL) { + $MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { "/org/apache/maven/" } else { "/maven/mvnd/" } + $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace "^.*$MVNW_REPO_PATTERN",'')" +} +$distributionUrlName = $distributionUrl -replace '^.*/','' +$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' + +$MAVEN_M2_PATH = "$HOME/.m2" +if ($env:MAVEN_USER_HOME) { + $MAVEN_M2_PATH = "$env:MAVEN_USER_HOME" +} + +if (-not (Test-Path -Path $MAVEN_M2_PATH)) { + New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null +} + +$MAVEN_WRAPPER_DISTS = $null +if ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) { + $MAVEN_WRAPPER_DISTS = "$MAVEN_M2_PATH/wrapper/dists" +} else { + $MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + "/wrapper/dists" +} + +$MAVEN_HOME_PARENT = "$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain" +$MAVEN_HOME_NAME = ([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' +$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" + +if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { + Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" + Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" + exit $? +} + +if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { + Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" +} + +# prepare tmp dir +$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile +$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" +$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null +trap { + if ($TMP_DOWNLOAD_DIR.Exists) { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } + } +} + +New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null + +# Download and Install Apache Maven +Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +Write-Verbose "Downloading from: $distributionUrl" +Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +$webclient = New-Object System.Net.WebClient +if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { + $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) +} +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum +if ($distributionSha256Sum) { + if ($USE_MVND) { + Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." + } + Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash + if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { + Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." + } +} + +# unzip and move +Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null + +# Find the actual extracted directory name (handles snapshots where filename != directory name) +$actualDistributionDir = "" + +# First try the expected directory name (for regular distributions) +$expectedPath = Join-Path "$TMP_DOWNLOAD_DIR" "$distributionUrlNameMain" +$expectedMvnPath = Join-Path "$expectedPath" "bin/$MVN_CMD" +if ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path $expectedMvnPath -PathType Leaf)) { + $actualDistributionDir = $distributionUrlNameMain +} + +# If not found, search for any directory with the Maven executable (for snapshots) +if (!$actualDistributionDir) { + Get-ChildItem -Path "$TMP_DOWNLOAD_DIR" -Directory | ForEach-Object { + $testPath = Join-Path $_.FullName "bin/$MVN_CMD" + if (Test-Path -Path $testPath -PathType Leaf) { + $actualDistributionDir = $_.Name + } + } +} + +if (!$actualDistributionDir) { + Write-Error "Could not find Maven distribution directory in extracted archive" +} + +Write-Verbose "Found extracted Maven distribution directory: $actualDistributionDir" +Rename-Item -Path "$TMP_DOWNLOAD_DIR/$actualDistributionDir" -NewName $MAVEN_HOME_NAME | Out-Null +try { + Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null +} catch { + if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { + Write-Error "fail to move MAVEN_HOME" + } +} finally { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } +} + +Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" diff --git a/backend/pom.xml b/backend/pom.xml new file mode 100644 index 0000000..abdb45e --- /dev/null +++ b/backend/pom.xml @@ -0,0 +1,54 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.5.15 + + + com.ssafy + salmanhae + 0.0.1-SNAPSHOT + + + + + + + + + + + + + + + + + 21 + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/backend/src/main/java/com/ssafy/salmanhae/SalmanhaeApplication.java b/backend/src/main/java/com/ssafy/salmanhae/SalmanhaeApplication.java new file mode 100644 index 0000000..9d8e47c --- /dev/null +++ b/backend/src/main/java/com/ssafy/salmanhae/SalmanhaeApplication.java @@ -0,0 +1,13 @@ +package com.ssafy.salmanhae; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SalmanhaeApplication { + + public static void main(String[] args) { + SpringApplication.run(SalmanhaeApplication.class, args); + } + +} diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties new file mode 100644 index 0000000..0a57d49 --- /dev/null +++ b/backend/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.application.name=salmanhae diff --git a/backend/src/test/java/com/ssafy/salmanhae/SalmanhaeApplicationTests.java b/backend/src/test/java/com/ssafy/salmanhae/SalmanhaeApplicationTests.java new file mode 100644 index 0000000..30e05bb --- /dev/null +++ b/backend/src/test/java/com/ssafy/salmanhae/SalmanhaeApplicationTests.java @@ -0,0 +1,13 @@ +package com.ssafy.salmanhae; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class SalmanhaeApplicationTests { + + @Test + void contextLoads() { + } + +} From 14b10f721e151489b7b34eeabf60543db9efb580 Mon Sep 17 00:00:00 2001 From: crolvlee Date: Mon, 15 Jun 2026 10:35:23 +0900 Subject: [PATCH 3/3] =?UTF-8?q?docs(be):=20ARCHITECTURE.md=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/02_ARCHITECTURE.md | 46 ++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/docs/02_ARCHITECTURE.md b/docs/02_ARCHITECTURE.md index b5f24ba..5e438b4 100644 --- a/docs/02_ARCHITECTURE.md +++ b/docs/02_ARCHITECTURE.md @@ -32,7 +32,7 @@ salmanhae/ │ ├── api/ # Axios 클라이언트 + API 함수 │ └── utils/ # 순수 유틸리티 함수 ├── backend/ # Spring Boot 3 (Cloud Run) -│ └── src/main/java/com/ssafy/salman/ +│ └── src/main/java/com/ssafy/salmanhae/ │ ├── config/ # Security, CORS, Swagger, Beans │ ├── controller/ # REST 엔드포인트 (입력 검증·위임만) │ ├── model/ @@ -52,11 +52,13 @@ salmanhae/ ## 서비스별 역할 ### Frontend (Vue 3 + 네이버지도 SDK) + - 네이버지도 SDK로 지도 렌더링, 마커, 레이어 표시 - Spring Boot REST API 호출 (매물, 안전, 실거래가, 챗봇) - Supabase Auth JWT를 Axios Interceptor로 자동 첨부 ### Spring Boot (Cloud Run) + - 회원가입/로그인/로그아웃 API (Supabase Auth 래핑) - Supabase JWT 검증 (Spring Security Filter) - 공공데이터 배치 수집 → PostgreSQL 저장 @@ -65,6 +67,7 @@ salmanhae/ - 메시지 로깅, 찜하기, 대화 세션 관리 ### Python FastAPI + LangGraph (Cloud Run) + - 사용자 입력 의도 분류 (매물 추천 / 법률 상담 / 시세 분석 / 안전 분석) - 의도별 툴 실행: - `search_properties` → Spring Boot API 호출 @@ -74,31 +77,32 @@ salmanhae/ - Claude API로 최종 자연어 응답 생성 ### Supabase + - Auth: JWT 발급, 이메일/소셜 로그인 관리 - DB (PostgreSQL): 매물, 실거래가, 안전시설, 찜하기, 대화 기록, 사용자 - pgvector: 법률 문서 임베딩, 뉴스 임베딩 ## 서비스 간 통신 규칙 -| 출발 | 도착 | 허용 | 내용 | -|------|------|------|------| -| Frontend | Spring Boot | O | REST HTTPS | -| Frontend | FastAPI | X | 직접 호출 금지 | -| Spring Boot | FastAPI | O | HTTP POST 내부망 | -| FastAPI | Spring Boot | O | HTTP GET 내부망 (툴 호출) | -| FastAPI | Supabase pgvector | O | SQL | -| FastAPI | Claude API | O | HTTPS | -| Spring Boot | Supabase Auth | O | HTTPS | +| 출발 | 도착 | 허용 | 내용 | +| ----------- | ----------------- | ---- | ------------------------- | +| Frontend | Spring Boot | O | REST HTTPS | +| Frontend | FastAPI | X | 직접 호출 금지 | +| Spring Boot | FastAPI | O | HTTP POST 내부망 | +| FastAPI | Spring Boot | O | HTTP GET 내부망 (툴 호출) | +| FastAPI | Supabase pgvector | O | SQL | +| FastAPI | Claude API | O | HTTPS | +| Spring Boot | Supabase Auth | O | HTTPS | ## 데이터베이스 PostgreSQL (Supabase) + pgvector 단일 인스턴스. -| 용도 | 테이블 | -|------|--------| +| 용도 | 테이블 | +| ------ | ---------------------------------------------------------------------------------------------------------- | | 관계형 | property, transaction_history, safety_facility, wishlist, user, conversation_session, conversation_message | -| 벡터 | 법률 문서 임베딩, 뉴스 임베딩 (pgvector) | -| 통계 | property_score_stat (안전·가격 점수 사전 계산) | +| 벡터 | 법률 문서 임베딩, 뉴스 임베딩 (pgvector) | +| 통계 | property_score_stat (안전·가격 점수 사전 계산) | ## 배치 흐름 @@ -115,10 +119,10 @@ Spring Scheduler ## 설계 패턴 -| 패턴 | 적용 위치 | -|------|----------| -| Controller → Service → DAO (MyBatis) | Spring Boot 전 도메인 | -| LangGraph State Machine | AI 에이전트 의도 분류 → 툴 선택 → 응답 생성 | -| Pinia Store per Feature | Frontend (map, chat, auth, wishlist) | -| Axios Interceptor | JWT 자동 첨부, 401 처리 | -| Batch → DB 캐싱 | 공공 API 데이터 — 런타임에 외부 호출 없음 | +| 패턴 | 적용 위치 | +| ------------------------------------ | ------------------------------------------- | +| Controller → Service → DAO (MyBatis) | Spring Boot 전 도메인 | +| LangGraph State Machine | AI 에이전트 의도 분류 → 툴 선택 → 응답 생성 | +| Pinia Store per Feature | Frontend (map, chat, auth, wishlist) | +| Axios Interceptor | JWT 자동 첨부, 401 처리 | +| Batch → DB 캐싱 | 공공 API 데이터 — 런타임에 외부 호출 없음 |