From 850ac84ef7b771599f3b08a682a851276d30254d Mon Sep 17 00:00:00 2001 From: Horoli Date: Mon, 2 Nov 2026 03:28:58 +0900 Subject: [PATCH] Add sunrise Threads automation and improve capture and character interactions --- .env.threads.sample.json | 7 ++ .gitignore | 2 + README.md | 2 + deploy/sunrise-threads.service | 16 +++ deploy/sunrise-threads.timer | 11 ++ docs/threads-automation.md | 88 ++++++++++++++++ index.html | 9 ++ package-lock.json | 35 +++++++ package.json | 4 + public/buildings/gwacheon.baked.json | 2 +- public/characters/umbrella.glb | Bin 206508 -> 334820 bytes public/licenses.txt | 28 ++++++ public/terrain/summit-mesh.json | 6 +- scripts/create-rain-gear.py | 29 ++++-- server/threads/config.ts | 39 +++++++ server/threads/publisher.ts | 76 ++++++++++++++ server/threads/run.ts | 145 +++++++++++++++++++++++++++ src/astronomy/sunCalculator.ts | 6 ++ src/constants/flashlight.ts | 1 + src/constants/rainGear.ts | 4 +- src/constants/screenshot.ts | 3 + src/constants/threads.ts | 15 +++ src/constants/ui.ts | 2 +- src/controls/rainGear.ts | 9 +- src/main.ts | 18 +++- src/scene/sheep.ts | 41 ++++++-- src/scene/world.ts | 41 +++++++- src/style.css | 6 +- src/ui/screenshot.ts | 55 ++++++++++ src/ui/threadsCapture.ts | 31 ++++++ tests/arrival.test.ts | 15 +++ tests/rain-gear.test.ts | 86 +++++++++++++++- tests/threads-config.test.ts | 16 +++ tests/threads.test.ts | 86 ++++++++++++++++ 34 files changed, 900 insertions(+), 34 deletions(-) create mode 100644 .env.threads.sample.json create mode 100644 deploy/sunrise-threads.service create mode 100644 deploy/sunrise-threads.timer create mode 100644 docs/threads-automation.md create mode 100644 server/threads/config.ts create mode 100644 server/threads/publisher.ts create mode 100644 server/threads/run.ts create mode 100644 src/constants/screenshot.ts create mode 100644 src/constants/threads.ts create mode 100644 src/ui/screenshot.ts create mode 100644 src/ui/threadsCapture.ts create mode 100644 tests/arrival.test.ts create mode 100644 tests/threads-config.test.ts create mode 100644 tests/threads.test.ts diff --git a/.env.threads.sample.json b/.env.threads.sample.json new file mode 100644 index 0000000..9394afd --- /dev/null +++ b/.env.threads.sample.json @@ -0,0 +1,7 @@ +{ + "accessToken": "", + "siteUrl": "https://sunrise.horoli.kr", + "stateDir": "data/threads", + "imageDir": "dist/threads-captures", + "imageBaseUrl": "https://sunrise.horoli.kr/threads-captures/" +} diff --git a/.gitignore b/.gitignore index d5c33ae..b3b85e9 100644 --- a/.gitignore +++ b/.gitignore @@ -18,4 +18,6 @@ __pycache__/ # Environment secrets (keep the documented template) .env.* +!/.env.threads.sample.json /.config.json +/data/threads/ diff --git a/README.md b/README.md index bc59db4..6a722e4 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ # 해보러가기 +매일 일출 시각에 화면을 촬영하고 Meta Threads에 게시하는 Linux 작업은 [자동 게시 설정 가이드](docs/threads-automation.md)를 참고하세요. + ## 현재 과천 건물: VWorld 단독 (2026-10-30) OSM 건물의 외곽선·높이·층수와 OSM 대조 기반 선별을 제거했다. VWorld 원본에서 독립적으로 재생성한 **6,743개**를 표시한다(높이 자료 1,756개 / 층수 환산 953개 / 임시 높이 4,034개). VWorld 내부 겹침 183개를 제외했다. 아래 OSM·VWorld 통합 설명은 이전 작업 기록이며 현재 구성에 적용되지 않는다. 해안선·정상 구조물 위치의 OSM 사용은 유지한다. diff --git a/deploy/sunrise-threads.service b/deploy/sunrise-threads.service new file mode 100644 index 0000000..ae2381b --- /dev/null +++ b/deploy/sunrise-threads.service @@ -0,0 +1,16 @@ +[Unit] +Description=Capture sunrise and publish to Threads +Wants=network-online.target +After=network-online.target +StartLimitIntervalSec=1h +StartLimitBurst=5 + +[Service] +Type=oneshot +User=sunrise +WorkingDirectory=/opt/sunrise +ExecStart=/usr/bin/node /opt/sunrise/server/threads/run.ts +TimeoutStartSec=8h +Restart=on-failure +RestartSec=60s +UMask=0022 diff --git a/deploy/sunrise-threads.timer b/deploy/sunrise-threads.timer new file mode 100644 index 0000000..0cf2d49 --- /dev/null +++ b/deploy/sunrise-threads.timer @@ -0,0 +1,11 @@ +[Unit] +Description=Prepare daily sunrise capture at 03:00 Korea time + +[Timer] +OnCalendar=*-*-* 03:00:00 Asia/Seoul +Persistent=true +AccuracySec=1s +Unit=sunrise-threads.service + +[Install] +WantedBy=timers.target diff --git a/docs/threads-automation.md b/docs/threads-automation.md new file mode 100644 index 0000000..396ac97 --- /dev/null +++ b/docs/threads-automation.md @@ -0,0 +1,88 @@ +# 매일 일출 촬영 및 Threads 게시 + +## 동작 + +Linux systemd 타이머가 매일 **한국 시간 03:00**에 작업을 시작합니다. 기존 `calculateSun` / SunCalc 2.x로 당일 관악산 일출을 계산하고, 5분 전에 Chromium을 실행합니다. 배포 페이지의 실제 관측 위치·고도로 계산한 일출 시각까지 기다린 뒤, UI 없는 **1080×1728 세로 JPEG 두 장**을 같은 시각의 장면에서 촬영하고 **한 개의 Threads 캐러셀 게시물**로 올립니다. 사진은 실제 풍경이 아니라 시뮬레이션임을 게시 문구에 표시합니다. 날씨는 페이지의 기존 기상자료를 사용합니다. + +사진 순서는 ① 일출 방향을 바라보는 캐릭터 뒷모습과 풍경 ② 캐릭터 얼굴과 하늘입니다. 캐릭터는 일출을 향한 자세를 유지하고 두 번째 카메라만 방위각 +200°, 위쪽 20°로 회전합니다. 기존 3인칭 카메라의 지형 충돌 보정을 사용합니다. 구도와 해상도는 `src/constants/threads.ts`의 `angles`, `viewport`에서 조정합니다. 두 사진 모두 준비된 뒤 캐러셀을 만들며, 한 장이라도 실패하면 일부만 게시하지 않습니다. + +이전 단일 사진 버전의 `.capture.json` 기록은 재사용하지 않습니다. 해당 기록이 남아 있다면 보관 위치로 옮긴 뒤 다음 일출부터 실행하세요. 이미 게시했거나 게시 결과가 불명확한 날짜의 `.json` 게시 기록은 유지해야 중복을 방지할 수 있습니다. + +SunCalc의 일출은 관측 고도를 반영한 천문학적 일출입니다. 주변 산 능선 뒤에서 태양이 실제로 드러나는 시각과 다를 수 있습니다. 서버 시계 동기화(NTP)를 켜 두세요. 캡처 후 업로드·Meta 처리 때문에 게시 시각은 일출보다 늦습니다. + +변경된 프런트엔드를 먼저 배포해야 합니다. 작업은 `?mode=solo&site=gwanaksan&capture=threads`로 열며, 해당 모드에서만 브라우저 내 촬영 인터페이스가 노출됩니다. 인증 토큰은 브라우저로 전달하지 않습니다. + +## 1. 서버 설치 + +아래는 프로젝트 `/opt/sunrise`, 서비스 사용자 `sunrise`, Node 실행 파일 `/usr/bin/node` 예시입니다. 실제 경로·기존 서비스 사용자에 맞게 수정하세요. Node.js는 프로젝트 요구사항인 22.18 이상을 사용합니다. + +```bash +cd /opt/sunrise +npm ci +npm run prepare:buildings +npm run prepare:summit +npm run build +# OS 라이브러리 설치는 sudo 권한이 필요합니다. +sudo npx playwright install-deps chromium +# 브라우저는 작업을 실행할 사용자로 설치해야 합니다. +sudo -u sunrise npx playwright install chromium +cp -n .env.threads.sample.json .env.threads.json +chmod 600 .env.threads.json +``` + +`.env.threads.json`와 프로젝트의 이미지/상태 저장 경로는 `sunrise` 사용자가 읽고 쓸 수 있어야 합니다. root로 Chromium을 실행하지 않습니다. Linux에서 Chromium sandbox를 지원해야 하며, 지원하지 않는 환경은 OS 사용자 namespace/sandbox 설정을 점검하세요. + +설정 파일은 프로젝트 루트의 `.env.threads.json`을 읽습니다. 샘플을 복사한 뒤 `accessToken`에 발급받은 토큰을 넣으세요. 상대 디렉터리 경로는 실행 작업 디렉터리를 기준으로 하므로 프로젝트 루트에서 실행합니다. 실제 설정 파일은 Git에서 제외되고, 토큰이 비어 있는 샘플만 버전 관리됩니다. 기존 `.env.threads` 환경변수 파일은 더 이상 읽지 않습니다. + +## 2. Meta 계정 연결 + +Meta 개발자 콘솔에서 Threads 용도의 앱을 만들고, 자신의 계정에 `threads_basic`, `threads_content_publish` 권한을 부여합니다. 개발 모드에서는 앱의 테스터/역할 계정 설정 및 초대 수락을 확인하세요. 발급한 토큰이 장기 토큰인지 확인하고(단기 토큰이면 장기 토큰으로 교환), `.env.threads.json`의 `accessToken`에 넣습니다. 초기 토큰은 새로 발급한 것을 사용하세요. + +- [Meta 공식 Threads API / 계정 연결](https://www.postman.com/meta/threads/collection/dht3nzz/threads-api) +- [토큰 교환·갱신 및 이미지 게시 API](https://www.postman.com/meta/threads/documentation/dht3nzz/threads-api) + +작업은 토큰을 비공개 `data/threads/token.json`에 저장하고 7일 간격으로 갱신합니다. 이후에는 저장된 토큰이 JSON 설정의 accessToken보다 우선합니다. 재인증 시 서비스를 중지하고 `token.json`을 별도 보관/삭제한 다음 JSON 설정의 accessToken에 새 long-lived 토큰을 설정하세요. 토큰 철회·만료나 권한 변경은 재인증이 필요하며 자동으로 해결할 수 없습니다. 토큰 파일과 상태 디렉터리는 정적 웹 루트에 두지 마세요. + +## 3. 촬영 검증 (게시하지 않음) + +```bash +npm run threads:preview +``` + +현재 시각의 장면을 즉시 촬영하고 파일 경로를 출력합니다. 토큰 없이 실행할 수 있으며 Threads API 호출이나 게시 기록 생성은 없습니다. 다음 일출에 촬영만 검증하려면: + +```bash +npm run threads:run -- --dry-run +``` + +`--now`는 `--dry-run`과 함께만 허용됩니다. 테스트 때문에 실제 계정에 게시하지 않습니다. + +## 4. 이미지 공개 URL + +기본 저장 위치는 `dist/threads-captures/`, 공개 URL은 `https://sunrise.horoli.kr/threads-captures/`입니다. 기존 Node 정적 파일 서버가 이미지를 제공합니다. 저장된 JPEG의 공개 URL을 외부에서 열어 확인하세요. 게시 직전에 작업도 실제 다운로드한 바이트가 저장된 이미지와 같은지 확인합니다. Meta 서버가 로그인 없이 이미지를 읽을 수 있어야 합니다. + +`npm run build`는 dist를 다시 생성합니다. 운영에서는 **배포와 독립적인 이미지 디렉터리**를 권장합니다. 예를 들어 `"imageDir": "/var/lib/sunrise/captures"`로 지정하고 Nginx에서 `/threads-captures/`를 해당 디렉터리에 연결하세요. Nginx 사용자에게 디렉터리 탐색·파일 읽기 권한을 부여하세요. `imageBaseUrl`도 실제 URL과 일치해야 합니다. 이미지에는 토큰이 포함되지 않습니다. 이미지 파일은 자동 삭제하지 않으므로 저장 용량을 관리하세요. + +## 5. 자동 실행 활성화 + +`deploy/sunrise-threads.service`의 사용자, 작업 디렉터리, Node 경로를 수정한 뒤: + +```bash +sudo cp deploy/sunrise-threads.service deploy/sunrise-threads.timer /etc/systemd/system/ +sudo systemctl daemon-reload +sudo systemctl enable --now sunrise-threads.timer +systemctl list-timers sunrise-threads.timer +journalctl -u sunrise-threads.service -n 100 +``` + +타이머는 03:00에 준비 작업을 시작하고 프로세스가 계산된 일출까지 기다립니다. 서버의 기본 시간대와 관계없이 `Asia/Seoul` 기준입니다. 일출을 놓친 뒤 서버가 켜지면 그날 촬영은 건너뜁니다. 촬영 허용 지연은 최대 30초이며, 로딩 지연이나 절전 등으로 이를 초과하면 게시하지 않습니다. 장애 시 journal에 오류가 남습니다. 별도 알림 채널은 연결하지 않았습니다. + +## 게시 기록과 재시도 + +`data/threads/YYYY-MM-DD.json`에 게시 기록을 저장합니다. Meta에 실제 게시 요청을 보내기 **직전** 파일을 배타적으로 생성해 동시 실행도 중복 게시하지 않게 합니다. 성공 시 `published`와 게시 ID가 저장됩니다. + +`publishing` 상태가 남았다면 요청이 성공했지만 응답이 유실됐을 수 있습니다. 이때 자동으로 재게시하지 않습니다. 계정과 기록의 컨테이너 ID를 확인한 뒤 수동으로 처리하세요. 기존 기록을 무조건 지우면 중복 게시될 수 있습니다. + +촬영 성공 시 별도 `YYYY-MM-DD.capture.json`을 저장합니다. 토큰 갱신·공개 URL 확인·컨테이너 준비가 실패하면 systemd가 60초 뒤 재시도합니다(1시간 내 최대 5회 시작). 같은 날 재실행은 저장된 일출 사진을 재사용하므로 게시 준비 중 오류가 나도 촬영을 잃지 않습니다. 촬영 자체를 놓쳤다면 그날은 건너뜁니다. 다음 날짜에 전날 사진을 자동 게시하지 않습니다. + +정지: `sudo systemctl disable --now sunrise-threads.timer` (이미 실행 중인 작업도 중지하려면 `sudo systemctl stop sunrise-threads.service`). diff --git a/index.html b/index.html index 032fa97..0edec66 100644 --- a/index.html +++ b/index.html @@ -51,6 +51,7 @@
+
@@ -101,6 +102,13 @@

