버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

GitHub Spec Kit을 VS Code에서 실행할 수 있도록 설치합니다.

https://github.com/github/spec-kit

  1. 설치: uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
  2. 초기화: specify init <PROJECT_NAME>
  3. 체크: specify check
    VS Code의 경우, .github/prompt  폴더에 다음 파일들이 설치가 된다.
    Image Added

  4. Copilot Chat에서 연결 되었는지 확인
    Image Added
  5. 실행 순서 예시
    코드 블럭
    /speckit.constitution
    /speckit.specify
    (필요시) /speckit.clarify
    /speckit.plan
    /speckit.checklist    ← 요구/품질 기준 점검
    /speckit.tasks
    /speckit.analyze     ← 아티팩트 일관성 분석
    /speckit.implement

    1. 원칙 정의
      1. /speckit.constitution 
      2. 원칙 예시
        코드 블럭
        # 프로젝트 원칙을 만들어줘.
        - 코드 품질: 간결하고 읽기 쉬운 코드로 주석은 함수 단위로 간결하게 기록
        - 테스트: 외부 API 막히지 않도록 잦은 반복 요청 자제하고 최대 1번 동작 가능 여부 테스트
        - 테스트 환경: 최종 Azure 클라우드 서비스에 배포하는 것을 고려
        - 사용자 경험: 직관적이고 빠른 인터페이스
        - 성능: 불필요한 라이브러리 사용 금지, 최소한의 의존성으로 구현
    2. 명세화
      1. /speckit.

...

      1. specify 
        코드 블럭
        # 나의 관심 주식을 모아 주는 주식 앱을 만들어줘.
        
        1. 사용자별로 개인화된 정보를 저장해야함 (관심종목

...

      1. , 포트폴리오)
        
        2. 관심종목(워치리스트)
        	•	WHAT: 심볼 검색→워치리스트 추가/삭제. 리스트내 티커이동가능, 

...

      1. 간단 지표 표시.
        	•	WHY: 자주 보는 종목을 빠르게 모아봄
        	•	성공 기준: 워치리스트 추가 후 3초 

...

      1. 이내 카드에 현재가/변동률 표시.
        
        3. 시세 보기
        	•	WHAT: 종목 상세에서 현재가/일 변동률/거래량/장상태(장중/마감) 표시. 준실시간임=일 단위로 표시
        	•	WHY: 과도한 갱신 없이 핵심 정보만 명확히. 상세 시세의 경우 일단위의 Sparkline 캔틀 차트로 표시
        	•	성공 기준: 95%의 조회가 1초 내 결과 노출(체감 기준).
        
        4. 포트폴리오/보유종목
        	•	WHAT: 로그인

...

      1.  사용자별 포트폴리오 장기투자, 단투, 정찰병으로 구분하고 종목(symbol, 수량, 평균단가)을 CRUD. 총평가·손익·수익률 집계. 한국 주식과 미국 주식을 분리 합산하고 수익률 히트맵트리 활용 Apache ESchart
        	•	WHY: 보유 현황과 손익을 한 화면에서 빠르게 파악.
        	•	성공 기준: 새 포트폴리오 생성~종목 1개 추가하거나 삭제하는데 2분 이내.
        
        5. 데이터 수집
        	•	WHAT: 외부 주식 

...

      1. API(yFinance)를 활용하여 데이터를 

...

      1. 수집
        	•	WHY: 외부 주식 

...

      1. API로 

...

      1. 실시간 

...

      1. 데이터 확보
        	•	성공 기준: 

...

      1. 외부 

...

      1. API 

...

      1. 호출결과 

...

      1. 출력 

...

      1. (429 

...

      1. too 

...

      1. many 

...

      1. request 

...

      1. 에러 

...

      1. 나면 안됨)


    1. 명확성
      1. /speckit.clarify 그냥 수행
        코드 블럭
        # 중간에 기간 

...

      1. 선택하라고 한 경우,
        
        선택할 수 있는 옵션을 탭으로 제공하고, 클릭하면 그 기간에 맞게 그려주길 원해.

...

      1.  아래는 예시
        { label: '5m', value: '5m_1d', interval: '5m', period: '5m' },    // 5분봉 1일
        { label: 'H', value: '1h_1mo', interval: '1h', period: '1h' },    // 1시간봉 1개월
        { label: 'D', value: '1d_3mo', interval: '1d', period: '1d' },    // 1일봉 3개월
        { label: 'W', value: '1wk_2y', interval: '1wk', period: '1wk' },  // 1주봉 2년
        { label: 'M', value: '1mo_5y', interval: '1mo', period: '1mo' }   // 1월봉 5년
        
        yfinace.download에 따르면, Date Open High Low Close Adj Close Volume 이 순서대로 값이 들어와서 캔들차트를 그릴 수 있을거야.
    1. 계획
      1. /speckit.

...

      1. plan
        코드 블럭
        Follow instructions in speckit.plan.prompt.md.
        • 개발: 인프라 IaC, 프론트엔드, 백엔드, DB(

...

      1. MySQL)

...

      1. , 가상환경에서 각각 필요한 리소스 및 패키지 정의 및 실행
        • 인프라: Azure 100% 활용
        • 프론트엔드: Vue3 + Tabler(Dashboard) + ECharts(Chart) ->

...

      1.  정적 배포
        • 백엔드: python3 + FastAPI -> Azure Container Apps 로 배포
        • DB: Azure MySQL 8.0 (Standard_B2s), 테스트 환경은 가상 환경에 MySQL 8.0으로 배포하여 테스트
        • 실시간 시세: https://github.com/ranaroussi/yfinance API 활용하여 백엔드 API에서 호출하며 DB에 저장
        • 인증: 이메일 + 패스워드 기반의 user 테이블 활용
        • 데이터 모델 설계: 포트폴리오 테이블, 보유종목 테이블, 즐겨찾기 테이블, 사용자 테이블, 뉴스 테이블 (yfinance 스키마 호환)
    1. Task 생성
      1. /speckit.task 요청하면 아래와 같이 스스로 만듬. 이건 상황에 따라 다름
        코드 블럭
        ✅ Phase 2 Implementation Tasks 생성 완료
        생성된 작업 요약
        총 19개 작업을 6개 카테고리로 구성했습니다:
        
        Phase 2A: Infrastructure & Database (2 tasks)
        INFRA-001: 로컬 개발 환경 설정 (2시간)
        DB-001: 데이터베이스 스키마 구현 (4시간, Alembic 마이그레이션 6개)
        Phase 2B: Backend API Development (5 tasks)
        BACKEND-001: FastAPI 핵심 인프라 (6시간)
        BACKEND-002: 인증 API (6시간, FR-001/FR-002)
        BACKEND-003: 워치리스트 API (8시간, FR-003~FR-006)
        BACKEND-004: 주식 데이터 API (12시간, FR-007~FR-010, yfinance 통합)
        BACKEND-005: 포트폴리오 API (10시간, FR-013~FR-019)
        Phase 2C: Frontend Development (5 tasks)
        FRONTEND-001: Vue3 프로젝트 설정 & 라우팅 (4시간)
        FRONTEND-002: 로그인/회원가입 페이지 (6시간)
        FRONTEND-003: 워치리스트 페이지 (10시간, User Story 1)
        FRONTEND-004: 주식 상세 페이지 (12시간, User Story 2, ECharts)
        FRONTEND-005: 포트폴리오 페이지 (12시간, User Story 3)
        Phase 2D: Testing & Quality Assurance (2 tasks)
        TEST-001: 백엔드 통합 테스트 (8시간, Docker Compose)
        TEST-002: 프론트엔드 E2E 테스트 (8시간, Cypress/Playwright)
        Phase 2E: Deployment & DevOps (1 task)
        DEPLOY-001: Azure 인프라 구축 (10시간, Bicep IaC + CI/CD)
        Phase 2F: Documentation & Handoff (4 tasks)
        DOC-001: API 문서화 & Postman 컬렉션 (4시간)
        DOC-002: 배포 가이드 & 운영 런북 (4시간)
        주요 특징
        명확한 의존성 그래프: 작업 간 의존성을 명시하여 병렬 개발 가능
        Constitution 준수: 모든 작업에 5가지 원칙 체크리스트 포함
        성능 목표 명시: <200ms, <1s, <3s, <2min 타겟 포함
        상세한 체크리스트: 각 작업마다 세부 단계 리스트
        Acceptance Criteria: 완료 기준 명확히 정의
        예상 소요 시간
        총 예상 시간: 80-100시간
        1명 개발자 기준: 2-3주
        병렬 개발 가능: Backend + Frontend 동시 진행 시 1.5-2주


주의할 점: yfinance API는 Azure 환경에 들어가면 거의 429 too many request 에러가 발생한다. 유료 stock app을 써야할 수 있다. 그래서 유료 API로 코드 전환 하려다가 참음.