Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
bcac197
[UNI-160] feat & refactor : 길찾기 로직에서 FE 요구사항 반영 및 건물노드 관련 로직 수정 (#78)
thdgustjd1 Feb 8, 2025
500418f
[UNI-138] 테스트 환경 복구 및 ci/cd 테스트 환경 구축 (#79)
mikekks Feb 8, 2025
e0f0b96
[UNI-157] 코드 리팩토링 (1차) (#80)
mikekks Feb 8, 2025
e919cb4
[UNI-172] 코드 리팩토링 (2차) (#81)
mikekks Feb 8, 2025
e9fcfe5
[UNI-174] fix: 빠른 길 계산에서 불변 리스트 반환에 대한 오류 처리 (#82)
mikekks Feb 8, 2025
4a20ab4
[UNI-159] fix : 길찾기 결과가 정렬되지 않던 문제 해결 (#85)
thdgustjd1 Feb 9, 2025
9845ede
[UNI-168] feat : 백엔드 API 변경사항 적용 및 코드 리팩토링 (#84)
jpark0506 Feb 9, 2025
340cac5
[UNI-175] feat : Router로 페이지별 작업 환경 설정하기 (#87)
jpark0506 Feb 9, 2025
6054594
[UNI-145] feat : 에러 바운더리 생성 및 POST 에러 핸들링 로직 (#88)
dgfh0450 Feb 9, 2025
a15c0bb
[UNI-176] fix : API 변수명 변경 적용 (cautionTypes -> cautionFactors, danger…
dgfh0450 Feb 9, 2025
7003a4a
[UNI-177] feat : ADMIN 페이지, 선택 간선, 노드 ID 조회 페이지 생성 (#90)
dgfh0450 Feb 9, 2025
e7b74f9
[UNI-166] feat : ADMIN 페이지 건물 선택, 건물 수정, 건물 추가 기능 추가 (#91)
jpark0506 Feb 10, 2025
a472194
[UNI-145] fix : 백엔드 요청, 필드명 변경 (#92)
dgfh0450 Feb 10, 2025
1ee3587
[UNI-154, UNI-155] feat : 빌딩 노드 추가 API 개발 (#83)
thdgustjd1 Feb 10, 2025
7b69127
[UIN-184] 길찾기 로직에서 좌/우회전이 반대로 적용되던 오류 수정 (#94)
thdgustjd1 Feb 10, 2025
2bd8b1d
[UNI-178], [UNI-179] fix : 클라이언트 요청값 검증 로직 구현 (#93)
mikekks Feb 10, 2025
3eba903
[UNI-185] fix: 기존 선과 동일하거나 겹치는 경우 예외 발생 (일반 크로스 체크와 self 크로스에 따라 분기처리…
mikekks Feb 10, 2025
e3ee89d
[UNI-180] 건물 추가 API 연결 및 건물 -> 길 이어주는 UI 및 state 생성 (#97)
jpark0506 Feb 10, 2025
4028bc0
[UNI-167] feat, fix, refactor : 구글 구면좌표계 도입, QA waypoint 마커 제거, 새로운 길…
dgfh0450 Feb 10, 2025
2bcde9a
[UNI-156] 빌딩과 연결된 간선 API 개발 (#96)
thdgustjd1 Feb 10, 2025
971e539
[UNI-189] feat : 건물 -> 길 연결 API 반영 (#101)
jpark0506 Feb 10, 2025
82c6c34
[UNI-187] fix : Navigation Result의 마커 위치 변경 (#100)
jpark0506 Feb 11, 2025
b80ad9c
[UNI-188] refactor : 불편한 길 제보 페이지 & 새로운 길 제보 페이지 useMutation -> useMu…
dgfh0450 Feb 11, 2025
4bf5c9c
[UNI-190] feat : 건물 리스트 API 적용 및 Default 도착지 제거 (#103)
dgfh0450 Feb 11, 2025
23461c0
[UNI-191] fix : 변수 하드코딩 제거 (#104)
dgfh0450 Feb 11, 2025
946cecf
[UNI-192] QA : 길찾기 로직 예외처리 수정 (#105)
thdgustjd1 Feb 11, 2025
2be858b
[UNI-193] fix : 모든 길 조회 로직에서 building route를 따로 제공하는 로직 추가 (#106)
thdgustjd1 Feb 11, 2025
7cf06b4
[UNI-200] fix : 구글맵 batch size 조정 (512->100) (#108)
thdgustjd1 Feb 11, 2025
c4ca68c
[UNI-133] fix: 길 추가에서 셀프 크로스 오류 해결 (#107)
mikekks Feb 11, 2025
bb6186a
[UNI-196] feat : 길찾기 결과 경로 없음 에러(422) 화면 및 커스텀 훅 추가 (#109)
dgfh0450 Feb 11, 2025
ee88d5a
[UNI-27] feat: 어드민 롤백 API 구현 (#111)
mikekks Feb 11, 2025
67e0cc3
[UNI-207] fix : 일부 모바일 브라우저에서 form이 x축으로 스크롤이 가능한 문제 (#114)
jpark0506 Feb 11, 2025
f23166c
[UNI-206] fix : 건물이 정가운데로 오지 않는 문제 해결 (#113)
jpark0506 Feb 11, 2025
033464c
[UNI-195] Post 요청에 대한 debounce 적용 (#110)
jpark0506 Feb 12, 2025
9468c4c
[UNI-212] feat : 위험 주의 마커 요소 여러개인 경우 애니메이션 추가가 (#116)
dgfh0450 Feb 12, 2025
5b03322
[UNI-201] fix : (QA 수정 사항) 지도 메인페이지 줌 아웃시 위험 주의 비활성화 로직 제거 / 불편한 길 반영…
dgfh0450 Feb 12, 2025
7baf013
[UNI-211] feat : 건물과 길을 이어주는 길 생성 (#117)
jpark0506 Feb 12, 2025
3738330
[UNI-215] fix : 구글 구면좌표계 제거 및 interpolate 함수 및 distance 함수 구현 (#118)
dgfh0450 Feb 12, 2025
6e897ec
[UNI-208] refactor : 지도 메인 페이지 바텀 시트 react-spring-bottom-sheet 라이브러리 …
dgfh0450 Feb 13, 2025
fb6632c
[UNI-221] feat : 지도 메인 페이지, UX/UI 변경 (#121)
dgfh0450 Feb 13, 2025
5a7cc2d
[UNI-209] refactor: 패키지 구조 리팩토링 및 계산 관련 로직 응집화 (#119)
mikekks Feb 13, 2025
f3795be
[UNI-24] 특정 revision의 맵 정보 조회 API 개발 (#124)
thdgustjd1 Feb 13, 2025
c939dd9
[UNI-139] refactor: 로깅 메세지 가독성 좋게 변경 (#125)
mikekks Feb 13, 2025
b3319d2
[UNI-216] fix : 길 찾기 오류 해결 (#126)
thdgustjd1 Feb 13, 2025
efbb9ab
[UNI-230] fix : reportForm 오타 수정 (#129)
dgfh0450 Feb 13, 2025
860fcfe
[UNI-231] fix : enum을 enums 패키지로 이동 (#130)
thdgustjd1 Feb 13, 2025
aaff872
[UNI-219] feat: 로그인 기능 구현 및 JWT 인터셉터 구현 (#128)
mikekks Feb 13, 2025
06b4ada
[UNI-228] feat: 특정 버전 지도 조회 API 컨트롤러 구현 (#131)
mikekks Feb 13, 2025
c3b4cbe
[UNI-221] feat : 지도 메인페이지 UX 개선 및 길찾기 사용자 로직 변경 (#127)
dgfh0450 Feb 14, 2025
657a2c1
[UNI-77] feat : 한글 debounced 입력 구현 / 학교 검색, 건물 검색 API 연결 (#136)
dgfh0450 Feb 14, 2025
e069e68
[UNI-235] feat : 에러바운더리 key 부여 (#137)
dgfh0450 Feb 14, 2025
7fe3b5d
[UNI-194] feat : 길 찾기 로직을 도보, 휠체어, 전동휠체어로 제공하도록 구현 (#132)
thdgustjd1 Feb 14, 2025
87fa256
[UNI-217] fix: 길 추가시 동일한 노드 판단 로직 구현 (#133)
mikekks Feb 14, 2025
a011f4e
[UNI-213] feat: 롤백 기능시 건물노드 삭제 기능 포함 (#135)
mikekks Feb 14, 2025
e9bdac0
[FE] 스프린트 3 개발 산출물
dgfh0450 Feb 14, 2025
390f10a
[BE] 스프린트 3 개발 산출물
mikekks Feb 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/be-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,4 @@ jobs:
- name: Build and analyze (SpringBoot)
run: |
cd uniro_backend
./gradlew clean build -x test
./gradlew clean build
28 changes: 28 additions & 0 deletions uniro_admin_frontend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions uniro_admin_frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
"@googlemaps/js-api-loader": "^1.16.8",
"@tailwindcss/vite": "^4.0.0",
"@tanstack/react-query": "^5.66.0",
"@tanstack/react-query-devtools": "^5.66.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-router": "^7.1.3",
Expand Down
11 changes: 4 additions & 7 deletions uniro_admin_frontend/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
import { Outlet } from "react-router";
import "./App.css";
import NavBar from "./components/navBar";
import LogListContainer from "./container/logListContainer";
import MainContainer from "./container/mainContainer";
import MapContainer from "./container/mapContainer";
import SubNavBar from "./components/subNavBar";

function App() {
return (
<div className="w-full h-screen flex flex-col items-center justify-center space-y-1">
<NavBar />
<MainContainer>
<LogListContainer />
<MapContainer />
</MainContainer>
<SubNavBar />
<Outlet />
</div>
);
}
Expand Down
29 changes: 29 additions & 0 deletions uniro_admin_frontend/src/AppRouter.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { BrowserRouter, Route, Routes } from "react-router";
import App from "./App";
import LogPage from "./page/logPage";
import BuildingPage from "./page/buildingPage";
import SimulationPage from "./page/simulationPage";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { ReactQueryDevtools } from "@tanstack/react-query-devtools";

const queryClient = new QueryClient();

function AppRouter() {
return (
<QueryClientProvider client={queryClient}>
<BrowserRouter>
<Routes>
<Route path="/" element={<App />}>
<Route index element={<LogPage />} />
<Route path="logs" element={<LogPage />} />
<Route path="buildings" element={<BuildingPage />} />
<Route path="simulation" element={<SimulationPage />} />
</Route>
</Routes>
</BrowserRouter>
<ReactQueryDevtools initialIsOpen={false} />
</QueryClientProvider>
);
}

export default AppRouter;
34 changes: 34 additions & 0 deletions uniro_admin_frontend/src/api/nodes.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { Building } from "../data/types/node";
import { getFetch, postFetch } from "../utils/fetch/fetch";

export const getAllBuildings = (
univId: number,
params: {
leftUpLng: number;
leftUpLat: number;
rightDownLng: number;
rightDownLat: number;
}
): Promise<Building[]> => {
return getFetch<Building[]>(`/${univId}/nodes/buildings`, {
"left-up-lng": params.leftUpLng,
"left-up-lat": params.leftUpLat,
"right-down-lng": params.rightDownLng,
"right-down-lat": params.rightDownLat,
});
};

export const postBuilding = (
univId: number,
body: {
buildingName: string;
buildingImageUrl: string;
phoneNumber: string;
address: string;
lat: number;
lng: number;
level: number;
}
): Promise<boolean> => {
return postFetch(`/${univId}/nodes/building`, body);
};
74 changes: 74 additions & 0 deletions uniro_admin_frontend/src/api/route.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
import { IssueTypeKey } from "../constant/enum/reportEnum";
import { Coord } from "../data/types/coord";
import { CautionIssueType, DangerIssueType } from "../data/types/enum";
import { NodeId } from "../data/types/node";

import {
CoreRoutesList,
NavigationRouteList,
RouteId,
} from "../data/types/route";
import { getFetch, postFetch } from "../utils/fetch/fetch";
import { transformAllRoutes } from "./transformer/route";
import { GetAllRouteRepsonse } from "./type/response/route";

export const getNavigationResult = (
univId: number,
startNodeId: NodeId,
endNodeId: NodeId
): Promise<NavigationRouteList> => {
return getFetch<NavigationRouteList>(`/${univId}/routes/fastest`, {
"start-node-id": startNodeId,
"end-node-id": endNodeId,
});
};

export const getAllRoutes = (univId: number): Promise<CoreRoutesList> => {
return getFetch<GetAllRouteRepsonse>(`/${univId}/routes`).then((data) =>
transformAllRoutes(data)
);
};

export const getSingleRouteRisk = (
univId: number,
routeId: RouteId
): Promise<{
routeId: NodeId;
dangerTypes: IssueTypeKey[];
cautionTypes: IssueTypeKey[];
}> => {
return getFetch<{
routeId: NodeId;
dangerTypes: IssueTypeKey[];
cautionTypes: IssueTypeKey[];
}>(`/${univId}/routes/${routeId}/risk`);
};

export const postReport = (
univId: number,
routeId: RouteId,
body: { dangerTypes: DangerIssueType[]; cautionTypes: CautionIssueType[] }
): Promise<boolean> => {
return postFetch<void, string>(`/${univId}/route/risk/${routeId}`, body);
};

export const postReportRoute = (
univId: number,
body: {
startNodeId: NodeId;
endNodeId: NodeId | null;
coordinates: Coord[];
}
): Promise<boolean> => {
return postFetch<void, Coord[] | NodeId | null>(`/${univId}/route`, body);
};

export const postBuildingRoute = (
univId: number,
body: {
buildingNodeId: NodeId;
nodeId: NodeId;
}
): Promise<boolean> => {
return postFetch(`/${univId}/routes/building`, body);
};
8 changes: 8 additions & 0 deletions uniro_admin_frontend/src/api/routes.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { CautionRoute, DangerRoute } from "../data/types/route";
import { getFetch } from "../utils/fetch/fetch";

export const getAllRisks = (
univId: number,
): Promise<{ dangerRoutes: DangerRoute[]; cautionRoutes: CautionRoute[] }> => {
return getFetch<{ dangerRoutes: DangerRoute[]; cautionRoutes: CautionRoute[] }>(`/${univId}/routes/risks`);
};
8 changes: 8 additions & 0 deletions uniro_admin_frontend/src/api/search.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { University } from "../data/types/university";
import { getFetch } from "../utils/fetch/fetch";
import { transformGetUniversityList } from "./transformer/search";
import { GetUniversityListResponse } from "./type/response/search";

export const getUniversityList = (): Promise<University[]> => {
return getFetch<GetUniversityListResponse>("/univ/search").then(transformGetUniversityList);
};
31 changes: 31 additions & 0 deletions uniro_admin_frontend/src/api/transformer/route.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { DangerIssueType } from "../../constant/enum/reportEnum";
import { CoreRoutesList } from "../../data/types/route";
import { GetAllRouteRepsonse, GetSingleRouteRiskResponse } from "../type/response/route";

export const transformAllRoutes = (data: GetAllRouteRepsonse): CoreRoutesList => {
const { nodeInfos, coreRoutes } = data;
const nodeInfoMap = new Map(nodeInfos.map((node) => [node.nodeId, node]));

return coreRoutes.map((coreRoute) => {
return {
...coreRoute,
routes: coreRoute.routes.map((route) => {
const node1 = nodeInfoMap.get(route.startNodeId);
const node2 = nodeInfoMap.get(route.endNodeId);

if (!node1) {
throw new Error(`Node not found: ${route.startNodeId}`);
}
if (!node2) {
throw new Error(`Node not found: ${route.endNodeId}`);
}

return {
routeId: route.routeId,
node1,
node2,
};
}),
};
});
};
6 changes: 6 additions & 0 deletions uniro_admin_frontend/src/api/transformer/search.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { University } from "../../data/types/university";
import { GetUniversityListResponse } from "../type/response/search";

export const transformGetUniversityList = (res: GetUniversityListResponse): University[] => {
return res.data;
};
3 changes: 3 additions & 0 deletions uniro_admin_frontend/src/api/type/request/route.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export type getAllRouteRequest = {
univId: number;
};
23 changes: 23 additions & 0 deletions uniro_admin_frontend/src/api/type/response/route.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { IssueTypeKey } from "../../../constant/enum/reportEnum";
import { Node, NodeId } from "../../../data/types/node";

type CoreRoutesResponse = {
coreNode1Id: NodeId;
coreNode2Id: NodeId;
routes: {
routeId: NodeId;
startNodeId: NodeId;
endNodeId: NodeId;
}[];
};

export type GetAllRouteRepsonse = {
nodeInfos: Node[];
coreRoutes: CoreRoutesResponse[];
};

export type GetSingleRouteRiskResponse = {
routeId: NodeId;
dangerTypes?: IssueTypeKey[];
cautionTypes?: IssueTypeKey[];
};
5 changes: 5 additions & 0 deletions uniro_admin_frontend/src/api/type/response/search.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export type GetUniversityListResponse = {
data: University[];
nextCursor: number | null;
hasNext: boolean;
};
4 changes: 4 additions & 0 deletions uniro_admin_frontend/src/assets/markers/building.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions uniro_admin_frontend/src/assets/markers/caution.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions uniro_admin_frontend/src/assets/markers/danger.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 15 additions & 0 deletions uniro_admin_frontend/src/assets/markers/destination.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 15 additions & 0 deletions uniro_admin_frontend/src/assets/markers/origin.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading