diff --git a/.windsurfrules b/.windsurfrules new file mode 100644 index 0000000..f757fd5 --- /dev/null +++ b/.windsurfrules @@ -0,0 +1,42 @@ +# Zellyy Finance 개발 가이드라인 + +UI 개발은 Lovable에서 진행하고 있어 Lovable에서 문제가 발생하거나 충돌이 일어나지 않도록 주 + +## 트랜잭션 삭제 안전성 +- 트랜잭션 삭제 작업은 UI 스레드를 차단하지 않도록 비동기로 처리할 것 +- 상태 업데이트 전/후에 try-catch 블록으로 오류 처리할 것 +- 가능한 requestAnimationFrame 또는 queueMicrotask를 사용하여 UI 업데이트 최적화할 것 +- 컴포넌트 언마운트 상태를 추적하여 메모리 누수 방지할 것 +- 이벤트 핸들러는 성능 병목 지점이 될 수 있으므로 디바운스/스로틀링 적용할 것 + +## Android 네이티브 통합 +- BuildInfo와 같은 네이티브 플러그인은 반드시 MainActivity에 등록할 것 +- 안드로이드 빌드 정보는 Capacitor 플러그인을 통해 JS로 전달할 것 +- 플러그인 호출 시 항상 오류 처리 로직 포함할 것 +- 네이티브 기능 실패 시 대체 방법(fallback) 제공할 것 + +## 상태 관리 최적화 +- 컴포넌트 간 상태 공유는 Context API나 상태 관리 라이브러리 사용할 것 +- 큰 상태 객체는 여러 작은 조각으로 분리하여 불필요한 리렌더링 방지할 것 +- 불변성을 유지하여 React의 상태 업데이트 최적화 활용할 것 +- useCallback, useMemo를 적극 활용하여 함수와 값 메모이제이션할 것 +- 기본 데이터 로딩은 상위 컴포넌트에서 처리하고 하위 컴포넌트로 전달할 것 + +## 디버깅 및 로깅 +- 중요 작업(특히 트랜잭션 삭제와 같은 위험 작업)은 상세한 로그 남길 것 +- 개발 모드에서는 상태 변화를 추적할 수 있는 로그 포함할 것 +- 사용자에게 영향을 주는 오류는 UI 피드백(토스트 등)으로 표시할 것 +- 백그라운드 작업 실패는 적절히 로깅하고 필요시 재시도 메커니즘 구현할 것 + +## 버전 관리 +- 모든 빌드는 자동으로 빌드 번호가 증가되도록 설정할 것 +- 릴리즈 빌드는 versionCode와 buildNumber 모두 증가할 것 +- 디버그 빌드는 buildNumber만 증가할 것 +- 버전 정보는 항상 설정 페이지에 표시하여 사용자와 개발자가 확인 가능하게 할 것 + +## 코드 스타일 +- 모든 컴포넌트는 함수형 컴포넌트로 작성할 것 +- Hook 명명 규칙은 'use'로 시작하는 camelCase 사용할 것 +- 비즈니스 로직은 훅으로 분리하여 재사용성 높일 것 +- 주석은 한국어로 작성하여 가독성 높일 것 +- prop 타입은 모두 TypeScript 인터페이스로 정의할 것 \ No newline at end of file diff --git a/Untitled.afdesign b/Untitled.afdesign new file mode 100644 index 0000000..9386c1f Binary files /dev/null and b/Untitled.afdesign differ diff --git a/android/app/src/main/java/com/lovable/zellyfinance/BuildInfoPlugin.java b/android/app/src/main/java/com/lovable/zellyfinance/BuildInfoPlugin.java new file mode 100644 index 0000000..6beb303 --- /dev/null +++ b/android/app/src/main/java/com/lovable/zellyfinance/BuildInfoPlugin.java @@ -0,0 +1,64 @@ +package com.lovable.zellyfinance; + +import android.os.Build; +import android.util.Log; +import com.getcapacitor.JSObject; +import com.getcapacitor.Plugin; +import com.getcapacitor.PluginMethod; +import com.getcapacitor.annotation.CapacitorPlugin; +import com.getcapacitor.PluginCall; + +/** + * 애플리케이션 빌드 정보를 제공하는 Capacitor 플러그인 + */ +@CapacitorPlugin(name = "BuildInfo") +public class BuildInfoPlugin extends Plugin { + private static final String TAG = "BuildInfoPlugin"; + + /** + * 빌드 정보를 가져오는 메서드 + * @param call 플러그인 호출 정보 + */ + @PluginMethod + public void getBuildInfo(PluginCall call) { + try { + Log.d(TAG, "빌드 정보 요청 수신됨"); + + JSObject ret = new JSObject(); + + // 빌드 정보 수집 + String versionName = BuildConfig.VERSION_NAME; + int versionCode = BuildConfig.VERSION_CODE; + int buildNumber = BuildConfig.BUILD_NUMBER; + String packageName = getContext().getPackageName(); + + // 디버깅을 위한 로그 출력 + Log.d(TAG, "버전명: " + versionName); + Log.d(TAG, "버전 코드: " + versionCode); + Log.d(TAG, "빌드 번호: " + buildNumber); + Log.d(TAG, "패키지명: " + packageName); + + // 결과 객체에 값 설정 + ret.put("versionName", versionName); + ret.put("versionCode", versionCode); + ret.put("buildNumber", buildNumber); + ret.put("packageName", packageName); + ret.put("androidVersion", Build.VERSION.RELEASE); + ret.put("androidSDK", Build.VERSION.SDK_INT); + + // 현재 날짜를 디버깅 정보로 추가 + ret.put("buildDate", new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new java.util.Date())); + + Log.d(TAG, "빌드 정보 요청 성공 처리"); + call.resolve(ret); + } catch (Exception e) { + Log.e(TAG, "빌드 정보 가져오기 실패", e); + JSObject errorResult = new JSObject(); + errorResult.put("versionName", "1.0.0"); + errorResult.put("versionCode", 1); + errorResult.put("buildNumber", 1); + errorResult.put("error", e.getMessage()); + call.resolve(errorResult); // 에러가 발생해도 앱이 중단되지 않도록 resolve 호출 + } + } +} diff --git a/android/app/src/main/java/com/lovable/zellyfinance/ImagePlugin.java b/android/app/src/main/java/com/lovable/zellyfinance/ImagePlugin.java new file mode 100644 index 0000000..1ed1386 --- /dev/null +++ b/android/app/src/main/java/com/lovable/zellyfinance/ImagePlugin.java @@ -0,0 +1,55 @@ +package com.lovable.zellyfinance; + +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.util.Base64; + +import com.getcapacitor.JSObject; +import com.getcapacitor.Plugin; +import com.getcapacitor.PluginMethod; +import com.getcapacitor.annotation.CapacitorPlugin; +import com.getcapacitor.PluginCall; + +import java.io.ByteArrayOutputStream; + +@CapacitorPlugin(name = "ImagePlugin") +public class ImagePlugin extends Plugin { + + @PluginMethod + public void getResourceImage(PluginCall call) { + String resourceName = call.getString("resourceName"); + + if (resourceName == null) { + call.reject("Resource name is required"); + return; + } + + try { + // 리소스 ID 찾기 + int resourceId = getContext().getResources().getIdentifier( + resourceName, "drawable", getContext().getPackageName()); + + if (resourceId == 0) { + call.reject("Resource not found: " + resourceName); + return; + } + + // 비트맵으로 변환 + Bitmap bitmap = BitmapFactory.decodeResource(getContext().getResources(), resourceId); + + // Base64로 인코딩 + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); + byte[] byteArray = byteArrayOutputStream.toByteArray(); + String base64Image = Base64.encodeToString(byteArray, Base64.DEFAULT); + + // 응답 생성 + JSObject ret = new JSObject(); + ret.put("base64Image", "data:image/png;base64," + base64Image); + call.resolve(ret); + + } catch (Exception e) { + call.reject("Error loading image", e); + } + } +} diff --git a/android/app/src/main/res/drawable/zellyy.png b/android/app/src/main/res/drawable/zellyy.png new file mode 100644 index 0000000..bc4020d Binary files /dev/null and b/android/app/src/main/res/drawable/zellyy.png differ diff --git a/android/app/src/main/res/mipmap/zellyy.png b/android/app/src/main/res/mipmap/zellyy.png new file mode 100644 index 0000000..bc4020d Binary files /dev/null and b/android/app/src/main/res/mipmap/zellyy.png differ diff --git a/android/app/src/main/res/raw/zellyy.png b/android/app/src/main/res/raw/zellyy.png new file mode 100644 index 0000000..bc4020d Binary files /dev/null and b/android/app/src/main/res/raw/zellyy.png differ diff --git a/android/app_version.json b/android/app_version.json new file mode 100644 index 0000000..272bf0f --- /dev/null +++ b/android/app_version.json @@ -0,0 +1,5 @@ +{ + "versionCode": 1, + "versionName": "1.0.0", + "buildNumber": 1 +} \ No newline at end of file diff --git a/android/version.properties b/android/version.properties new file mode 100644 index 0000000..4a6d3d1 --- /dev/null +++ b/android/version.properties @@ -0,0 +1,4 @@ +#Tue Mar 18 00:16:17 KST 2025 +buildNumber=10 +versionCode=1 +versionName=1.0.0 diff --git a/public/zellyy.png b/public/zellyy.png new file mode 100644 index 0000000..bc4020d Binary files /dev/null and b/public/zellyy.png differ diff --git a/src/assets/zellyy.png b/src/assets/zellyy.png new file mode 100644 index 0000000..bc4020d Binary files /dev/null and b/src/assets/zellyy.png differ diff --git a/src/assets/zellyy_base64.txt b/src/assets/zellyy_base64.txt new file mode 100644 index 0000000..6537cc1 --- /dev/null +++ b/src/assets/zellyy_base64.txt @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/src/components/AvatarImageView.tsx b/src/components/AvatarImageView.tsx new file mode 100644 index 0000000..c2475cb --- /dev/null +++ b/src/components/AvatarImageView.tsx @@ -0,0 +1,87 @@ +import React, { useEffect, useState } from 'react'; +import { Capacitor } from '@capacitor/core'; +import { Avatar, AvatarFallback } from '@/components/ui/avatar'; +import { Skeleton } from '@/components/ui/skeleton'; + +interface AvatarImageViewProps { + className?: string; + fallback?: string; +} + +const AvatarImageView: React.FC = ({ + className = "h-12 w-12", + fallback = "ZY" +}) => { + const [loaded, setLoaded] = useState(false); + const [error, setError] = useState(false); + const [imageSrc, setImageSrc] = useState('/zellyy.png'); + + useEffect(() => { + const loadImage = async () => { + try { + // 플랫폼 체크 + if (Capacitor.isNativePlatform()) { + const platform = Capacitor.getPlatform(); + + if (platform === 'android') { + // Android에서는 res/mipmap 리소스 사용 + setImageSrc('file:///android_asset/public/zellyy.png'); + + // 다른 가능한 경로들 + const possiblePaths = [ + 'file:///android_asset/public/zellyy.png', + 'file:///android_res/mipmap/zellyy.png', + '@mipmap/zellyy', + 'mipmap/zellyy', + 'res/mipmap/zellyy.png', + '/zellyy.png', + './zellyy.png', + 'android.resource://com.lovable.zellyfinance/mipmap/zellyy', + ]; + + // 하드코딩된 Base64 이미지 + const fallbackBase64 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFEmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjMtMDYtMzBUMjI6MDM6NTIrMDk6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIzLTA2LTMwVDIzOjIxOjI1KzA5OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIzLTA2LTMwVDIzOjIxOjI1KzA5OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjE0ZDg5ZjI0LTRmZjctNDUwOS1hNDA3LWM4ODZhM2Q4MDk0YSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxNGQ4OWYyNC00ZmY3LTQ1MDktYTQwNy1jODg2YTNkODA5NGEiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoxNGQ4OWYyNC00ZmY3LTQ1MDktYTQwNy1jODg2YTNkODA5NGEiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjE0ZDg5ZjI0LTRmZjctNDUwOS1hNDA3LWM4ODZhM2Q4MDk0YSIgc3RFdnQ6d2hlbj0iMjAyMy0wNi0zMFQyMjowMzo1MiswOTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+GWKCCQAAATNJREFUWIXtlTFuwzAQRV+QTgk8ZMjWA+QAOViGLJmzdSsydS1kypojZAqQJbNvYHgplCKRQrUoqUiGwrcbLXAffFCH3O3ESSEJEzHZJEwhDMMQQtg/t1OGkJnZ4fNzDODtYU4MYRwiLb5eX8YAHp+WiSH8Cl+DvQPTXZwYAuBPa3dlQ8i5YEgOYJe1KxvCZ3HLqk1MWULmG+y5gx9gvfTYkDyJKaBDDZzE5BqEVT1fzNkP5Fy3tUXECF9X07dtvb/+TJbLFIYXzX9aNwPxUMkBOm34q2TNI8IWEQ4R4RARDhHhEBHO5pzV/gprM7aWFQtExBcRDhHhEBEOEeEQEU5Ljtb5+D+13lx3nP7lWpedwuA7fNP5OYhrNrXc4xVlGHPyODEEwGY1/AFIBfclfLkBYAAAAABJRU5ErkJggg=='; + + // 마지막 수단으로 Base64 사용 + setImageSrc(fallbackBase64); + } else if (platform === 'ios') { + // iOS 경로 처리 + setImageSrc('/zellyy.png'); + } + } else { + // 웹에서는 일반 경로 사용 + setImageSrc('/zellyy.png'); + } + + setLoaded(true); + } catch (err) { + console.error('이미지 로드 오류:', err); + setError(true); + } + }; + + loadImage(); + }, []); + + return ( + + {!loaded ? ( +
+ +
+ ) : ( + <> + Zellyy setError(true)} + /> + {error && {fallback}} + + )} +
+ ); +}; + +export default AvatarImageView; diff --git a/src/components/NativeImage.tsx b/src/components/NativeImage.tsx new file mode 100644 index 0000000..f00b897 --- /dev/null +++ b/src/components/NativeImage.tsx @@ -0,0 +1,76 @@ +import React, { useEffect, useState } from 'react'; +import { Capacitor } from '@capacitor/core'; +import { Avatar, AvatarFallback } from '@/components/ui/avatar'; +import { Skeleton } from '@/components/ui/skeleton'; + +// 네이티브 이미지를 보여주는 컴포넌트 +interface NativeImageProps { + resourceName: string; // 안드로이드 리소스 이름 (확장자 없이) + className?: string; + alt?: string; + fallback?: string; +} + +const NativeImage: React.FC = ({ + resourceName, + className, + alt = "이미지", + fallback = "ZY" +}) => { + const [loading, setLoading] = useState(true); + const [error, setError] = useState(false); + const [imageSrc, setImageSrc] = useState(""); + + useEffect(() => { + const loadImage = async () => { + try { + if (Capacitor.isNativePlatform()) { + // 안드로이드에서는 리소스 ID를 사용 + if (Capacitor.getPlatform() === 'android') { + // 웹뷰가 resource:// 프로토콜을 지원하는 경우를 위한 코드 + setImageSrc(`file:///android_res/drawable/${resourceName}`); + } else { + // iOS - 다른 방식 적용 (추후 구현) + setImageSrc('/zellyy.png'); + } + } else { + // 웹에서는 일반 경로 사용 + setImageSrc(`/${resourceName}.png`); + } + setLoading(false); + } catch (err) { + console.error('이미지 로드 오류:', err); + setError(true); + setLoading(false); + } + }; + + loadImage(); + }, [resourceName]); + + return ( + + {loading ? ( +
+ +
+ ) : ( + <> + {!error && ( + {alt} setError(true)} + /> + )} + {error && ( + {fallback} + )} + + )} +
+ ); +}; + +export default NativeImage; diff --git a/src/components/ResourceImage.tsx b/src/components/ResourceImage.tsx new file mode 100644 index 0000000..5264955 --- /dev/null +++ b/src/components/ResourceImage.tsx @@ -0,0 +1,59 @@ +import React, { useEffect, useState } from 'react'; +import { Avatar, AvatarFallback } from '@/components/ui/avatar'; +import { Skeleton } from '@/components/ui/skeleton'; +import { getResourceImage } from '@/plugins/imagePlugin'; + +interface ResourceImageProps { + resourceName: string; + className?: string; + alt?: string; + fallback?: string; +} + +const ResourceImage: React.FC = ({ + resourceName, + className = "h-12 w-12", + alt = "이미지", + fallback = "ZY" +}) => { + const [loading, setLoading] = useState(true); + const [error, setError] = useState(false); + const [imageSrc, setImageSrc] = useState(""); + + useEffect(() => { + const loadResourceImage = async () => { + try { + const imgSrc = await getResourceImage(resourceName); + setImageSrc(imgSrc); + setLoading(false); + } catch (err) { + console.error('이미지 로드 실패:', err); + setError(true); + setLoading(false); + } + }; + + loadResourceImage(); + }, [resourceName]); + + return ( + + {loading ? ( +
+ +
+ ) : error ? ( + {fallback} + ) : ( + {alt} setError(true)} + /> + )} +
+ ); +}; + +export default ResourceImage; diff --git a/src/components/SimpleAvatar.tsx b/src/components/SimpleAvatar.tsx new file mode 100644 index 0000000..e69de29 diff --git a/src/components/ZellyAvatar.tsx b/src/components/ZellyAvatar.tsx new file mode 100644 index 0000000..762fd82 --- /dev/null +++ b/src/components/ZellyAvatar.tsx @@ -0,0 +1,50 @@ +import React, { useState, useEffect } from 'react'; +import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; +import { Skeleton } from '@/components/ui/skeleton'; +import { Capacitor } from '@capacitor/core'; + +/** + * 젤리 아바타 컴포넌트 + * 웹과 앱 환경 모두에서 올바르게 표시되는 아바타 컴포넌트 + */ +const ZellyAvatar: React.FC<{ className?: string }> = ({ className = "h-12 w-12 mr-3" }) => { + const [imageLoaded, setImageLoaded] = useState(false); + const [imageError, setImageError] = useState(false); + const [imageSrc, setImageSrc] = useState('/zellyy.png'); + + useEffect(() => { + // 앱 환경에서는 Base64 인코딩된 이미지를 사용 + if (Capacitor.isNativePlatform()) { + setImageSrc('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFEmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjMtMDYtMzBUMjI6MDM6NTIrMDk6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIzLTA2LTMwVDIzOjIxOjI1KzA5OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIzLTA2LTMwVDIzOjIxOjI1KzA5OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjE0ZDg5ZjI0LTRmZjctNDUwOS1hNDA3LWM4ODZhM2Q4MDk0YSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxNGQ4OWYyNC00ZmY3LTQ1MDktYTQwNy1jODg2YTNkODA5NGEiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoxNGQ4OWYyNC00ZmY3LTQ1MDktYTQwNy1jODg2YTNkODA5NGEiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjE0ZDg5ZjI0LTRmZjctNDUwOS1hNDA3LWM4ODZhM2Q4MDk0YSIgc3RFdnQ6d2hlbj0iMjAyMy0wNi0zMFQyMjowMzo1MiswOTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+GWKCCQAAATNJREFUWIXtlTFuwzAQRV+QTgk8ZMjWA+QAOViGLJmzdSsydS1kypojZAqQJbNvYHgplCKRQrUoqUiGwrcbLXAffFCH3O3ESSEJEzHZJEwhDMMQQtg/t1OGkJnZ4fNzDODtYU4MYRwiLb5eX8YAHp+WiSH8Cl+DvQPTXZwYAuBPa3dlQ8i5YEgOYJe1KxvCZ3HLqk1MWULmG+y5gx9gvfTYkDyJKaBDDZzE5BqEVT1fzNkP5Fy3tUXECF9X07dtvb/+TJbLFIYXzX9aNwPxUMkBOm34q2TNI8IWEQ4R4RARDhHhEBHO5pzV/gprM7aWFQtExBcRDhHhEBEOEeEQEU5Ljtb5+D+13lx3nP7lWpedwuA7fNP5OYhrNrXc4xVlGHPyODEEwGY1/AFIBfclfLkBYAAAAABJRU5ErkJggg=='); + } else { + // 웹 환경에서는 일반 경로 사용 + setImageSrc('/zellyy.png'); + } + setImageLoaded(true); + }, []); + + return ( + + {!imageLoaded && !imageError ? ( +
+ +
+ ) : ( + <> + setImageLoaded(true)} + onError={() => setImageError(true)} + /> + {(imageError || !imageLoaded) && ( + ZY + )} + + )} +
+ ); +}; + +export default ZellyAvatar; diff --git a/src/hooks/transactions/useTransactionsOperations.ts b/src/hooks/transactions/useTransactionsOperations.ts index 2cbf868..10cf0c7 100644 --- a/src/hooks/transactions/useTransactionsOperations.ts +++ b/src/hooks/transactions/useTransactionsOperations.ts @@ -94,9 +94,16 @@ export const useTransactionsOperations = ( // 사용자 인터페이스 응답성 감소 전에 이벤트 발생 처리 try { - window.dispatchEvent(new Event('transactionUpdated')); + // 상태 업데이트 바로 후 크로스 스레드 통신 방지 + setTimeout(() => { + try { + window.dispatchEvent(new Event('transactionUpdated')); + } catch (innerError) { + console.warn('이벤트 발생 중 비치명적 오류:', innerError); + } + }, 0); } catch (eventError) { - console.warn('이벤트 발생 중 비치명적 오류:', eventError); + console.warn('이벤트 디스패치 설정 오류:', eventError); } // UI 스레드 블록하지 않는 너비로 requestAnimationFrame 사용 @@ -146,9 +153,39 @@ export const useTransactionsOperations = ( // 삭제되었던 트랜잭션 다시 추가 const newState = [...prevState, transactionToDelete]; - // 날짜 기준 정렬 + // 날짜 기준 정렬 - 안전한 경로 return newState.sort((a, b) => { - return new Date(b.date).getTime() - new Date(a.date).getTime(); + try { + // 날짜 형식이 다양할 수 있으므로 안전하게 처리 + let dateA = new Date(); + let dateB = new Date(); + + // 타입 안전성 확보 + if (a.date && typeof a.date === 'string') { + // 이미 포맷팅된 날짜 문자열 감지 + if (!a.date.includes('오늘,') && !a.date.includes('년')) { + const testDate = new Date(a.date); + if (!isNaN(testDate.getTime())) { + dateA = testDate; + } + } + } + + if (b.date && typeof b.date === 'string') { + // 이미 포맷팅된 날짜 문자열 감지 + if (!b.date.includes('오늘,') && !b.date.includes('년')) { + const testDate = new Date(b.date); + if (!isNaN(testDate.getTime())) { + dateB = testDate; + } + } + } + + return dateB.getTime() - dateA.getTime(); + } catch (error) { + console.error('날짜 정렬 오류:', error); + return 0; // 오류 발생 시 순서 유지 + } }); }); } diff --git a/src/next-steps-plan.md b/src/next-steps-plan.md new file mode 100644 index 0000000..377bc05 --- /dev/null +++ b/src/next-steps-plan.md @@ -0,0 +1,109 @@ +# 젤리의 적자탈출 앱 - 다음 작업 계획 + +## 1. 앱 배포 준비 완료 + +### 1.1 앱 배포 가이드 문서 완성 +- 현재 작성 중인 app-deployment-guide.md 문서 완성 +- 실제 배포 경험을 바탕으로 가이드 업데이트 +- 배포 중 발생할 수 있는 문제 해결 방법 추가 + +### 1.2 Android 앱 빌드 및 테스트 +- 안드로이드 빌드 환경 최종 점검 +- 다양한 안드로이드 기기에서 호환성 테스트 +- 성능 및 안정성 테스트 + +### 1.3 iOS 환경 설정 및 빌드 (필요시) +- Mac 환경에서 iOS 빌드 설정 +- iOS 앱 아이콘 및 스플래시 스크린 준비 +- TestFlight를 통한 베타 테스트 + +## 2. 앱 최적화 + +### 2.1 성능 최적화 +- 앱 로딩 시간 개선 +- 메모리 사용량 최적화 +- 배터리 소모 최적화 +- 알림 시스템 안정화 (현재 발생 중인 버그 수정) + +### 2.2 사용자 경험 개선 +- UI/UX 일관성 확보 +- 애니메이션 및 전환 효과 최적화 +- 접근성 개선 + +### 2.3 오프라인 기능 강화 +- 오프라인 상태에서의 데이터 처리 개선 +- 동기화 메커니즘 강화 + +## 3. 추가 기능 개발 + +### 3.1 알림 시스템 구현 +- 푸시 알림 기능 구현 +- 알림 설정 페이지 개선 +- 알림 스케줄링 기능 + +### 3.2 데이터 백업 및 복원 기능 +- 사용자 데이터 백업 기능 +- 데이터 복원 메커니즘 +- 클라우드 백업 옵션 + +### 3.3 다국어 지원 확장 +- 다국어 지원 시스템 구현 +- 언어 설정 페이지 추가 +- 번역 리소스 준비 + +## 4. 테스트 및 품질 보증 + +### 4.1 다양한 기기에서의 호환성 테스트 +- 다양한 안드로이드 버전 테스트 +- 다양한 화면 크기 및 해상도 테스트 +- 저사양 기기에서의 성능 테스트 + +### 4.2 사용자 피드백 수집 및 반영 +- 인앱 피드백 시스템 구현 +- 사용자 테스트 세션 진행 +- 피드백 기반 개선사항 우선순위 설정 + +### 4.3 버그 수정 및 안정성 개선 +- 알려진 버그 수정 +- 크래시 리포트 분석 및 대응 +- 자동화된 테스트 추가 + +## 5. 스토어 등록 준비 + +### 5.1 Google Play 스토어 등록 자료 준비 +- 스토어 리스팅 정보 작성 +- 스크린샷 및 프로모션 이미지 준비 +- 개인정보 처리방침 문서 작성 + +### 5.2 App Store 등록 자료 준비 (필요시) +- App Store Connect 설정 +- 앱 심사 준비 +- 마케팅 자료 준비 + +### 5.3 출시 후 모니터링 계획 +- 앱 성능 모니터링 시스템 구축 +- 사용자 피드백 수집 채널 설정 +- 정기 업데이트 일정 수립 + +## 즉시 진행 가능한 작업 + +1. **알림 시스템 버그 수정** + ```bash + # 수정된 코드 테스트 + npm run build + npx cap sync + npx cap open android + ``` + +2. **앱 배포 가이드 문서 완성** + - 현재 작성 중인 app-deployment-guide.md 문서 완성 + - 실제 배포 경험을 바탕으로 가이드 업데이트 + +3. **앱 아이콘 및 스플래시 스크린 최적화** + - 다양한 해상도의 아이콘 준비 + - 스플래시 스크린 디자인 개선 + +4. **앱 성능 테스트** + - 로딩 시간 최적화 + - 메모리 사용량 분석 + - 배터리 소모 최적화 diff --git a/src/plugins/imagePlugin.ts b/src/plugins/imagePlugin.ts new file mode 100644 index 0000000..d19cba8 --- /dev/null +++ b/src/plugins/imagePlugin.ts @@ -0,0 +1,43 @@ +import { Capacitor, registerPlugin } from '@capacitor/core'; + +/** + * 네이티브 이미지 플러그인 인터페이스 + */ +export interface ImagePluginInterface { + getResourceImage(options: { resourceName: string }): Promise<{ base64Image: string }>; +} + +// 네이티브 플러그인을 사용할 수 없을 때 대체할 웹 구현 +const ImagePluginWeb: ImagePluginInterface = { + async getResourceImage(options: { resourceName: string }): Promise<{ base64Image: string }> { + // 웹에서는 일반 경로 사용 + return { base64Image: `/${options.resourceName}.png` }; + }, +}; + +// 네이티브 플러그인 등록 +const ImagePlugin = registerPlugin('ImagePlugin', { + web: ImagePluginWeb, +}); + +/** + * 이미지 리소스를 가져오는 함수 + * + * @param resourceName 리소스 이름 (확장자 제외) + * @returns 플랫폼에 맞는 이미지 경로 또는 Base64 문자열 + */ +export async function getResourceImage(resourceName: string): Promise { + try { + if (Capacitor.isNativePlatform()) { + // 네이티브 환경에서는 플러그인 사용 + const result = await ImagePlugin.getResourceImage({ resourceName }); + return result.base64Image; + } else { + // 웹 환경에서는 일반 URL 반환 + return `/${resourceName}.png`; + } + } catch (error) { + console.error('이미지 리소스 로드 오류:', error); + return `/${resourceName}.png`; // 오류 시 기본 경로 사용 + } +} diff --git a/src/utils/imageUtils.ts b/src/utils/imageUtils.ts new file mode 100644 index 0000000..a981de4 --- /dev/null +++ b/src/utils/imageUtils.ts @@ -0,0 +1,36 @@ +import { Capacitor } from '@capacitor/core'; + +/** + * 이미지 URL을 환경에 맞게 변환하는 유틸리티 함수 + * + * 웹과 앱 환경에서 모두 정상적으로 이미지가 표시되도록 경로를 처리합니다. + * + * @param imagePath 이미지 경로 (예: '/zellyy.png') + * @returns 환경에 맞게 변환된 이미지 URL + */ +export function getImageUrl(imagePath: string): string { + // 이미지 경로가 이미 http로 시작하면 그대로 반환 + if (imagePath.startsWith('http://') || imagePath.startsWith('https://')) { + return imagePath; + } + + // 경로의 첨 글자가 '/'이 아니면 추가 + const normalizedPath = imagePath.startsWith('/') ? imagePath : `/${imagePath}`; + + // Capacitor 앱에서 실행 중인 경우 + if (Capacitor.isNativePlatform()) { + // 안드로이드 플랫폼 확인 + const platform = Capacitor.getPlatform(); + + if (platform === 'android') { + // 안드로이드 환경에서는 assets 폴더 경로 사용 + return `file:///android_asset/public${normalizedPath}`; + } else if (platform === 'ios') { + // iOS 환경에서는 다른 경로 사용 + return `${normalizedPath}`; + } + } + + // 웹 환경에서는 일반 경로 사용 + return normalizedPath; +} diff --git a/src/utils/sync/transaction/dateUtils.ts b/src/utils/sync/transaction/dateUtils.ts index ff17b54..701dda7 100644 --- a/src/utils/sync/transaction/dateUtils.ts +++ b/src/utils/sync/transaction/dateUtils.ts @@ -47,11 +47,32 @@ export const normalizeDate = (dateStr: string): string => { * ISO 형식의 날짜 문자열을 사용자 친화적인 형식으로 변환 */ export const formatDateForDisplay = (isoDateStr: string): string => { + // 입력값이 유효한지 보호 처리 + if (!isoDateStr || typeof isoDateStr !== 'string') { + console.warn('유효하지 않은 날짜 입력:', isoDateStr); + return '날짜 없음'; + } + try { + // 이미 포맷된 날짜 문자열(예: "오늘, 14:30")이면 그대로 반환 + if (isoDateStr.includes('오늘,') || + isoDateStr.includes('년') && isoDateStr.includes('월') && isoDateStr.includes('일')) { + return isoDateStr; + } + // 유효한 ISO 날짜인지 확인 - const date = parseISO(isoDateStr); - if (!isValid(date)) { - return isoDateStr; // 유효하지 않으면 원본 반환 + let date; + if (isoDateStr.match(/^\d{4}-\d{2}-\d{2}T/)) { + // ISO 형식인 경우 + date = parseISO(isoDateStr); + } else { + // ISO 형식이 아닌 경우 일반 Date 생성자 시도 + date = new Date(isoDateStr); + } + + if (!isValid(date) || isNaN(date.getTime())) { + console.warn('유효하지 않은 날짜 형식:', isoDateStr); + return '유효하지 않은 날짜'; } // 현재 날짜와 비교 @@ -68,7 +89,8 @@ export const formatDateForDisplay = (isoDateStr: string): string => { // 그 외의 경우 YYYY년 MM월 DD일 형식으로 반환 return `${date.getFullYear()}년 ${date.getMonth() + 1}월 ${date.getDate()}일 ${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`; } catch (error) { - console.error('날짜 포맷 변환 오류:', error); - return isoDateStr; // 오류 발생 시 원본 반환 + console.error('날짜 포맷 변환 오류:', error, isoDateStr); + // 오류 발생 시 기본값 반환 + return '날짜 오류'; } }; diff --git a/src/utils/sync/transaction/downloadTransaction.ts b/src/utils/sync/transaction/downloadTransaction.ts index fbd637f..bcae295 100644 --- a/src/utils/sync/transaction/downloadTransaction.ts +++ b/src/utils/sync/transaction/downloadTransaction.ts @@ -31,15 +31,39 @@ export const downloadTransactions = async (userId: string): Promise => { console.log(`서버에서 ${data.length}개의 트랜잭션 다운로드`); // 서버 데이터를 로컬 형식으로 변환 - const serverTransactions = data.map(t => ({ - id: t.transaction_id || t.id, - title: t.title, - amount: t.amount, - date: t.date ? formatDateForDisplay(t.date) : '날짜 없음', - category: t.category, - type: t.type, - notes: t.notes - })); + const serverTransactions = data.map(t => { + // 날짜 형식 변환 시 오류 방지 처리 + let formattedDate = '날짜 없음'; + try { + if (t.date) { + // ISO 형식이 아닌 경우 기본 변환 수행 + if (!t.date.match(/^\d{4}-\d{2}-\d{2}T/)) { + console.log(`비표준 날짜 형식 감지: ${t.date}, ID: ${t.transaction_id || t.id}`); + // 유효한 Date 객체로 변환 가능한지 확인 + const testDate = new Date(t.date); + if (isNaN(testDate.getTime())) { + console.warn(`잘못된 날짜 형식 감지, 현재 날짜 사용: ${t.date}`); + t.date = new Date().toISOString(); // 잘못된 날짜는 현재 날짜로 대체 + } + } + formattedDate = formatDateForDisplay(t.date); + } + } catch (err) { + console.error(`날짜 변환 오류 (ID: ${t.transaction_id || t.id}):`, err); + // 오류 발생 시 기본값 사용 + formattedDate = new Date().toLocaleString('ko-KR'); + } + + return { + id: t.transaction_id || t.id, + title: t.title, + amount: t.amount, + date: formattedDate, + category: t.category, + type: t.type, + notes: t.notes + }; + }); // 기존 로컬 데이터 불러오기 const localDataStr = localStorage.getItem('transactions');