GCP integration + v0.3 frontend + intro animation#2
Conversation
There was a problem hiding this comment.
Pull request overview
Adds GCP-oriented deployment/documentation updates and a new frontend intro-video experience, while extending backend support for serving static assets and migrating existing SQLite session tables to include persona/difficulty.
Changes:
- Adds intro video overlay flow in the frontend, with Skip support and boot sequencing after video end/failure.
- Serves
intro.mp4anddemo.pngvia new FastAPI routes. - Updates SQLite initialization to include
persona/difficultycolumns and attempts to migrate older DBs; adds deployment/docs ignore rules and a new README.
Reviewed changes
Copilot reviewed 5 out of 8 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | New project overview, features, local run + Cloud Run deployment instructions. |
| frontend/index.html | Adds fullscreen intro video overlay and defers app boot until skip/end/error. |
| backend/app/main.py | Adds /intro.mp4 and /demo.png routes to serve frontend assets. |
| backend/app/db.py | Adds schema migration for persona/difficulty columns on existing SQLite DBs. |
| .gitignore | Keeps *.md ignored while explicitly tracking README.md. |
| .gcloudignore | Excludes venvs, large data, and dev/team/docs files from Cloud Build source upload. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| try: | ||
| _conn().execute(f"ALTER TABLE sessions ADD COLUMN {col} {coldef}") | ||
| _conn().commit() | ||
| except Exception: | ||
| pass # column already exists |
| // if video can't autoplay (blocked), fall back after 200ms | ||
| var playPromise=vv.play(); | ||
| if(playPromise&&typeof playPromise.catch==="function"){ | ||
| playPromise.catch(function(){startApp();}); | ||
| } |
新增:五层防幻觉机制新增文件 五层机制1. Quote Verification(引用核实) 2. Trigger Validation(触发条件验证) 3. Self-Consistency Referee(多数投票裁判) 4. Score Sanity Check(分数钳位) 5. Schema Guard(结构守卫) |
Summary
llm.pyauto-routing (falls back to OpenRouter whenGCP_PROJECTnot set)backend/app/data/bigquery.py) —whetstone.corpustable auto-provisioned on startup;/api/corpus/searchprefers BQ over SQLite when GCP is configuredDockerfile+.dockerignore+.gcloudignore(excludespdf_env/symlink that causes WinError 1920 on Windows)frontend/intro.mp4served via/intro.mp4FastAPI route; fullscreen overlay plays before app loads, Skip › button, graceful fallback on video errorfrontend/demo.png), three-arenas table, tech stack, run/deploy commands, hackathon compliance tablepersona+difficultycolumns to existing DBs without destroying dataGCP track checklist
europe-west2)whetstone.corpus— SEC EDGAR + CUAD clause corpusTest plan
uvicorn app.main:app --app-dir backendstarts without errorsGET /api/healthreturnsgcp.vertex_ai: truewhenGCP_PROJECTis sethttp://localhost:8000shows intro video → Skip → loading bar → Dojo tabGET /api/corpus/search?clause_type=liability_capreturnssource: bigquerywhen BQ is configuredDeploy command