Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
這是一個旅行記帳網站。你可以用它記低每一筆旅行開支,例如食飯、交通、酒店、門票和購物。 1. 你去旅行。 2. 你花了錢。 3. 你把收據、金額或文字放入這個 app。 4. App 幫你整理成清楚的記錄。 5. 你可以在不同旅程之間切換,不會把資料混在一起。 請記住一件事:每個人要用自己的登入 email。這樣你的旅行開支就不會和其他人的開支混在一起。 • Compact app(主要公開 app): https://travel-expense-compact.vercel.app • React app: https://travel-expense-react.vercel.app • Admin Console: https://travel-expense-admin-kanban.vercel.app • GitHub Pages React app: https://jd92-beep.github.io/travel-expense/react/ • GitHub Pages root(安全轉址到 Compact): https://jd92-beep.github.io/travel-expense/README 전문 보기 ↗
English · 繁體中文(廣東話)
Track travel expenses, organize receipts and itineraries, and calculate shared costs. Each trip has its own records. Compact is the main public app; the parallel React client uses compatible data contracts.
The GitHub Pages root redirects to Compact. Check the version shown in Settings when reporting an issue. Source versions and deployed versions can differ; this README is not a deployment receipt.
User 1.Use a separate account for each person. Expense-splitting companions are calculation participants; adding one does not grant another app user access to the trip.
| Screen / Chinese label | What to do |
|---|---|
| Home / 首頁 | Select the active trip; check your budget, today's spending and itinerary. |
| Scan / 記帳 | Take a receipt photo, choose an image, paste email text, enter an expense manually or use voice input. |
| Records / 紀錄 | Search and filter expenses; open a record to review or edit it. |
| Itinerary / 行程 | View the trip's daily places, times and related expenses. |
| Weather / 天氣 | Choose a day and location; inspect hourly forecasts, source and freshness. |
| Stats / 統計 | Review totals, spending categories and shared costs. |
| Settings / 設定 | Manage trips, exchange rates, AI models, sync, themes and backups. |
Always select the correct trip before adding or syncing records. Before saving a receipt, check its merchant, date, time, currency, amount, payment method, payer and sharing mode. AI output is a draft and may need correction.
Rates are displayed as 1 HKD = N units of the trip currency.
Paste itinerary, hotel, restaurant, transport or booking text into Trip Update AI. Review the proposed dates, places and missing details before applying changes.
Weather uses the selected trip date and location. Its hourly rail opens at the corresponding local clock hour where available, and you can select another hour. Forecasts distinguish observations, daily bulletins and hourly models, including their sources and freshness. Official services are preferred where supported; missing fields can use labelled fallback providers. Unavailable dates or fields are shown explicitly. Device location requires your action and browser permission.
In 設定 → AI 模型選擇, expand a task category, then a provider, to choose a model. The category header shows the current model without expanding it.
429, quota and daily-limit errors stop automatic retries to other models.All credentialed AI calls go through the server-side Credential Broker. Never paste a provider API key into public frontend code or a backup. Manual expense entry remains available when AI is unavailable.
Use 外觀主題 (Appearance) in Settings. 自動(依旅程) follows the active trip's recommendation; a manual choice stays selected across trips. The current catalog includes regional and style themes, with light and dark options. Selection saves immediately. Compact's theme UI is independent of the parallel React client.
Supabase is the shared primary store. Notion is an optional mirror.
See HANDOVER.md for outstanding integration checks. A local test does not establish that a production sync completed.
In 設定 → 資料管理 → 下載旅程資料 (Settings → Data management → Download trip data):
summary.html for an offline, printable report. Open the CSV files in Excel or Numbers.The archive contains the current trip's expense, item, allocation, companion, itinerary and photo tables, plus a portable JSON backup. Missing images, failed downloads and thumbnail substitutes are labelled; the text data is still available. Standalone CSV and JSON downloads are also available.
JSON restore previews the imported data and removes credentials, cloud IDs and stale or foreign trip links. It restores text data, not the ZIP's receipt images. Downloads can contain private records: keep them in a private location. See the export format.
Use Node.js 22.x, as declared by Compact's package. Start from your clone:
git clone https://github.com/jd92-beep/travel-expense.git
cd travel-expense/app-compact
npm ci
npm run dev
Open local Compact. Live sign-in and provider features require their configured backend services; local startup alone does not provision them. Keep private credentials in the approved server-side broker/vault.
Required checks for Compact changes:
npm run typecheck
npm run build
npm run security:scan
npm run smoke:scan
npm run smoke:settings
npm run smoke:weather
npm run smoke:dashboard
npm run smoke:ai-routing
npm run smoke:mobile-layout
The browser smoke wrapper starts an isolated local server with safe environment loading. Playwright blocks unmocked external hosts. Install its Chromium browser with npx playwright install chromium if it is missing. Run the smoke suites relevant to your change; see Compact's scripts and notes and architecture.
For the parallel client, run npm ci and npm run dev from app-react/, then open local React. Compact and React version independently. Changes to shared storage or trip/receipt contracts need cross-client checks.
| Path | Purpose |
|---|---|
app-compact/ | Active public React/Vite client |
app-react/ | Parallel public client |
app-admin-kanban/ | Admin frontend and same-origin BFF |
workers/credential-broker/ | Credentialed provider access |
supabase/ | Database migrations and Edge Functions |
index.html | Stateless redirect to Compact |
docs/ | Contracts, runbooks and technical notes |
AGENTS.md | Repository working rules |
HANDOVER.md / CHANGELOG.md | Continuation notes and change history |
GitHub Pages builds from main: Compact under /compact/, React under /react/, and a redirect at the root. Vercel has separate app targets. Admin production uses a protected, explicitly dispatched workflow. Legacy Netlify configuration remains in the repository; it is not the recommended public entry point.
A push to main can trigger deployment. Obtain the repository owner's explicit authorization before pushing, merging or deploying, and verify the intended source SHA and live app afterwards. Bump the touched app's visible APP_VERSION, package version and lockfile version together. Database migrations, Admin writes and credential changes require separate authorization for their target.
Read AGENTS.md, the relevant app architecture and HANDOVER.md before maintenance. Never commit secrets, .env files, personal exports, generated deployment output or local graph indexes.