메뉴

+
+ diff --git a/package-lock.json b/package-lock.json index a737e34..41db83f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,9 @@ "name": "gwanaksan-sunrise", "version": "0.1.0", "dependencies": { + "html-to-image": "^1.11.13", "mongodb": "^7.7.0", + "playwright": "^1.64.1", "socket.io": "^4.8.4", "socket.io-client": "^4.8.4", "suncalc": "2.0.1", @@ -1179,6 +1181,12 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/html-to-image": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/html-to-image/-/html-to-image-1.11.13.tgz", + "integrity": "sha512-cuOPoI7WApyhBElTTb9oqsawRvZ0rHhaHwghRLlTuffoD1B2aDemlCruLeZrUIIdvG7gs9xeELEPm6PhuASqrg==", + "license": "MIT" + }, "node_modules/memory-pager": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", @@ -1335,6 +1343,33 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/playwright": { + "version": "1.64.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.64.1.tgz", + "integrity": "sha512-HCrVhHr5QQuwYoswEUGTb7gGp522yflbv/ST8nF4sFWGuLjQCt17Q/EubpGGSNKYn1tsTCPZxqHhHCfVURu7UA==", + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.64.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/playwright-core": { + "version": "1.64.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.64.1.tgz", + "integrity": "sha512-BC4s8y6SEVA6Q1rSxZTto8hI1KUI3xXlHGZgvGqP4IqPdI/a6FX9H29IDNz7vKo9l21b6LfYosScPL6M3xxyDQ==", + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/postcss": { "version": "8.5.32", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.32.tgz", diff --git a/package.json b/package.json index 49a93ff..3146d37 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,8 @@ "node": ">=22.18.0" }, "scripts": { + "threads:run": "node server/threads/run.ts", + "threads:preview": "node server/threads/run.ts --dry-run --now", "dev": "vite --host 127.0.0.1", "prepare:buildings": "node scripts/prepare-building-assets.ts", "check:buildings": "node scripts/prepare-building-assets.ts --check", @@ -25,7 +27,9 @@ "verify:solar": "node tests/solar-report.ts" }, "dependencies": { + "html-to-image": "^1.11.13", "mongodb": "^7.7.0", + "playwright": "^1.64.1", "socket.io": "^4.8.4", "socket.io-client": "^4.8.4", "suncalc": "2.0.1", diff --git a/public/buildings/gwacheon.baked.json b/public/buildings/gwacheon.baked.json index 82d448c..19c807d 100644 --- a/public/buildings/gwacheon.baked.json +++ b/public/buildings/gwacheon.baked.json @@ -1,6 +1,6 @@ { "version": 1, - "sourceHash": "ec19bec7b7dded0b4ed8e0733dea4ff2a87976869461cde9a99f6608c6b7836b", + "sourceHash": "b1af9482e14c57eb27998ef06b39c129d02770cf3eba5037b9983147c64f7dba", "bufferHash": "d8cf0a36a46572060189e2ca9e9a61e448fb3d0b441abc346b56b7c4603e0d65", "byteLength": 11036560, "terrain": { diff --git a/public/characters/umbrella.glb b/public/characters/umbrella.glb index 0d6d6e655a9d014044f69077057817b109859204..8040b205566e6ded823756b6f05ebb64f295020a 100644 GIT binary patch literal 334820 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%0DJ(&60kJ!1BfF4 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 literal 206508 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

4r-=H<=!*_r`nyIQ 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

+8A$#+=I2Ce{db@Lw*u``1@W^&nfuO7`FcR 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, method = 'GET', request: typeof fetch = fetch) { + const url = new URL(path, THREADS.apiUrl); + if (method === 'GET') url.search = new URLSearchParams(params).toString(); + const response = await request(url, { + method, headers: { Authorization: `Bearer ${token}` }, + body: method === 'POST' ? new URLSearchParams(params) : undefined, + signal: AbortSignal.timeout(THREADS.requestTimeoutMs), + }); + const data = await response.json(); + // Do not log response bodies: authentication errors may echo credentials. + if (!response.ok || data.error) throw new Error(`Threads API failed (HTTP ${response.status}, code ${data.error?.code ?? 'unknown'})`); + return data; +} + +export async function publishImage(token: string, imageUrl: string, text: string, + beforePublish: (containerId: string) => Promise, request: typeof fetch = fetch, + wait: (ms: number) => Promise = delay) { + const container = await threadsRequest(token, '/me/threads', { + media_type: 'IMAGE', image_url: imageUrl, text, + alt_text: '관악산 정상에서 바라본 일출 시각의 3D 시뮬레이션', + }, 'POST', request); + if (!container.id) throw new Error('Threads returned no container ID'); + return publishContainer(token, container.id, beforePublish, request, wait); +} + +export async function publishCarousel(token: string, imageUrls: string[], text: string, + beforePublish: (containerId: string) => Promise, request: typeof fetch = fetch, + wait: (ms: number) => Promise = delay) { + if (imageUrls.length !== THREADS.angles.length) throw new Error('Both sunrise angles are required'); + const children: string[] = []; + for (const [index, imageUrl] of imageUrls.entries()) { + const child = await threadsRequest(token, '/me/threads', { + media_type: 'IMAGE', image_url: imageUrl, is_carousel_item: 'true', + alt_text: `${THREADS.angles[index].alt} · 3D 시뮬레이션`, + }, 'POST', request); + if (!child.id) throw new Error('Threads returned no child container ID'); + await waitForMedia(token, child.id, request, wait); + children.push(child.id); + } + const container = await threadsRequest(token, '/me/threads', { + media_type: 'CAROUSEL', children: children.join(','), text, + }, 'POST', request); + if (!container.id) throw new Error('Threads returned no carousel ID'); + return publishContainer(token, container.id, beforePublish, request, wait); +} + +async function publishContainer(token: string, id: string, beforePublish: (id: string) => Promise, + request: typeof fetch, wait: (ms: number) => Promise) { + await waitForMedia(token, id, request, wait); + await beforePublish(id); + const post = await threadsRequest(token, '/me/threads_publish', { creation_id: id }, 'POST', request); + if (!post.id) throw new Error('Threads returned no post ID; check account before retrying'); + return String(post.id); +} + +async function waitForMedia(token: string, id: string, request: typeof fetch, wait: (ms: number) => Promise) { + for (let i = 0; i < THREADS.mediaPollAttempts; i++) { + const media = await threadsRequest(token, `/${id}`, { fields: 'status,error_message' }, 'GET', request); + if (media.status === 'FINISHED') return; + if (['ERROR', 'EXPIRED', 'PUBLISHED'].includes(media.status)) throw new Error(`Threads container status: ${media.status}`); + await wait(THREADS.mediaPollMs); + } + throw new Error('Threads media processing timed out'); +} diff --git a/server/threads/run.ts b/server/threads/run.ts new file mode 100644 index 0000000..d65867b --- /dev/null +++ b/server/threads/run.ts @@ -0,0 +1,145 @@ +import { mkdir, readFile, rename, writeFile } from 'node:fs/promises'; +import { resolve, join } from 'node:path'; +import { randomUUID } from 'node:crypto'; +import { setTimeout as delay } from 'node:timers/promises'; +import { chromium } from 'playwright'; +import { THREADS } from '../../src/constants/threads.ts'; +import { kstClock, kstFields } from '../../src/ui/time.ts'; +import { dailySchedule, publishCarousel, threadsRequest } from './publisher.ts'; +import { loadThreadsConfig } from './config.ts'; +import type {} from '../../src/ui/threadsCapture.ts'; + +const args = process.argv.slice(2); +const dryRun = args.includes('--dry-run'); +const config = loadThreadsConfig(undefined, dryRun); +const stateDir = resolve(config.stateDir); +const imageDir = resolve(config.imageDir); +const siteUrl = new URL(config.siteUrl); +const publicUrl = new URL(config.imageBaseUrl); + +async function readJson(path: string) { + try { return JSON.parse(await readFile(path, 'utf8')); } + catch (error) { if ((error as NodeJS.ErrnoException).code === 'ENOENT') return null; throw error; } +} + +async function saveJson(path: string, data: unknown) { + const temporary = `${path}.${randomUUID()}.tmp`; + await writeFile(temporary, JSON.stringify(data, null, 2), { mode: 0o600 }); + await rename(temporary, path); +} + +async function accessToken() { + const path = join(stateDir, 'token.json'); + let saved = await readJson(path); + if (!saved) { + const token = config.accessToken.trim(); + if (!token) throw new Error('Set accessToken in .env.threads.json to a long-lived Threads token'); + saved = { token, refreshedAt: Date.now() }; + await saveJson(path, saved); + } + if (Date.now() - saved.refreshedAt >= THREADS.tokenRefreshMs) { + const refreshed = await threadsRequest(saved.token, '/refresh_access_token', { grant_type: 'th_refresh_token' }); + if (!refreshed.access_token) throw new Error('Token refresh returned no access token'); + saved = { token: refreshed.access_token, refreshedAt: Date.now() }; + await saveJson(path, saved); + } + return saved.token as string; +} + +async function waitUntil(date: Date) { + while (+date > Date.now()) await delay(Math.min(+date - Date.now(), 60_000)); +} + +async function main() { + if (args.some(arg => !['--dry-run', '--now'].includes(arg)) || (args.includes('--now') && !dryRun)) { + throw new Error('Usage: run.ts [--dry-run [--now]]. --now is capture-only.'); + } + const schedule = dailySchedule(new Date()); + const recordPath = join(stateDir, `${schedule.date}.json`); + await mkdir(stateDir, { recursive: true, mode: 0o700 }); + if (!dryRun && await readJson(recordPath)) { + console.log(`${schedule.date}: publication already recorded; inspect the record if status is publishing`); + return; + } + const immediate = dryRun && args.includes('--now'); + const capturePath = join(stateDir, `${schedule.date}.capture.json`); + const savedCapture = dryRun ? null : await readJson(capturePath); + if (!savedCapture && !immediate && Date.now() > +schedule.sunrise + THREADS.maxLatenessMs) { + console.log(`${schedule.date}: sunrise has passed; skipping late capture`); + return; + } + const captured = savedCapture ?? await captureSunrise(schedule, immediate); + const { images, capturedAt } = captured; + if (!Array.isArray(images) || images.length !== THREADS.angles.length) { + throw new Error('Saved capture is not a two-angle capture; archive the old capture record before running again'); + } + const sunrise = new Date(captured.sunrise); + if (dryRun) { console.log('Dry run: no Threads API calls or publication records'); return; } + if (!savedCapture) await saveJson(capturePath, captured); + // Authentication/network outages must not lose the time-sensitive capture. + const token = await accessToken(); + for (const { imageUrl, imagePath } of images) { + if (new URL(imageUrl).protocol !== 'https:') throw new Error('Public image URL must use HTTPS'); + const check = await fetch(imageUrl, { signal: AbortSignal.timeout(THREADS.requestTimeoutMs) }); + const remoteImage = Buffer.from(await check.arrayBuffer()); + if (!check.ok || !remoteImage.equals(await readFile(imagePath))) throw new Error('Public image URL does not serve the captured image'); + } + const text = `🌅 오늘의 관악산 일출\n${schedule.date} · ${kstClock(sunrise)} KST\n관악산 정상의 일출 시각을 담은 3D 시뮬레이션입니다.\n${siteUrl.origin}`; + const record = { date: schedule.date, sunrise: sunrise.toISOString(), capturedAt, images, status: 'publishing' }; + const postId = await publishCarousel(token, images.map((image: { imageUrl: string }) => image.imageUrl), text, async containerId => { + // Atomic claim survives restarts and blocks concurrent/ambiguous publication retries. + await writeFile(recordPath, JSON.stringify({ ...record, containerId }, null, 2), { flag: 'wx', mode: 0o600 }); + }); + const pending = await readJson(recordPath); + await saveJson(recordPath, { ...pending, status: 'published', postId }); + console.log(`Threads published: ${postId}`); +} + +async function captureSunrise(schedule: ReturnType, immediate: boolean) { + console.log(`Sunrise estimate: ${schedule.sunrise.toISOString()} (${kstClock(schedule.sunrise)} KST)`); + if (!immediate) await waitUntil(schedule.prepareAt); + await mkdir(imageDir, { recursive: true }); + const browser = await chromium.launch({ headless: true, chromiumSandbox: true, + args: ['--use-angle=swiftshader', '--enable-unsafe-swiftshader'] }); + const images: { name: string; imagePath: string; imageUrl: string }[] = []; + let sunrise: Date; + let capturedAt: string; + try { + const page = await browser.newPage({ viewport: THREADS.viewport, deviceScaleFactor: 1, timezoneId: 'Asia/Seoul' }); + const url = new URL(siteUrl); + url.searchParams.set('mode', 'solo'); url.searchParams.set('site', 'gwanaksan'); + url.searchParams.set('capture', 'threads'); + await page.goto(url.href, { waitUntil: 'domcontentloaded', timeout: 120_000 }); + await page.waitForFunction(() => Boolean(window.sunriseThreads), undefined, { timeout: 180_000 }); + await page.waitForFunction(() => !document.getElementById('lobby') || document.getElementById('lobby')!.hidden); + sunrise = new Date(await page.evaluate(() => window.sunriseThreads!.sunrise())); + if (!Number.isFinite(+sunrise) || kstFields(sunrise).date !== schedule.date) throw new Error('Unexpected page sunrise date'); + console.log(`Page sunrise: ${sunrise.toISOString()} (${kstClock(sunrise)} KST)`); + if (!immediate) { + if (Date.now() > +sunrise + THREADS.maxLatenessMs) throw new Error('Page loaded after capture deadline'); + await waitUntil(sunrise); + } + const capture = await page.evaluate(() => window.sunriseThreads!.capture()); + capturedAt = capture.capturedAt; + if (!immediate && Math.abs(Date.parse(capturedAt) - +sunrise) > THREADS.maxLatenessMs) throw new Error('Capture missed sunrise deadline'); + if (capture.images?.length !== THREADS.angles.length) throw new Error('Deploy the two-angle capture frontend first'); + for (const [index, shot] of capture.images.entries()) { + if (shot.name !== THREADS.angles[index].name) throw new Error('Unexpected capture angle order'); + const filename = `${schedule.date}-${randomUUID()}-${shot.name}.jpg`; + const imagePath = join(imageDir, filename); + const imageUrl = new URL(filename, publicUrl.href.replace(/\/?$/, '/')).href; + const image = Buffer.from(shot.image.split(',')[1], 'base64'); + if (image.length < 1000) throw new Error('Capture is empty'); + await writeFile(imagePath, image); + images.push({ name: shot.name, imagePath, imageUrl }); + console.log(`Saved ${shot.name} capture: ${imagePath}`); + } + } finally { await browser.close(); } + return { images, capturedAt, sunrise: sunrise.toISOString() }; +} + +void main().catch(error => { + // Avoid logging fetch error causes/URLs that may contain credentials. + console.error(error instanceof Error ? error.message : 'Threads job failed'); + process.exitCode = 1; +}); diff --git a/src/astronomy/sunCalculator.ts b/src/astronomy/sunCalculator.ts index 0c66e0c..ce8f313 100644 --- a/src/astronomy/sunCalculator.ts +++ b/src/astronomy/sunCalculator.ts @@ -25,3 +25,9 @@ export function calculateSun(date: Date, observer: ObserverConfig): SunState { standardSunrise: standard.sunrise, standardSunset: standard.sunset, }; } + +export function sunriseAzimuth(date: Date, observer: ObserverConfig): number { + const sunrise = calculateSun(date, observer).sunrise; + return sunrise && Number.isFinite(+sunrise) + ? getPosition(sunrise, observer.latitude, observer.longitude).azimuth : 90; +} diff --git a/src/constants/flashlight.ts b/src/constants/flashlight.ts index ed8a77d..3da9e51 100644 --- a/src/constants/flashlight.ts +++ b/src/constants/flashlight.ts @@ -1,6 +1,7 @@ export const FLASHLIGHT = { url: '/characters/flashlight.glb?v=1', lumens: 600, + poseTransitionSeconds: 0.35, bloomStrengthScale: 0.08, bloomThreshold: 4, bloomRadius: 0.03, diff --git a/src/constants/rainGear.ts b/src/constants/rainGear.ts index d358434..eb94242 100644 --- a/src/constants/rainGear.ts +++ b/src/constants/rainGear.ts @@ -1,4 +1,6 @@ export const RAIN_GEAR = { - umbrellaUrl: '/characters/umbrella.glb?v=1', + umbrellaUrl: '/characters/umbrella.glb?v=2', + umbrellaTransitionSeconds: 0.45, + umbrellaGripDirection: [.05, -.45, .7], raincoatUrl: '/characters/raincoat.glb?v=5', } as const; diff --git a/src/constants/screenshot.ts b/src/constants/screenshot.ts new file mode 100644 index 0000000..a8cd447 --- /dev/null +++ b/src/constants/screenshot.ts @@ -0,0 +1,3 @@ +export const SCREENSHOT = { + objectUrlLifetimeMs: 60000, +} as const; diff --git a/src/constants/threads.ts b/src/constants/threads.ts new file mode 100644 index 0000000..8e4644c --- /dev/null +++ b/src/constants/threads.ts @@ -0,0 +1,15 @@ +export const THREADS = { + siteUrl: 'https://sunrise.horoli.kr', + apiUrl: 'https://graph.threads.net', + prepareMs: 5 * 60_000, + maxLatenessMs: 30_000, + requestTimeoutMs: 30_000, + mediaPollMs: 5_000, + mediaPollAttempts: 24, + tokenRefreshMs: 7 * 86_400_000, + viewport: { width: 1080, height: 1728 }, + angles: [ + { name: 'sunrise', offset: 0, pitch: 0, alt: '일출을 바라보는 캐릭터의 뒷모습과 관악산 풍경' }, + { name: 'portrait', offset: 200, pitch: 20, alt: '일출 시각 관악산 정상의 캐릭터 정면과 하늘' }, + ], +} as const; diff --git a/src/constants/ui.ts b/src/constants/ui.ts index 11e9c40..2b3c583 100644 --- a/src/constants/ui.ts +++ b/src/constants/ui.ts @@ -1,7 +1,7 @@ export const DIALOG_TITLES = { menu: '메뉴', location: '장소', time: '날짜·시간', information: '관측 정보', view: '지도·시점', session: '닉네임·접속 상태', - settings: '설정·조작 방법', sources: '출처·오픈소스', + settings: '설정·조작 방법', sources: '출처·오픈소스', screenshot: '화면 촬영', } as const; export const EQUIPMENT_NOTICE = { diff --git a/src/controls/rainGear.ts b/src/controls/rainGear.ts index 644449e..71204dd 100644 --- a/src/controls/rainGear.ts +++ b/src/controls/rainGear.ts @@ -4,6 +4,7 @@ export type RainGearItem = 'umbrella' | 'raincoat' | 'hood'; export function createRainGearState() { const worn = { umbrella: false, raincoat: false, hood: false }; let available = false; + let awaitingArrivalWeather = true; return { get available() { return available; }, get umbrella() { return worn.umbrella; }, @@ -14,8 +15,12 @@ export function createRainGearState() { worn.raincoat = state.raincoat; worn.hood = state.raincoat && state.hood; }, - updateWeather(rain: number, snowfall: number) { - available = rain > 0 || snowfall > 0; + updateWeather(rain: number | null, snowfall: number | null) { + available = (rain ?? 0) > 0 || (snowfall ?? 0) > 0; + if (awaitingArrivalWeather && rain !== null) { + if (rain > 0) { worn.raincoat = true; worn.hood = true; } + awaitingArrivalWeather = false; + } if (!available) { worn.umbrella = false; worn.raincoat = false; worn.hood = false; } }, toggle(item: RainGearItem) { diff --git a/src/main.ts b/src/main.ts index 0cd8bbf..a8f93fd 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,7 +1,8 @@ import './style.css'; import { createDialogs } from './ui/dialogs.ts'; +import { createScreenshot } from './ui/screenshot.ts'; import { loadSummitAssets } from './scene/summitAssets.ts'; -import { calculateSun } from './astronomy/sunCalculator.ts'; +import { calculateSun, sunriseAzimuth } from './astronomy/sunCalculator.ts'; import { createWorld } from './scene/world.ts'; import { createInformationPanel } from './ui/informationPanel.ts'; import { TimeController } from './ui/timeController.ts'; @@ -104,6 +105,7 @@ export async function start(options: StartOptions = {}) { update(); }, coast, structures, reconstructSummit, summitGeometry, sheep); const viewEvents = new AbortController(); + const screenshot = createScreenshot(() => world.captureFrame()); document.querySelectorAll('[data-look]').forEach(button => { button.addEventListener('click', () => world.lookAtStructure(button.dataset.look!), { signal: viewEvents.signal }); }); @@ -151,6 +153,9 @@ export async function start(options: StartOptions = {}) { update(); }); world.resetPosition(); + const faceSunrise = () => world.lookAtSunrise(sunriseAzimuth(selectedDate, effectiveObserver)); + faceSunrise(); + let firstJoin = true; const connectionStatus = document.getElementById('connection-status')!; const modeButton = document.getElementById('session-mode') as HTMLButtonElement; const retryButton = document.getElementById('retry-connection') as HTMLButtonElement; @@ -166,7 +171,10 @@ export async function start(options: StartOptions = {}) { nickname.value = `방문자-${visitorId.slice(-4)}`; const multiplayer = createMultiplayerClient({ readPlayer: () => world.readPlayer(), - joined: player => world.applyPlayer(player), + joined: player => { + world.applyPlayer(player); + if (firstJoin) { faceSunrise(); firstJoin = false; } + }, correction: player => world.applyPlayer(player), snapshot: (state, selfId) => world.synchronizePlayers(state.players, selfId), weather: state => { if (sharedMode) applyWeather(state); }, @@ -230,9 +238,13 @@ export async function start(options: StartOptions = {}) { document.querySelector('#time-controls')!.disabled = false; window.addEventListener('pagehide', (event) => { multiplayer.disconnect(); - if (!event.persisted) { dialogs.dispose(); viewEvents.abort(); height.dispose(); time.dispose(); weather.dispose(); multiplayer.dispose(); world.dispose(); } + if (!event.persisted) { screenshot.dispose(); dialogs.dispose(); viewEvents.abort(); height.dispose(); time.dispose(); weather.dispose(); multiplayer.dispose(); world.dispose(); } }); window.addEventListener('pageshow', event => { if (event.persisted && sharedMode) join(); }); + if (query.get('capture') === 'threads' && !sharedMode) { + const { installThreadsCapture } = await import('./ui/threadsCapture.ts'); + installThreadsCapture(effectiveObserver, world); + } options.ready?.(); } catch (error) { status.textContent = '지형을 불러오지 못했습니다'; diff --git a/src/scene/sheep.ts b/src/scene/sheep.ts index 83166f5..b27d0dd 100644 --- a/src/scene/sheep.ts +++ b/src/scene/sheep.ts @@ -44,6 +44,11 @@ export function createSheep(model: Group, gear?: { umbrella: Group; raincoat: Gr let foldedHood: Object3D | undefined; if (gear) { model.add(gear.umbrella, gear.raincoat); + // Preserve the authored overhead position in the held pose, then let the hand carry it. + joints.ArmRight.quaternion.setFromUnitVectors(new Vector3(0, -1, 0), + new Vector3(...RAIN_GEAR.umbrellaGripDirection).normalize()).multiply(rest.ArmRight); + joints.ArmRight.attach(gear.umbrella); + joints.ArmRight.quaternion.copy(rest.ArmRight); hood = gear.raincoat.getObjectByName('CoatHood'); foldedHood = gear.raincoat.getObjectByName('CoatFoldedHood'); if (!hood || !foldedHood) throw new Error('우비 후드 모델 누락'); @@ -112,7 +117,10 @@ export function createSheep(model: Group, gear?: { umbrella: Group; raincoat: Gr const rigHood = copy(hood), rigFoldedHood = copy(foldedHood), rigUmbrella = copy(gear?.umbrella); const rigFlashlight = copy(gear?.flashlight); let flashlightOn = false; + let flashlightPose = 0; + let previousPoseTime: number | undefined; let umbrellaOpen = false; + let umbrellaPose = 0; const rotation = new Quaternion(); const down = new Vector3(0, -1, 0); const aim = new Vector3(); @@ -128,9 +136,9 @@ export function createSheep(model: Group, gear?: { umbrella: Group; raincoat: Gr clone() { return bindRig(group.clone(true), false); }, setEquipment(umbrella: boolean, raincoat: boolean, hoodUp = false, flashlight = false) { flashlightOn = flashlight; - if (rigFlashlight) rigFlashlight.visible = flashlight; + if (rigFlashlight) rigFlashlight.visible = flashlight || flashlightPose > 0; umbrellaOpen = umbrella; - if (rigUmbrella) rigUmbrella.visible = umbrella; + if (rigUmbrella) rigUmbrella.visible = umbrella || umbrellaPose > 0; rigCoatParts.forEach(part => { part.visible = raincoat; }); if (rigHood) rigHood.visible = raincoat && hoodUp; if (rigFoldedHood) rigFoldedHood.visible = raincoat && !hoodUp; @@ -144,13 +152,24 @@ export function createSheep(model: Group, gear?: { umbrella: Group; raincoat: Gr for (const [material, color] of baseColors) material.color.copy(color).multiplyScalar(brightness); }, pose(emote: Emote, elapsed: number, moving: boolean, time: number) { - const changed = moving || emote !== 'idle' || previousMoving !== moving || previousEmote !== emote; + const delta = Math.max(0, time - (previousPoseTime ?? time)); + const step = delta / FLASHLIGHT.poseTransitionSeconds; + previousPoseTime = time; + const previousFlashlightPose = flashlightPose; + flashlightPose = flashlightOn ? Math.min(1, flashlightPose + step) : Math.max(0, flashlightPose - step); + const previousUmbrellaPose = umbrellaPose; + const umbrellaStep = delta / RAIN_GEAR.umbrellaTransitionSeconds; + umbrellaPose = umbrellaOpen ? Math.min(1, umbrellaPose + umbrellaStep) : Math.max(0, umbrellaPose - umbrellaStep); + const carryingUmbrella = umbrellaOpen || umbrellaPose > 0; + const changed = moving || emote !== 'idle' || previousMoving !== moving || previousEmote !== emote + || previousFlashlightPose !== flashlightPose || flashlightPose !== Number(flashlightOn) + || previousUmbrellaPose !== umbrellaPose || umbrellaPose !== Number(umbrellaOpen); previousMoving = moving; previousEmote = emote; for (const [name, joint] of Object.entries(joints)) joint.quaternion.copy(rest[name]); if (emote === 'wave') { - pointArm(umbrellaOpen ? 'ArmLeft' : 'ArmRight', - aim.set(umbrellaOpen ? -1 : 1, .35 + Math.sin(elapsed * 12) * .3, -.15)); + pointArm(carryingUmbrella ? 'ArmLeft' : 'ArmRight', + aim.set(carryingUmbrella ? -1 : 1, .35 + Math.sin(elapsed * 12) * .3, -.15)); } else if (emote === 'pray') { pointArm('ArmLeft', aim.set(.68, -.22, .64)); pointArm('ArmRight', aim.set(-.68, -.22, .64)); @@ -163,8 +182,16 @@ export function createSheep(model: Group, gear?: { umbrella: Group; raincoat: Gr joints.ArmRight.rotateX(stride * .6); } // Keep the grip stable while the free arm and legs perform their own animations. - if (umbrellaOpen) pointArm('ArmRight', aim.set(.05, -.45, .7)); - if (flashlightOn) pointArm('ArmLeft', aim.set(-.08, -.22, 1)); + if (umbrellaPose > 0) { + rotation.setFromUnitVectors(down, aim.set(...RAIN_GEAR.umbrellaGripDirection).normalize()).multiply(rest.ArmRight); + joints.ArmRight.quaternion.slerp(rotation, MathUtils.smoothstep(umbrellaPose, 0, 1)); + } + if (rigUmbrella) rigUmbrella.visible = carryingUmbrella; + if (flashlightPose > 0) { + rotation.setFromUnitVectors(down, aim.set(-.08, -.22, 1).normalize()).multiply(rest.ArmLeft); + joints.ArmLeft.quaternion.slerp(rotation, MathUtils.smoothstep(flashlightPose, 0, 1)); + } + if (rigFlashlight) rigFlashlight.visible = flashlightOn || flashlightPose > 0; return changed; }, dispose() { diff --git a/src/scene/world.ts b/src/scene/world.ts index da92453..b96a71c 100644 --- a/src/scene/world.ts +++ b/src/scene/world.ts @@ -414,6 +414,30 @@ export function createWorld(canvas: HTMLCanvasElement, terrainData: Awaited harbour?.heightAt(x, z) ?? terrain.heightAt(x, z)); + return world.captureFrame(orbit); + } + return world.captureFrame(view); + }, readPlayer(): PlayerUpdate { const yaw = sheep?.group.rotation.y ?? camera.rotation.y; return { x: camera.position.x, z: camera.position.z, yaw: Math.atan2(Math.sin(yaw), Math.cos(yaw)), @@ -440,7 +464,7 @@ export function createWorld(canvas: HTMLCanvasElement, terrainData: Awaited harbour?.heightAt(x, z) ?? terrain.heightAt(x, z)); + } + }, + lookAtSun() { + if (!solarState) return; + restoreView(); + camera.lookAt(camera.position.clone().add(new Vector3(...directionFromAngles(solarState.azimuth, 0)))); + if (sheep) updateThirdPersonCamera(followCamera, camera, (x, z) => harbour?.heightAt(x, z) ?? terrain.heightAt(x, z)); + }, setEyeHeight(meters: number) { eyeHeight = meters; placeObserver(); diff --git a/src/style.css b/src/style.css index 795bfa1..4a86b01 100644 --- a/src/style.css +++ b/src/style.css @@ -29,6 +29,8 @@ button[aria-pressed=true]:hover, button.primary:hover { background: #f0cca0; } .scene-toolbar { position: absolute; top: max(18px, env(safe-area-inset-top)); left: max(18px, env(safe-area-inset-left)); right: max(18px, env(safe-area-inset-right)); display: flex; justify-content: space-between; gap: 12px; } .scene-toolbar button, .emote-controls button, #minimap-overlay { pointer-events: auto; box-shadow: 0 3px 14px #0003; } .toolbar-end, .button-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; } +#screenshot-status { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); max-width: calc(100vw - 32px); margin: 0; padding: 12px 18px; border-radius: 14px; background: #18232ef2; color: #eef1f4; font-size: 13px; pointer-events: none; animation: screenshot-status 4s forwards; } +@keyframes screenshot-status { 0%, 80% { opacity: 1; } 100% { opacity: 0; } } .emote-controls { position: absolute; right: max(18px, env(safe-area-inset-right)); bottom: max(24px, env(safe-area-inset-bottom)); display: flex; gap: 10px; } .emote-controls button { flex-direction: column; gap: 6px; min-width: 70px; padding: 12px 14px; background: #eee5d6; border-color: #fff3dd80; color: #3a382f; font-size: 12px; } .emote-controls button:hover:not(:disabled) { background: #fff0d8; } @@ -170,11 +172,11 @@ summary { padding: 12px 0; cursor: pointer; font-size: 14px; } .scene-toolbar { top: max(8px, env(safe-area-inset-top)); left: max(10px, env(safe-area-inset-left)); right: max(10px, env(safe-area-inset-right)); } .scene-toolbar button { width: 44px; height: 44px; min-height: 44px; padding: 10px; border-radius: 12px; } #current-location { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); } - #compass { top: calc(max(8px, env(safe-area-inset-top)) + 3px); width: calc(100vw - 140px); height: 52px; } + #compass { top: calc(max(8px, env(safe-area-inset-top)) + 3px); left: calc(50% - 26px); width: calc(100vw - 192px); height: 52px; } .compass-scale { height: 34px; } .compass-tick { padding-top: 15px; font-size: 10px; } .compass-tick.cardinal { font-size: 12px; } - .compass-tick:not(.cardinal) { font-size: 0; } + .compass-tick:not(.cardinal) { font-size: 0; color: transparent; text-shadow: none; } .compass-bearing { font-size: 10px; } .emote-controls { right: max(10px, env(safe-area-inset-right)); bottom: max(10px, env(safe-area-inset-bottom)); gap: 6px; } .emote-controls button { min-width: 44px; min-height: 48px; padding: 5px 6px; gap: 3px; border-radius: 11px; font-size: 10px; } diff --git a/src/ui/screenshot.ts b/src/ui/screenshot.ts new file mode 100644 index 0000000..65f3da6 --- /dev/null +++ b/src/ui/screenshot.ts @@ -0,0 +1,55 @@ +import { SCREENSHOT } from '../constants/screenshot.ts'; + +export function createScreenshot(captureFrame: () => HTMLCanvasElement) { + const opener = document.querySelector('#screenshot-open')!; + const dialog = document.querySelector('#ui-dialog')!; + const status = document.getElementById('screenshot-status')!; + const events = new AbortController(); + let busy = false; + opener.disabled = false; + opener.addEventListener('click', event => { + if (busy) event.stopPropagation(); + }, { signal: events.signal }); + + for (const button of document.querySelectorAll('[data-screenshot]')) { + button.addEventListener('click', async () => { + if (busy) return; + busy = true; + dialog.close(); + status.hidden = true; + try { + const includeUi = button.dataset.screenshot === 'ui'; + const toCanvas = includeUi ? (await import('html-to-image')).toCanvas : null; + if (toCanvas) await document.fonts.ready; + const frame = captureFrame(); + if (toCanvas) { + const overlay = await toCanvas(document.body, { + width: innerWidth, height: innerHeight, + canvasWidth: frame.width, canvasHeight: frame.height, pixelRatio: 1, + filter: node => !node.matches?.('#world, #lobby, #ui-dialog, #screenshot-status, script'), + }); + frame.getContext('2d')!.drawImage(overlay, 0, 0, frame.width, frame.height); + } + const blob = await new Promise((resolve, reject) => { + frame.toBlob(value => value ? resolve(value) : reject(new Error('PNG encoding failed')), 'image/png'); + }); + const url = URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.download = `sunrise-${new Date().toISOString().replace(/[:.]/g, '-')}-${includeUi ? 'ui' : 'scene'}.png`; + document.body.append(link); + link.click(); + link.remove(); + setTimeout(() => URL.revokeObjectURL(url), SCREENSHOT.objectUrlLifetimeMs); + status.textContent = 'PNG 이미지 다운로드를 시작했습니다.'; + } catch (error) { + console.error('Screenshot failed', error); + status.textContent = '사진을 저장하지 못했습니다. 다시 시도해 주세요.'; + } finally { + busy = false; + status.hidden = false; + } + }, { signal: events.signal }); + } + return { dispose() { events.abort(); opener.disabled = true; } }; +} diff --git a/src/ui/threadsCapture.ts b/src/ui/threadsCapture.ts new file mode 100644 index 0000000..07b4a9a --- /dev/null +++ b/src/ui/threadsCapture.ts @@ -0,0 +1,31 @@ +import type { ObserverConfig } from '../config/observer.ts'; +import { calculateSun, sunriseAzimuth } from '../astronomy/sunCalculator.ts'; +import { THREADS } from '../constants/threads.ts'; + +export interface ThreadsCapture { + sunrise(): string; + capture(): { images: { name: string; image: string }[]; capturedAt: string }; +} + +declare global { interface Window { sunriseThreads?: ThreadsCapture } } + +export function installThreadsCapture(observer: ObserverConfig, + world: { update: (state: ReturnType) => void; lookAtSunrise: (azimuth: number) => void; + captureAngle: (azimuth: number, pitch: number) => HTMLCanvasElement }) { + window.sunriseThreads = { + sunrise() { + const sunrise = calculateSun(new Date(), observer).sunrise; + if (!sunrise || !Number.isFinite(+sunrise)) throw new Error('No sunrise'); + return sunrise.toISOString(); + }, + capture() { + const now = new Date(); + world.update(calculateSun(now, observer)); + const azimuth = sunriseAzimuth(now, observer); + world.lookAtSunrise(azimuth); + const images = THREADS.angles.map(angle => ({ name: angle.name, + image: world.captureAngle((azimuth + angle.offset) % 360, angle.pitch).toDataURL('image/jpeg', 0.95) })); + return { images, capturedAt: now.toISOString() }; + }, + }; +} diff --git a/tests/arrival.test.ts b/tests/arrival.test.ts new file mode 100644 index 0000000..40f6425 --- /dev/null +++ b/tests/arrival.test.ts @@ -0,0 +1,15 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { calculateSun, sunriseAzimuth } from '../src/astronomy/sunCalculator.ts'; +import { observer } from '../src/config/observer.ts'; + +test('arrival faces the selected day’s sunrise, even when entering in the afternoon', () => { + for (const month of ['01', '06', '11']) { + const date = new Date(`2026-${month}-02T15:00:00+09:00`); + const state = calculateSun(date, observer); + const heading = sunriseAzimuth(date, observer); + assert.equal(heading, calculateSun(state.sunrise!, observer).azimuth); + assert.ok(heading > 45 && heading < 135); + assert.ok(Math.abs(heading - state.azimuth) > 60); + } +}); diff --git a/tests/rain-gear.test.ts b/tests/rain-gear.test.ts index eef5666..de6cd7b 100644 --- a/tests/rain-gear.test.ts +++ b/tests/rain-gear.test.ts @@ -19,6 +19,7 @@ test('authored flashlight stays in the left grip and uses lumen power only when assert.equal(beam.light.intensity, FLASHLIGHT.lumens / (2 * Math.PI * (1 - Math.cos(FLASHLIGHT.halfAngle)))); sheep.setEquipment(true, false, false, true); sheep.pose('idle', 0, true, 1); + sheep.pose('idle', 0, true, 2); beam.update(true); assert.equal(torch.visible, true); const direction = new Vector3().subVectors(beam.light.target.position, beam.light.position).normalize(); @@ -29,16 +30,47 @@ test('authored flashlight stays in the left grip and uses lumen power only when assert.ok(Math.abs(beam.light.position.x-before.x-3) < .001); sheep.setEquipment(false, false, false, false); beam.update(false); + sheep.pose('idle', 0, false, 3); assert.equal(torch.visible, false); assert.equal(beam.light.visible, false); beam.dispose(); sheep.dispose(); }); +test('flashlight raises and lowers smoothly, retaining the prop until the arm is down', async () => { + const [model, umbrella, raincoat, torch] = await Promise.all(['red-sheep', 'umbrella', 'raincoat', 'flashlight'].map(asset)); + const sheep = createSheep(model, { umbrella, raincoat, flashlight: torch }); + const arm = model.getObjectByName('ArmLeft')!; + sheep.pose('idle', 0, false, 0); + const rest = arm.quaternion.clone(); + sheep.setEquipment(false, false, false, true); + assert.equal(sheep.pose('idle', 0, false, .1), true, 'idle rendering continues during the transition'); + const raising = arm.quaternion.clone(); + sheep.pose('idle', 0, false, 1); + const held = arm.quaternion.clone(); + assert.ok(raising.angleTo(rest) > .01 && raising.angleTo(held) > .01); + sheep.setEquipment(false, false, false, false); + assert.equal(torch.visible, true, 'the prop must not vanish before the lowering animation'); + assert.equal(sheep.pose('idle', 0, false, 1.1), true); + const lowering = arm.quaternion.clone(); + assert.ok(lowering.angleTo(held) > .01 && lowering.angleTo(rest) > .01); + sheep.setEquipment(false, false, false, true); + sheep.pose('idle', 0, false, 1.1); + assert.ok(arm.quaternion.angleTo(lowering) < 1e-6, 'reversing mid-animation does not snap'); + sheep.setEquipment(false, false, false, false); + assert.equal(sheep.pose('idle', 0, false, 2), true, 'the final lowered frame is rendered'); + assert.ok(arm.quaternion.angleTo(rest) < 1e-6); + assert.equal(torch.visible, false); + assert.equal(sheep.pose('idle', 0, false, 2.1), false, 'idle rendering can stop after the transition'); + sheep.dispose(); +}); + test('rain equipment is independent of emotes, remains in snow, and clears in dry weather', () => { const gear = createRainGearState(); const emote = createEmoteState(); assert.equal(gear.toggle('umbrella'), false); gear.updateWeather(1, 0); + assert.ok(gear.raincoat && gear.hood, 'rainy arrival starts with coat and hood'); + gear.toggle('raincoat'); assert.equal(gear.toggle('hood'), false, 'hood requires the raincoat'); assert.ok(gear.toggle('umbrella')); assert.ok(gear.toggle('raincoat')); @@ -58,6 +90,23 @@ test('rain equipment is independent of emotes, remains in snow, and clears in dr assert.ok(!gear.available && !gear.umbrella && !gear.raincoat); }); +test('arrival equipment waits for known weather and never overrides a later manual choice', () => { + const gear = createRainGearState(); + gear.updateWeather(null, null); + gear.updateWeather(2, 0); + assert.ok(gear.raincoat && gear.hood && !gear.umbrella); + gear.toggle('hood'); + gear.updateWeather(3, 0); + assert.ok(gear.raincoat && !gear.hood); + gear.toggle('raincoat'); + gear.updateWeather(4, 0); + assert.ok(!gear.raincoat && !gear.hood); + const dryArrival = createRainGearState(); + dryArrival.updateWeather(0, 0); + dryArrival.updateWeather(2, 0); + assert.ok(!dryArrival.raincoat && !dryArrival.hood, 'only arrival gets the default outfit'); +}); + async function asset(name: string) { const bytes = await readFile(new URL(`../public/characters/${name}.glb`, import.meta.url)); return (await new GLTFLoader().parseAsync(bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength), '')).scene; @@ -79,16 +128,49 @@ test('Blender gear follows the sheep joints and keeps the umbrella grip through sheep.setEquipment(true, true, true); assert.ok(hood.visible && !folded.visible); sheep.pose('idle', 0, true, 1); + sheep.pose('idle', 0, true, 2); const grip = right.quaternion.clone(); const leftWalking = left.quaternion.clone(); - sheep.pose('wave', .2, false, 1); + sheep.pose('wave', .2, false, 2); assert.ok(right.quaternion.angleTo(grip) < 1e-6); assert.ok(left.quaternion.angleTo(leftWalking) > .5); - sheep.pose('pray', .2, false, 1); + sheep.pose('pray', .2, false, 2); assert.ok(right.quaternion.angleTo(grip) < 1e-6); assert.ok(umbrella.visible && raincoat.visible && sleeve.visible); sheep.setEquipment(false, false); + sheep.pose('idle', 0, false, 3); assert.ok(!umbrella.visible && !raincoat.visible && !sleeve.visible); assert.equal(hood.visible, false); sheep.dispose(); }); + +test('umbrella follows the right hand through raising, reversal and lowering before hiding', async () => { + const [model, umbrella, raincoat] = await Promise.all(['red-sheep', 'umbrella', 'raincoat'].map(asset)); + const sheep = createSheep(model, { umbrella, raincoat }); + const arm = model.getObjectByName('ArmRight')!; + assert.ok(umbrella.parent === arm, 'umbrella is attached to the right hand'); + sheep.pose('idle', 0, false, 0); + const rest = arm.quaternion.clone(); + sheep.setEquipment(true, false); + assert.equal(sheep.pose('idle', 0, false, .225), true); + const halfway = arm.quaternion.clone(); + const canopyHalfway = umbrella.getWorldPosition(new Vector3()); + sheep.setEquipment(true, false); // Repeated network updates must not restart the transition. + sheep.pose('idle', 0, false, .45); + const held = arm.quaternion.clone(); + assert.ok(halfway.angleTo(rest) > .01 && halfway.angleTo(held) > .01); + assert.ok(canopyHalfway.distanceTo(umbrella.getWorldPosition(new Vector3())) > .01); + sheep.setEquipment(false, false); + assert.equal(umbrella.visible, true); + assert.equal(sheep.pose('idle', 0, false, .675), true); + assert.ok(arm.quaternion.angleTo(halfway) < 1e-6); + sheep.setEquipment(true, false); + sheep.pose('idle', 0, false, .675); + assert.ok(arm.quaternion.angleTo(halfway) < 1e-6, 'reversal preserves the current pose'); + sheep.setEquipment(false, false); + assert.equal(sheep.pose('idle', 0, false, 1.2), true); + assert.ok(arm.quaternion.angleTo(rest) < 1e-6); + assert.equal(umbrella.visible, false); + assert.equal(sheep.pose('idle', 0, false, 1.3), false); + sheep.dispose(); +}); diff --git a/tests/threads-config.test.ts b/tests/threads-config.test.ts new file mode 100644 index 0000000..67524d5 --- /dev/null +++ b/tests/threads-config.test.ts @@ -0,0 +1,16 @@ +import assert from 'node:assert/strict'; +import { test } from 'node:test'; +import { loadThreadsConfig } from '../server/threads/config.ts'; + +test('Threads JSON sample loads with relative paths and no embedded token', () => { + const config = loadThreadsConfig(new URL('../.env.threads.sample.json', import.meta.url)); + assert.equal(config.accessToken, ''); + assert.equal(config.siteUrl, 'https://sunrise.horoli.kr'); + assert.equal(config.imageDir, 'dist/threads-captures'); +}); + +test('missing configuration is permitted only for capture preview', () => { + const missing = new URL('../.tmp/threads-config-does-not-exist.json', import.meta.url); + assert.throws(() => loadThreadsConfig(missing), /copy .env.threads.sample.json/); + assert.equal(loadThreadsConfig(missing, true).accessToken, ''); +}); diff --git a/tests/threads.test.ts b/tests/threads.test.ts new file mode 100644 index 0000000..2b7b152 --- /dev/null +++ b/tests/threads.test.ts @@ -0,0 +1,86 @@ +import { test } from 'node:test'; +import assert from 'node:assert/strict'; +import { calculateSun } from '../src/astronomy/sunCalculator.ts'; +import { observer } from '../src/config/observer.ts'; +import { dailySchedule, publishImage, publishCarousel } from '../server/threads/publisher.ts'; + +test('schedule uses the Korean date and existing SunCalc sunrise', () => { + const now = new Date('2026-11-01T18:00:00Z'); + const schedule = dailySchedule(now); + assert.equal(schedule.date, '2026-11-02'); + assert.equal(schedule.sunrise.getTime(), calculateSun(now, observer).sunrise!.getTime()); + assert.equal(+schedule.sunrise - +schedule.prepareAt, 300_000); +}); + +test('publishing waits for ready media and persists intent before sending', async () => { + const events: string[] = []; + const replies = [{ id: 'container' }, { status: 'IN_PROGRESS' }, { status: 'FINISHED' }, { id: 'post' }]; + const result = await publishImage('secret', 'https://example.com/image.jpg', 'caption', async () => { events.push('persist'); }, + async (url, init) => { + events.push(String(url).includes('threads_publish') ? 'publish' : 'request'); + assert.equal(new Headers(init?.headers).get('Authorization'), 'Bearer secret'); + return new Response(JSON.stringify(replies.shift())); + }, async () => {}); + assert.equal(result, 'post'); + assert.deepEqual(events.slice(-2), ['persist', 'publish']); +}); + +test('failed media never reaches publish', async () => { + const replies = [{ id: 'container' }, { status: 'ERROR' }]; + await assert.rejects(publishImage('secret', 'https://example.com/image.jpg', 'caption', async () => { + assert.fail('must not publish'); + }, async () => new Response(JSON.stringify(replies.shift())), async () => {}), /ERROR/); +}); + +test('another publisher owning the daily record prevents the publish request', async () => { + let requests = 0; + const replies = [{ id: 'container' }, { status: 'FINISHED' }]; + await assert.rejects(publishImage('secret', 'https://example.com/image.jpg', 'caption', async () => { + throw new Error('EEXIST'); + }, async () => { requests++; return new Response(JSON.stringify(replies.shift())); }, async () => {}), /EEXIST/); + assert.equal(requests, 2); +}); + +test('ambiguous publish response is never automatically retried', async () => { + let requests = 0; + let claimed = false; + const replies = [{ id: 'container' }, { status: 'FINISHED' }]; + await assert.rejects(publishImage('secret', 'https://example.com/image.jpg', 'caption', async () => { + claimed = true; + }, async () => { + requests++; + if (requests === 3) throw new Error('Connection lost'); + return new Response(JSON.stringify(replies.shift())); + }, async () => {}), /Connection lost/); + assert.equal(claimed, true); + assert.equal(requests, 3); +}); + +test('carousel preserves photo order, waits for children and publishes only the parent', async () => { + const posts: URLSearchParams[] = []; + const replies = [{ id: 'back' }, { status: 'FINISHED' }, { id: 'front' }, + { status: 'IN_PROGRESS' }, { status: 'FINISHED' }, { id: 'album' }, { status: 'FINISHED' }, { id: 'post' }]; + let claimed = ''; + const result = await publishCarousel('secret', ['https://example.com/back.jpg', 'https://example.com/front.jpg'], 'caption', + async id => { claimed = id; }, async (_url, init) => { + if (init?.method === 'POST') posts.push(init.body as URLSearchParams); + return new Response(JSON.stringify(replies.shift())); + }, async () => {}); + assert.equal(result, 'post'); + assert.equal(posts[0].get('image_url'), 'https://example.com/back.jpg'); + assert.equal(posts[1].get('image_url'), 'https://example.com/front.jpg'); + assert.equal(posts[0].get('is_carousel_item'), 'true'); + assert.equal(posts[1].get('is_carousel_item'), 'true'); + assert.equal(posts[2].get('media_type'), 'CAROUSEL'); + assert.equal(posts[2].get('children'), 'back,front'); + assert.equal(posts[2].get('text'), 'caption'); + assert.equal(claimed, 'album'); + assert.equal(posts[3].get('creation_id'), 'album'); + assert.equal(posts.length, 4); +}); + +test('a failed second image prevents a partial carousel publication', async () => { + const replies = [{ id: 'back' }, { status: 'FINISHED' }, { id: 'front' }, { status: 'ERROR' }]; + await assert.rejects(publishCarousel('secret', ['https://example.com/back.jpg', 'https://example.com/front.jpg'], 'caption', + async () => assert.fail('must not publish'), async () => new Response(JSON.stringify(replies.shift())), async () => {}), /ERROR/); +});