Skip to content

Commit d6d18dd

Browse files
committed
Merge remote-tracking branch 'origin/main' into deploy
2 parents be7dc61 + 0dd4b0e commit d6d18dd

75 files changed

Lines changed: 6885 additions & 1174 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.json

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,37 @@
11
{
22
"metadata": {
3-
"lastUpdated": "2026-02-23T08:10:23Z",
4-
"currentVersion": "1.0.45",
3+
"lastUpdated": "2026-02-23T09:58:25Z",
4+
"currentVersion": "1.0.49",
55
"projectType": "flutter",
6-
"totalReleases": 15
6+
"totalReleases": 16
77
},
88
"releases": [
9+
{
10+
"version": "1.0.49",
11+
"project_type": "flutter",
12+
"date": "2026-02-23",
13+
"pr_number": 51,
14+
"raw_summary": "## Summary by CodeRabbit\n\n## 릴리스 노트 (v1.0.49)\n\n* **새로운 기능**\n * 저장된 장소를 폴더로 정리하는 기능 추가\n * 장소 평점 및 사진 갤러리 표시\n * 콘텐츠 피드 개선 (최신/내 콘텐츠 탭)\n * 로그인 및 스플래시 화면 애니메이션 적용\n\n* **개선사항**\n * 홈 화면 UI 레이아웃 최적화\n * 장소 정보 표시 개선",
15+
"parsed_changes": {
16+
"새로운_기능": {
17+
"title": "새로운 기능",
18+
"items": [
19+
"저장된 장소를 폴더로 정리하는 기능 추가",
20+
"장소 평점 및 사진 갤러리 표시",
21+
"콘텐츠 피드 개선 (최신/내 콘텐츠 탭)",
22+
"로그인 및 스플래시 화면 애니메이션 적용"
23+
]
24+
},
25+
"개선사항": {
26+
"title": "개선사항",
27+
"items": [
28+
"홈 화면 UI 레이아웃 최적화",
29+
"장소 정보 표시 개선"
30+
]
31+
}
32+
},
33+
"parse_method": "markdown"
34+
},
935
{
1036
"version": "1.0.45",
1137
"project_type": "flutter",

CHANGELOG.md

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,23 @@
11
# Changelog
22

3-
**현재 버전:** 1.0.45
4-
**마지막 업데이트:** 2026-02-23T08:10:23Z
3+
**현재 버전:** 1.0.49
4+
**마지막 업데이트:** 2026-02-23T09:58:25Z
5+
6+
---
7+
8+
## [1.0.49] - 2026-02-23
9+
10+
**PR:** #51
11+
12+
**새로운 기능**
13+
- 저장된 장소를 폴더로 정리하는 기능 추가
14+
- 장소 평점 및 사진 갤러리 표시
15+
- 콘텐츠 피드 개선 (최신/내 콘텐츠 탭)
16+
- 로그인 및 스플래시 화면 애니메이션 적용
17+
18+
**개선사항**
19+
- 홈 화면 UI 레이아웃 최적화
20+
- 장소 정보 표시 개선
521

622
---
723

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@ samples, guidance on mobile development, and a full API reference.
1818
---
1919

2020
<!-- AUTO-VERSION-SECTION: DO NOT EDIT MANUALLY -->
21-
## 최신 버전 : v1.0.45 (2026-02-23)
21+
## 최신 버전 : v1.0.46 (2026-02-23)
2222

2323
[전체 버전 기록 보기](CHANGELOG.md)

assets/mapsy_logo_transparent.png

1.33 MB
Loading

ios/Podfile.lock

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -232,12 +232,12 @@ EXTERNAL SOURCES:
232232
SPEC CHECKSUMS:
233233
AppAuth: d4f13a8fe0baf391b2108511793e4b479691fb73
234234
AppCheckCore: cc8fd0a3a230ddd401f326489c99990b013f0c4f
235-
device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d
235+
device_info_plus: 71ffc6ab7634ade6267c7a93088ed7e4f74e5896
236236
Firebase: 9a58fdbc9d8655ed7b79a19cf9690bb007d3d46d
237-
firebase_auth: e7aec07fcada64e296cf237a61df9660e52842c2
238-
firebase_core: 8d5e24676350f15dd111aa59a88a1ae26605f9ba
239-
firebase_crashlytics: a14ae83fe2d4738b6b5a7bebdf9dad9ccc747e70
240-
firebase_messaging: 834cfc0887393d3108cdb19da8e57655c54fd0e4
237+
firebase_auth: e9031a1dbe04a90d98e8d11ff2302352a1c6d9e8
238+
firebase_core: ee30637e6744af8e0c12a6a1e8a9718506ec2398
239+
firebase_crashlytics: 28b8f39df8104131376393e6af658b8b77dd120f
240+
firebase_messaging: 343de01a8d3e18b60df0c6d37f7174c44ae38e02
241241
FirebaseAppCheckInterop: ba3dc604a89815379e61ec2365101608d365cf7d
242242
FirebaseAuth: 4c289b1a43f5955283244a55cf6bd616de344be5
243243
FirebaseAuthInterop: 95363fe96493cb4f106656666a0768b420cba090
@@ -250,22 +250,22 @@ SPEC CHECKSUMS:
250250
FirebaseRemoteConfigInterop: 869ddca16614f979e5c931ece11fbb0b8729ed41
251251
FirebaseSessions: d614ca154c63dbbc6c10d6c38259c2162c4e7c9b
252252
Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467
253-
flutter_local_notifications: ff50f8405aaa0ccdc7dcfb9022ca192e8ad9688f
254-
flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12
255-
google_sign_in_ios: 7411fab6948df90490dc4620ecbcabdc3ca04017
253+
flutter_local_notifications: a5a732f069baa862e728d839dd2ebb904737effb
254+
flutter_secure_storage: 1ed9476fba7e7a782b22888f956cce43e2c62f13
255+
google_sign_in_ios: b48bb9af78576358a168361173155596c845f0b9
256256
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
257257
GoogleSignIn: ce8c89bb9b37fb624b92e7514cc67335d1e277e4
258258
GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1
259259
GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de
260260
GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
261261
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
262-
package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4
263-
path_provider_foundation: 0b743cbb62d8e47eab856f09262bb8c1ddcfe6ba
262+
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
263+
path_provider_foundation: bb55f6dbba17d0dccd6737fe6f7f34fbd0376880
264264
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
265265
PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851
266266
RecaptchaInterop: 11e0b637842dfb48308d242afc3f448062325aba
267-
shared_preferences_foundation: 5086985c1d43c5ba4d5e69a4e8083a389e2909e6
268-
sign_in_with_apple: f3bf75217ea4c2c8b91823f225d70230119b8440
267+
shared_preferences_foundation: 7036424c3d8ec98dfe75ff1667cb0cd531ec82bb
268+
sign_in_with_apple: c5dcc141574c8c54d5ac99dd2163c0c72ad22418
269269

270270
PODFILE CHECKSUM: 85d318c08613be190fccc1abd43524ac3b83a41b
271271

lib/common/constants/api_endpoints.dart

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,4 +107,22 @@ class ApiEndpoints {
107107

108108
/// 저장된 장소 (콘텐츠에서)
109109
static const String contentSavedPlaces = '/api/content/place/saved';
110+
111+
// ============================================
112+
// Folder API Endpoints
113+
// ============================================
114+
115+
/// 폴더 목록 조회 / 폴더 생성
116+
static const String folders = '/api/folders';
117+
118+
/// 폴더 수정 / 삭제
119+
static String folderDetail(String folderId) => '/api/folders/$folderId';
120+
121+
/// 폴더 내 장소 목록 조회 / 장소 추가
122+
static String folderPlaces(String folderId) =>
123+
'/api/folders/$folderId/places';
124+
125+
/// 폴더에서 장소 제거
126+
static String folderPlaceDetail(String folderId, String placeId) =>
127+
'/api/folders/$folderId/places/$placeId';
110128
}

lib/common/constants/home_colors.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,4 +90,11 @@ class HomeColors {
9090

9191
/// 재시도 버튼 색상
9292
static const Color retryButton = Color(0xFF1A1A1A);
93+
94+
// ============================================
95+
// 평점 색상 (Rating Colors)
96+
// ============================================
97+
98+
/// 별점 아이콘 색상
99+
static const Color starRating = Color(0xFFFFC107);
93100
}

lib/common/models/place_model.dart

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,34 @@ import 'package:freezed_annotation/freezed_annotation.dart';
33
part 'place_model.freezed.dart';
44
part 'place_model.g.dart';
55

6-
/// 장소 모델 (공통)
6+
/// 장소 모델 (공통) - 백엔드 PlaceDto 매칭
7+
///
8+
/// 백엔드에 두 개의 PlaceDto가 존재:
9+
/// - MS-Place/PlaceDto: placeId 필드 사용 (폴더, 저장 장소) → 그대로 역직렬화
10+
/// - MS-SNS/PlaceDto: id 필드 사용 (콘텐츠 상세) → ContentDetailResponse.fromSnsJson에서 매핑
711
@freezed
812
class PlaceModel with _$PlaceModel {
913
const factory PlaceModel({
10-
/// 장소 ID
11-
required int placeId,
14+
/// 장소 ID (UUID)
15+
required String placeId,
1216

1317
/// 장소명
14-
required String placeName,
18+
required String name,
1519

1620
/// 주소
1721
String? address,
1822

19-
/// 위도
20-
double? latitude,
23+
/// 평점 (0.0 ~ 5.0)
24+
double? rating,
2125

22-
/// 경도
23-
double? longitude,
26+
/// 리뷰 수
27+
int? userRatingsTotal,
2428

25-
/// 카테고리
26-
String? category,
29+
/// 사진 URL 배열 (최대 10개)
30+
@Default([]) List<String> photoUrls,
2731

28-
/// 태그 목록
29-
@Default([]) List<String> tags,
30-
31-
/// 대표 이미지 URL
32-
String? imageUrl,
33-
34-
/// 콘텐츠 ID (상위 콘텐츠)
35-
int? contentId,
32+
/// 장소 요약 설명
33+
String? description,
3634
}) = _PlaceModel;
3735

3836
factory PlaceModel.fromJson(Map<String, dynamic> json) =>

0 commit comments

Comments
 (0)