Skip to content

v2.0.0 #21

Description

@Seungpyo1007

TechAPI 기반 전면 재구축. 계획서는 docs/REBUILD_PLAN.md, 디자인은 docs/DESIGN_BRIEF.md.

기반 작업 (완료)

재구축

  • 디자인 시스템 — TechAPI 토큰(민트 #3ce0b0, Space Grotesk / JetBrains Mono, radius 4px)을 ThemeData로. 레이더 차트 쓰지 말 것, 미터 + 그룹 막대로
  • 핵심 화면 — 목록 / 상세 / 비교. 하드코딩 데이터 0줄. source_urls 노출은 CC-BY-SA 4.0상 의무
  • 검색·랭킹 — 스마트폰 목록 인덱스가 19MB / 93,396건이라 통째로 못 받음. 브랜드별 샤딩 또는 서버 쿼리 위임
  • AI 상담·OCR 스캔 재작성

출시 전

  • google-services.json 실제 파일로 교체 — 지금 oauth_client가 비어 Google 로그인 안 됨
  • iOS/macOS 빌드 — CocoaPods 미설치, ios/Runner/GoogleService-Info.plist 없음
  • 릴리스 서명키, applicationId (com.example.techpicks는 스토어 업로드 거부됨)
  • Firestore / Storage 보안 규칙 점검 — v1.0.1beta가 공개돼 있고 실제 프로젝트를 물고 있다

재작성할 때 같이 고칠 것

Gemini 이미지 전달 — v1은 base64 문자열을 텍스트 프롬프트에 이어붙였다 (Scan.dart:79). 모델이 이미지로 인식하지 않는다.

Content.multi([
  TextPart('Identify the phone model in this image.'),
  InlineDataPart('image/jpeg', bytes),
])

모델 IDgemini-flash-experimental은 유효하지 않다. Scan.dart:46, ChatAI.dart:95.

개발자 권한LoginPage.dart:20에 관리자 이메일이 평문. 클라이언트 검사라 우회 가능. Custom Claims로.

차트 라이브러리fl_chart는 미사용, 실제로 쓰는 건 syncfusion_flutter_charts(Phone.dart). 화면 새로 쓸 때 정리. syncfusion은 상용 라이선스 문제 있음.

데이터 소스

api.techapi.dev는 미배포(DNS 미해결). GitHub Pages 정적 덤프를 쓴다. 실제 엔드포인트를 replay해 만들어져서 REST와 스키마가 같고, URL 조립만 다르다.

REST   /v1/smartphones/galaxy-s25
덤프   /v1/smartphones/galaxy-s25/index.json

배포되면 TechApiSource 구현만 바꾸면 된다.

Metadata

Metadata

Assignees

Labels

v2-rebuildv2 전면 재구축 (TechAPI 기반)

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions