docs(qa): add QA strategy, definition of done, and bug tracking docs#72
Merged
fray-cloud merged 1 commit intodevfrom Apr 1, 2026
Merged
docs(qa): add QA strategy, definition of done, and bug tracking docs#72fray-cloud merged 1 commit intodevfrom
fray-cloud merged 1 commit intodevfrom
Conversation
Contributor
Reviewer's GuideAdds a new QA documentation suite under docs/qa/ covering test strategy and levels, CI quality gates, definition of done checklists by work type, and a bug tracking & triage process, with cross-links between the documents. Sequence diagram for bug reporting and triage processsequenceDiagram
actor Reporter
participant Paperclip
participant QALead
participant DevTeam
participant PM
participant CI
Reporter->>Paperclip: Create_issue_with_bug_label_and_severity
Paperclip-->>QALead: Notify_new_bug
QALead->>Paperclip: Review_and_adjust_severity
alt Critical_or_High
QALead->>DevTeam: Assign_bug_and_request_hotfix
DevTeam->>CI: Push_fix_branch_and_open_PR
CI-->>DevTeam: Run_tests_and_report_status
DevTeam->>QALead: Request_verification
else Medium_or_Low
QALead->>PM: Add_bug_to_sprint_backlog
PM->>DevTeam: Prioritize_and_assign_in_sprint
DevTeam->>CI: Implement_fix_and_open_PR
CI-->>DevTeam: Run_tests_and_report_status
DevTeam->>QALead: Request_verification
end
QALead->>CI: Verify_fix_in_CI_results
QALead->>Paperclip: Mark_issue_done_and_add_regression_label_if_applicable
Flow diagram for applying Definition of Done by work typeflowchart TD
Start[Start work item] --> Identify[Identify work type]
Identify --> AllTasks[Apply All Tasks DoD checklist\nCode review, CI pass, no new ESLint errors, TS compiles, self-tested]
AllTasks --> Decision{Work type}
Decision --> Backend[Backend feature\napi-server or worker-service]
Decision --> Frontend[Frontend feature\nweb]
Decision --> BugFix[Bug fix]
Decision --> Infra[Infrastructure or CI change]
Backend --> BackendChecks[Backend DoD\nUnit tests, integration tests, Swagger/OpenAPI updated, DB migration safe]
Frontend --> FrontendChecks[Frontend DoD\nE2E updated, no console errors, i18n keys, responsive layouts]
BugFix --> BugChecks[Bug fix DoD\nRoot cause documented, regression test added, fix verified in CI]
Infra --> InfraChecks[Infra/CI DoD\nPipeline passes end-to-end, docs updated, rollback plan noted]
BackendChecks --> Done[Move item to done]
FrontendChecks --> Done
BugChecks --> Done
InfraChecks --> Done
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
…(PRO-71) Co-Authored-By: Paperclip <noreply@paperclip.ing>
Contributor
There was a problem hiding this comment.
Hey - I've left some high level feedback:
- The SLAs and CI gates in
bug-tracking.mdandqa-strategy.mdare quite strict (e.g., 4-hour critical fixes, mandatory E2E on all PRs); consider explicitly scoping them by environment/team size or marking them as targets rather than hard guarantees to keep the process realistic and maintainable. - In
qa-strategy.md, several rules are tool- and path-specific (e.g., Jest vs. Vitest, exact directories,tsc --noEmitin CI); if these are likely to evolve, consider centralizing or referencing existing conventions so the doc doesn’t drift when tooling or project layout changes. - The bug triage flow in
bug-tracking.mdassumes Paperclip and specific roles (QA Lead, PM); it may be clearer to define these as role types and configurable tools, or to note how this maps to the current issue tracker and team structure.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- The SLAs and CI gates in `bug-tracking.md` and `qa-strategy.md` are quite strict (e.g., 4-hour critical fixes, mandatory E2E on all PRs); consider explicitly scoping them by environment/team size or marking them as targets rather than hard guarantees to keep the process realistic and maintainable.
- In `qa-strategy.md`, several rules are tool- and path-specific (e.g., Jest vs. Vitest, exact directories, `tsc --noEmit` in CI); if these are likely to evolve, consider centralizing or referencing existing conventions so the doc doesn’t drift when tooling or project layout changes.
- The bug triage flow in `bug-tracking.md` assumes Paperclip and specific roles (QA Lead, PM); it may be clearer to define these as role types and configurable tools, or to note how this maps to the current issue tracker and team structure.Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
fray-cloud
added a commit
that referenced
this pull request
Apr 6, 2026
* feat(backend): Strategy 테이블 order 필드 추가 및 reorder API 구현 (PRO-64) - Prisma schema에 Strategy.order Int @default(0) 필드 추가 - 마이그레이션: order 컬럼 추가 + createdAt 기준 초기값 backfill - GET /strategies: createdAt desc → [order asc, createdAt asc] 정렬 변경 - PATCH /strategies/reorder: 순서 일괄 업데이트 엔드포인트 추가 - StrategyResponse DTO에 order 필드 포함 - ReorderStrategiesHandler 단위 테스트 추가 Co-Authored-By: Paperclip <noreply@paperclip.ing> * feat(portfolio): add asset card view with toggle, fix backtesting CI (PRO-48) * chore: add gstack skill routing rules to CLAUDE.md * feat: 비주얼 플로우 전략 빌더 Phase 1 — 엔진 코어 - Prisma: Flow, Backtest, BacktestTrace 모델 추가 - Kafka: FLOW_BACKTEST_REQUESTED/COMPLETED 토픽 + 이벤트 - Types: FlowDefinition, NodeTypeRegistry, Zod-free 검증 스키마 - FlowCompiler: Kahn's algorithm DAG 검증, 위상 정렬, 캔들별 실행 - Nodes: CandleStream, RSI, Threshold, MarketOrder (4개 초기 구현) - Tests: 33개 전체 통과 (컴파일러 검증 14 + 노드 19) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: 비주얼 플로우 전략 빌더 Phase 2-4 — API CQRS, React Flow UI, Backtest Engine Phase 2: API Server CQRS - Flow CRUD + Toggle + Backtest 요청 9개 REST 엔드포인트 - FlowsKafkaProducer/Consumer — backtest 이벤트 Kafka 연동 - WebSocket backtest:completed 실시간 이벤트 Phase 3: React Flow UI - @xyflow/react 기반 노드 빌더 (드래그&드롭, 포트 타입 검증) - 4종 커스텀 노드 (data/indicator/condition/order) 색상별 구분 - NodePalette, NodeInspector, FlowToolbar, TimelineSlider - Zustand flow store + React Query hooks - /flows 목록 + /flows/[id] 빌더 페이지 Phase 4: Backtest Engine + Timeline Debugger - BacktestService — Kafka consumer, 캔들 페치, flow 실행, trace 저장 - 노드 Glow 효과 (녹색=fired, 빨간색=blocked) - WebSocket 백테스트 완료 리스너 + 자동 trace 로딩 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * style(design): FINDING-001 — replace hardcoded dark colors with CSS variables All flow builder components now use theme-aware CSS variables (bg-card, border-border, text-foreground, text-muted-foreground) instead of hardcoded hex colors (#0f1117, #1a1a24, zinc-*). This fixes light mode rendering. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * style(design): FINDING-003 — add icons for color-blind trace accessibility Trace state now shows CheckCircle2/XCircle icons alongside green/red glow effects, so color-blind users can distinguish fired vs blocked. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * style(design): FINDING-009 — add focus-visible states for keyboard navigation All interactive elements in flow builder now show focus rings for keyboard navigation (WCAG AA compliance). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * style(design): FINDING-010 — extract hardcoded strings to i18n All flow builder components now use useTranslations('flows') instead of hardcoded Korean strings. Added 26 new translation keys to ko.json and en.json. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: flows i18n crash — use separate useTranslations for common namespace t('loading', { ns: 'common' }) is not valid next-intl syntax. Use useTranslations('common') separately. Also add onNodeDoubleClick handler to prevent unhandled events. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: node-inspector hooks order crash on node click useFlowStore(backtestStatus) was called after early return, violating React hooks rules. Moved all hooks before conditional return to ensure consistent call order. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: flow-card crash when backtest summary has error-only shape Failed backtests store { error: "..." } in summary, not the full BacktestSummary. Guard winRate/realizedPnl access with null check. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(flows): 미구현 노드 6종 추가 및 실시간 실행 파이프라인 구현 - indicator-macd.node: MACD (macd/signal/histogram 출력) - indicator-bollinger.node: Bollinger Bands (upper/middle/lower 출력) - indicator-ema.node: EMA 지수 이동평균 - condition-crossover.node: 크로스오버 감지 (state 기반, above/below 방향) - condition-and-or.node: AND/OR 로직 조합 노드 - order-alert.node: 알림 전용 터미널 노드 - NODE_REGISTRY에 모든 신규 노드 등록 - determineFired 함수 수정: 다중 출력 인디케이터(MACD, Bollinger) 지원 - FlowsService: 활성 Flow 실시간 평가 루프 (StrategiesService 패턴 적용) - 30초 폴링으로 활성 Flow 동기화 - 캔들 인터벌 기반 평가 주기 자동 설정 - FlowOrderAction → DB Order 생성 → Kafka TRADING_ORDER_REQUESTED 발행 - RiskService 연동 (stopLoss, dailyMaxLoss, maxPositionSize) - 연속 동일 side 주문 중복 방지 - FlowsModule 생성 및 AppModule 등록 - nodes.test.ts: 신규 노드 38개 테스트 케이스 추가 (총 52개 통과) Co-Authored-By: Paperclip <noreply@paperclip.ing> * feat(orders): responsive mobile card view with open/closed tabs Replace horizontal-scroll table on mobile (<md) with a card-based layout. Each card shows symbol, direction (buy/sell), qty, price, and status. Two tabs split orders into Open (pending/placed) and Completed. Desktop table (≥md) is unchanged. Adds openOrders / closedOrders translation keys to en.json and ko.json. Co-Authored-By: Paperclip <noreply@paperclip.ing> * feat: implement advanced portfolio risk management Add VaR/CVaR, dynamic drawdown limits, ATR-based volatility sizing, Kelly Criterion position sizing, tail risk monitoring, and cross-symbol correlation matrix to RiskService. - Extend RiskConfig and RiskCheckResult with new fields - Add checkDrawdownLimit: pause strategy after X% drawdown from peak - Add checkVarAndCVar: historical simulation VaR/CVaR checks - Add applyAtrSizing: scale down position size when ATR > baseline - Add applyKellySizing: win-rate-based half-Kelly position sizing - Add getCorrelationMatrix: Pearson correlation across symbols - Propagate adjustedQuantity through AutoTradeSaga RiskCheckStep - 30 unit tests covering all new risk checks (all passing) Co-Authored-By: Paperclip <noreply@paperclip.ing> * feat(portfolio): add card view with toggle for asset list (PRO-48) Add card view to the Portfolio assets section showing coin, current price, holdings, valuation, and P&L with % color-coded. Toggle between card/table view with LayoutGrid/LayoutList buttons. Card view is the default. Co-Authored-By: Paperclip <noreply@paperclip.ing> * fix(worker-service): commit missing backtesting module to fix CI build BacktestingModule was imported in app.module.ts but the source files were never committed, causing TS2307 build errors in CI. Co-Authored-By: Paperclip <noreply@paperclip.ing> * fix(database): add missing Candle model to Prisma schema Migration 20260401000000_add_candle_table created the table but the model definition was never added to schema.prisma. Adds Candle model with all fields matching the migration, fixing TS2339 errors in backtesting/data.service.ts. Co-Authored-By: Paperclip <noreply@paperclip.ing> * feat(ui): implement P1 UI/UX improvements — price flash, quick order, onboarding, risk dialog - Add CSS @Keyframes flash-up/flash-down animations to globals.css - Refactor TickerTable to use TickerRow component with per-row price flash animation on WebSocket updates; add onRowClick prop - Wire QuickOrderPanel into Markets page — clicking a ticker row opens the slide-in order panel - Add OnboardingWizard to root layout so new users see the 5-step wizard on first login - Add real-trading risk confirmation dialog (Dialog component) to QuickOrderPanel and OrderForm when switching from paper to real mode - Add i18n keys (en/ko) for the confirmation dialog Closes PRO-38 P1 items Co-Authored-By: Paperclip <noreply@paperclip.ing> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Paperclip <noreply@paperclip.ing> * feat: 전략 카드 DnD 순서 변경 (PRO-50) Squash merge of feat/#50 — 전략 카드 DnD 순서 변경 - Strategy 테이블 `order` 필드 추가 (PRO-64) - `@dnd-kit/sortable` 기반 드래그 앤 드롭 순서 변경 - 옵티미스틱 UI + 자동 저장 - Sourcery 리뷰 반영: useMemo 전환, localStorage SSR guard 추가 Co-Authored-By: Paperclip <noreply@paperclip.ing> * [PRO-53] 대시보드 위젯 DnD 레이아웃 (#71) * feat(web): mobile card view default for Markets and Portfolio On screens smaller than md breakpoint, Markets and Portfolio now render card-based layouts instead of wide tables, eliminating horizontal scroll. Markets cards support left-swipe to open the QuickOrderPanel for fast order entry. Desktop table views are unchanged. Co-Authored-By: Paperclip <noreply@paperclip.ing> * feat(web): /accounts → /settings?tab=accounts 리다이렉트 (PRO-54) API 키 관리가 Accounts와 Settings 두 곳에 중복되어 있던 문제를 해결. /accounts 페이지를 /settings?tab=accounts로 리다이렉트하여 단일 진입점으로 통합. Co-Authored-By: Paperclip <noreply@paperclip.ing> * feat(web): 전략 카드 DnD 순서 변경 구현 (PRO-50) @dnd-kit/sortable을 적용하여 드래그 앤 드롭으로 전략 카드 순서를 변경할 수 있도록 구현. 순서 변경 시 PATCH /strategies/reorder API를 호출하여 자동 저장. Co-Authored-By: Paperclip <noreply@paperclip.ing> * feat(web): 대시보드 위젯 DnD 레이아웃 구현 (PRO-53) @dnd-kit/sortable 기반 드래그 앤 드롭 위젯 레이아웃 대시보드 구현. 위젯 순서를 localStorage에 저장하여 새로고침 후에도 유지. - /dashboard 페이지 생성 (포트폴리오/전략/주문/시장 위젯) - 위젯 그리드(2열) + GripVertical 핸들로 DnD 재배치 - 위젯 순서 localStorage 자동 저장/복원 - NavBar 및 MobileTabBar에 대시보드 링크 추가 Co-Authored-By: Paperclip <noreply@paperclip.ing> --------- Co-authored-by: Paperclip <noreply@paperclip.ing> * docs(qa): add QA strategy, definition of done, and bug tracking docs (PRO-71) (#72) Co-authored-by: Paperclip <noreply@paperclip.ing> * feat: 플로우 기능 UI 개선 (#77) (#74) * feat(web): implement P2 sprint — strategy status badge, notification feed RT, tooltip + terminology - Strategy card: add live status badge (대기/신호감지/주문실행/리스크차단/오류) and realized PnL using new useStrategyRuntime hook (polls last log + performance API at 30s/60s) - Notification feed: pipe WebSocket notification:received events to feed store so the bell panel populates in real time (previously only toasts were shown) - Tooltip component: new /ui/tooltip.tsx — CSS-only hover tooltip, no new deps - Terminology: en.json updated with plain-language labels (Signal-only, Auto-execute, Simulation, Live Trading) + tooltip copy; strategy card now renders these via i18n with cursor-help tooltips on mode/tradingMode badges Co-Authored-By: Paperclip <noreply@paperclip.ing> * docs: update CONTRIBUTING.md with GitHub Issue sync and PR authorship rules - Add GitHub Issue/Milestone sync rules per board direction (PRO-56) - Clarify that feature PRs must be opened by developers, not team leads - Document Paperclip Approval flow for dev → main release PRs Co-Authored-By: Paperclip <noreply@paperclip.ing> * fix: commit missing indicator strategies, Candle migration, notification-feed, and .gitignore update (PRO-69) These files were present on disk but never tracked — discovered during feat/#53 branch cleanup. - apps/worker-service: add combination, multi-timeframe, and trend-regime indicator strategies with tests - packages/database/prisma/migrations/20260401000000_add_candle_table: add migration for Candle table (pairs with existing schema.prisma Candle model fix) - apps/web: add notification-feed component and use-notification-feed-store (referenced in feat(web) P2 sprint commit but not staged) - .gitignore: broaden tmp/ rule from tmp/test-results/ to tmp/ to suppress screenshot artifacts Co-Authored-By: Paperclip <noreply@paperclip.ing> * feat(worker-service): add CandleOHLCV/MultiTimeframeData types and register combination/trend-regime strategies (PRO-72) - strategy.interface.ts: add CandleOHLCV and MultiTimeframeData types - ITradingStrategy.evaluate(): add optional candles? and multiTimeframe? params - strategies.service.ts: register CombinationStrategy and TrendRegimeStrategy in strategyMap Co-Authored-By: Paperclip <noreply@paperclip.ing> * feat(worker-service): multi-TF service layer — register MultiTimeframeStrategy + HTF candle fetch (PRO-73) - Register MultiTimeframeStrategy in strategyMap - Add getCandleOHLCV() to fetch full OHLCV data (needed for volume/ATR) - evaluateStrategy fetches htf1/htf2 close prices and primary OHLCV for multi-timeframe type - HTF intervals configurable via strategy.config.htf1Interval/htf2Interval (defaults: 4h/1d) - Redis caching reused for HTF candles using existing CANDLE_CACHE_TTL (4h→1800s, 1d→3600s) - DB migration (add_candle_table) already present in feat/#48 Co-Authored-By: Paperclip <noreply@paperclip.ing> * fix(test): fix strategy-card test — add missing mocks and getByText ambiguity - Add vi.mock for next-intl useTranslations (missing context error) - Add vi.mock for useStrategyRuntime with correct StrategyRuntime shape (realizedPnl: null) - Add vi.mock for @/components/icons to avoid icon rendering issues - Fix 'displays exchange/symbol' assertion to use getAllByText (multiple matches) All 49 web unit tests now pass. Co-Authored-By: Paperclip <noreply@paperclip.ing> * feat(web): improve flow node port UX — type colors, tooltips, section labels (PRO-80) - Port handles colored by data type (Candle[], number, boolean, OrderResult, etc.) - Required ports shown as solid filled; optional ports as hollow with colored border - Input/output ports rendered as labeled rows inside node body ('입력' / '출력' sections) - Hover tooltip on each port showing name, Korean type label, required/optional status - Connection guide: valid target handles pulse green during drag; connection line styled as dashed indigo - Refactored BaseNode to row-based port layout so handles align visually with port labels Co-Authored-By: Paperclip <noreply@paperclip.ing> * feat: 플로우 UI 파라미터 한글화 구현 (PRO-81) PRO-78 용어집 기반으로 플로우 UI 전체 텍스트를 트레이더 친화적 한글로 전환 - NODE_TYPE_REGISTRY 노드 레이블 한글화 (RSI 지표, MACD 지표, 볼린저 밴드 등) - base-node.tsx: 포트 이름 및 파라미터 키 한글 표시 (PORT_NAME_LABELS, PARAM_LABELS) - node-inspector.tsx: 파라미터 레이블/값 한글 번역 적용 (PARAM_LABELS, PARAM_VALUE_LABELS) - 기본 알림 메시지 한글화 ('신호 발생!') Co-Authored-By: Paperclip <noreply@paperclip.ing> * feat(web): 플로우 UI 조건 노드 도움말 및 빈 캔버스 가이드 추가 (PRO-82) - 각 노드 헤더에 ? 버튼 추가 — 클릭 시 노드 설명, 파라미터 힌트, 사용 예시 팝오버 표시 - 필수 입력 포트가 연결되지 않으면 ⚠ 경고 배지 및 빨간 포트 강조 표시 - 빈 캔버스에 시작 가이드 오버레이 — 노드 유형별 단계 안내 표시 - node-help-data.ts: 모든 주요 노드(RSI, MACD, 볼린저밴드, 크로스오버 등) 한국어 설명 추가 Co-Authored-By: Paperclip <noreply@paperclip.ing> * feat(web): 플로우 생성 기본 템플릿 UI 구현 (PRO-83) - flow-templates.ts: 4개 전략 템플릿 정의 (MACD 골든크로스, RSI 과매수/과매도, EMA 골든크로스, RSI+MACD 복합) - TemplatePickerModal: 템플릿 선택 모달 (빈 플로우 + 4개 템플릿 카드) - FlowsPage: 새 플로우 버튼 클릭 시 템플릿 피커 표시, 선택한 템플릿의 노드/엣지를 자동 배치 Co-Authored-By: Paperclip <noreply@paperclip.ing> * feat(web): 플로우 노드 선택적 파라미터 토글 UI 추가 (PRO-84) - ParamDefinition 타입 추가 및 NodeTypeInfo에 params 필드 추가 - NODE_TYPE_REGISTRY 각 노드에 필수/선택적 파라미터 구분 정의 - RSI: period(필수), source(선택) - MACD: fastPeriod/slowPeriod(필수), signalPeriod(선택) - Bollinger: period(필수), stdDev(선택) - alert: message(선택) - getRequiredConfig 헬퍼 함수 추가: 새 노드 생성 시 필수 파라미터만 초기화 - node-inspector: 선택적 파라미터에 체크박스 토글 UI 추가 - 활성화: 입력 필드 표시 및 사용자 값 수정 가능 - 비활성화: 기본값 회색 처리로 표시, config에서 제거 - use-flow-store: updateNodeConfig에서 undefined 값 처리로 파라미터 제거 지원 - node-palette/flow-canvas: 신규 노드 생성 시 선택적 파라미터 초기 비활성화 Co-Authored-By: Paperclip <noreply@paperclip.ing> * feat(web): 볼린저 밴드 돌파 전략 템플릿 추가 (PRO-88) PRO-79 설계 문서의 템플릿 3번(볼린저 밴드 돌파 전략)을 flow-templates.ts에 추가. Trading Lead PR 리뷰(PRO-87)에서 지적된 누락 항목 보완. - 캔들스트림 → EMA(1, 종가) + 볼린저밴드(BB 20, 2) 각각 연결 - 종가 crosses_above BB 상단 → 매수(10%, stopLoss 3%, takeProfit 5%) - 종가 crosses_below BB 하단 → 매도(100%) Co-Authored-By: Paperclip <noreply@paperclip.ing> --------- Co-authored-by: Paperclip <noreply@paperclip.ing> * claude: gstack update * claude: update edit * feat: apply select box to condition node enum parameters - Add `options?: string[]` to ParamDefinition type - Add options arrays to and-or (AND/OR), crossover (above/below), threshold operator (</>/<=/>==/==), market-order side (buy/sell), and rsi source (close/open/high/low) params - ParamInput renders <select> dropdown when options are present, showing localized labels from PARAM_VALUE_LABELS Co-Authored-By: Paperclip <noreply@paperclip.ing> * fix: normalize symbol to uppercase before Binance API calls Binance API rejects lowercase characters in the symbol parameter (error -1100). Normalize symbol.toUpperCase() at the entry point of both backtest paths so DB keys and API calls are always uppercase. Co-Authored-By: Paperclip <noreply@paperclip.ing> * fix: implement paginated getCandlesByRange for historical backtest data Fixes the backtest failure when using past date ranges. The previous fetchHistoricalCandles() only fetched the latest 200 candles and filtered by date, which excluded any historical window older than ~33 days (4h) or ~8 days (1h). Changes: - Add getCandlesByRange(symbol, interval, startTime, endTime) to IExchangeRest interface - BinanceRest: forward-paginate via startTime/endTime params (1000/page) - BybitRest: forward-paginate via start/end params (1000/page) - UpbitRest: backward-paginate via `to` param (200/page) - backtests.service.ts: replace simplified filter with getCandlesByRange Closes #75 Co-Authored-By: Paperclip <noreply@paperclip.ing> * docs: add branch cleanup policy to CONTRIBUTING.md (PRO-100) PR 머지 후 feat/fix 브랜치 즉시 삭제 원칙과 로컬 브랜치 정리 명령어 추가. Co-Authored-By: Paperclip <noreply@paperclip.ing> * [feat] #80 Multi-Timeframe 서비스 레이어 및 HTF 캔들/조합/추세 전략 추가 feat/#73 → dev squash merge - MultiTimeframeStrategyService 등록 및 HTF 캔들 fetch (PRO-73) - CandleOHLCV / MultiTimeframeData 타입 정의 - CombinationStrategy, TrendRegimeStrategy 등록 (PRO-72) - 인디케이터 전략 누락 파일 커밋, Candle 마이그레이션 (PRO-69) - strategy-card 테스트 픽스 Closes #80 Co-Authored-By: Paperclip <noreply@paperclip.ing> * [fix] #76 백테스트 심볼 슬래시 형식 처리 (BTC/USDT → BTCUSDT 변환) fix/#76 → dev squash merge - Binance API 호출 전 심볼에서 슬래시(/) 제거 처리 (BTC/USDT → BTCUSDT) - 심볼 대문자 정규화 (.toUpperCase()) - 플로우 조건 노드 enum 파라미터에 select box UI 적용 Closes #76 Co-Authored-By: Paperclip <noreply@paperclip.ing> * feat(web): add demo mode infrastructure (Phase 1) - NEXT_PUBLIC_DEMO env variable and isDemo utility - Middleware: skip auth in demo mode, redirect login/signup to /demo - MSW setup with seed data for orders, strategies, flows, portfolio, activity - MSW browser worker initialization in providers.tsx - next.config: remove standalone output in demo mode for Vercel compatibility Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(web): landing page, demo UI, exchange public WebSocket (Phase 2-4) Phase 2 - Landing page: - /demo route with Coinbase-style design (Hero, Overview, Architecture, Tech Stack, Features, CTA, Footer) - Standalone layout without NavBar/MobileTabBar Phase 3 - Demo UI: - DemoBanner component: "Demo Mode · Paper Trading Only" - DemoDisabled wrapper: disabled + tooltip for restricted actions - NavBar: hide settings/auth in demo, show nav without login - MobileTabBar: filter demo-hidden items, show without auth - Root layout: conditional rendering for /demo vs app pages Phase 4 - Exchange public WebSocket: - demo-ws.ts: Upbit/Binance public WebSocket direct connection - Candle data via exchange public REST APIs (no auth) - Tickers store: demo mode branch for direct exchange WS - MSW handlers: candle proxy to real exchange APIs, empty tickers endpoint Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(web): replace Github icon with ExternalLink in demo landing lucide-react v1.0 removed Github icon. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(web): resolve demo mode issues - WebSocket, icons, mutation blocking - Save native WebSocket before MSW patches it (providers.tsx + global.d.ts) - demo-ws.ts: use preserved NativeWebSocket for exchange connections - exchange-icon.tsx: skip external logo URLs in demo mode (prevent 403) - api-client.ts: block POST/PUT/PATCH/DELETE in demo with friendly error (auth endpoints excluded). Catches mutations before they reach MSW. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(web): use client-side AppShell for demo/app layout switching Replace server-side x-pathname header approach with client-side usePathname() in AppShell component. Fixes NavBar not showing when navigating from /demo landing to /markets via Link click. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(web): redesign demo landing — voltagent-inspired dark theme - Dark background (#050507) + neon green accent (#00d992) glow effects - Hero: dot pattern, pulsing glow orb, gradient text - Architecture: React Flow diagram with animated edges (flowing dots), custom dark nodes with glow borders, group containers (dashed boxes), responsive layout (mobile horizontal scroll) - Tech Stack: logo marquee scroll with devicons CDN (original colors, dark logos inverted for visibility) - Features: glow-border cards on dot pattern background - CTA: glow button with green accent - All sections with IntersectionObserver fade-in - Removed Code Example section - AppShell for client-side demo/app layout switching Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(web): add missing MSW mock data files, fix .gitignore - /data/ instead of data/ to avoid ignoring nested data dirs - Add seed data: demo-user, orders, strategies, flows, portfolio, activity Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(web): remove style prop from lucide icon in architecture-flow Lucide-react icons don't accept style prop. Wrap in span instead. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Paperclip <noreply@paperclip.ing> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
docs/qa/qa-strategy.md— test levels, CI quality gates, E2E scenario coveragedocs/qa/definition-of-done.md— DoD checklist for all task typesdocs/qa/bug-tracking.md— bug report template, severity matrix, triage processThese files were left untracked on
feat/#53after PR #71 merged (PRO-71).Test plan
docs/qa/directory present indevafter merge🤖 Generated with Claude Code
Summary by Sourcery
Add formal QA documentation for testing strategy, definition of done, and bug tracking processes.
Documentation: