시즌 진척도를 분석하고 훈련 추세를 리포트합니다
SQLite 데이터베이스에 저장된 전체 세션 데이터를 분석하여 시즌 진척도를 리포트합니다.
3m = 3개월, 6w = 6주)lib/db.mjs의 함수들을 활용:
import {
getWeeklyVolume,
getMonthlyTrend,
getConsecutiveHardSessions,
getSeasonStats,
} from './lib/db.mjs'
SELECT
strftime('%Y-W%W', date) as week,
COUNT(*) as sessions,
SUM(distance) as distance,
SUM(duration_seconds) / 3600.0 as hours
FROM sessions
WHERE date >= date('now', '-12 weeks')
GROUP BY week
ORDER BY week
평가 기준:
SELECT date, avg_hr,
LAG(avg_hr) OVER (ORDER BY date) as prev_hr
FROM sessions
WHERE avg_hr > 150
ORDER BY date DESC
Bakken 원칙 위반 감지:
## 시즌 분석 리포트
**분석 기간**: [시작일] ~ [종료일]
### 볼륨 요약
| 항목 | 값 |
| ----------- | --------------- |
| 총 세션 | [count] |
| 총 거리 | [km] |
| 총 시간 | [hours] |
| 주평균 거리 | [km/week] |
| 주평균 세션 | [sessions/week] |
### 주간 볼륨 추세
| 주차 | 세션 | 거리 | 시간 | 평균 HR |
| ---- | ---- | ---- | ---- | ------- |
| W01 | 4 | 42km | 4.2h | 148 |
| ... | ... | ... | ... | ... |
### 심폐 적응 지표
- 평균 심박 추세: [상승/하락/유지]
- 같은 페이스 대비 HR 변화: [bpm]
### Bakken 원칙 준수
- 연속 하드 세션 횟수: [count]
- 하드 → 이지 규율 준수율: [%]
### 코칭 포인트
1. **[항목]**: [구체적 피드백]
2. **[항목]**: [구체적 피드백]
pnpm db:sync 실행 안내