
古建漫游指南
古建漫游指南 是一个专注于中国古建筑历史文献与影像数字化的档案项目。它致力于搜集、整理散落在故纸堆、老胶片以及前辈学者笔下的珍贵资料,通过数字化手段为这些濒临消失或难以触及的文化遗产建立一个稳固的“数字基座”。
Anatomy Atelier 是一款基于 three.js 与 GPT 5.6 Sol 构建的浏览器原生3D人体解剖探索应用,用户无需安装任何插件即可在网页中旋转、缩放、点击解剖结构并获取AI驱动的实时解说。

项目基于 vinext-starter 全栈模板开发,支持 Cloudflare D1/R2 绑定(可选),Node.js ≥ 22.13.0 环境。内置 OpenAI 工作区认证头信息读取(邮箱/全名)及可选 ChatGPT 登录(SIWC)辅助函数,便于构建用户专属学习记录或个性化内容。本地开发通过 vite.config.ts 模拟绑定,数据库 schema 初始为空,Drizzle 迁移按需生成。注意:SIWC 仅验证身份不证明工作区成员资格,访问控制需额外实现;ChatGPT 登录相关路由(/signin-with-chatgpt 等)由平台托管,禁止自定义实现。
3D交互体验
全栈基础设施(vinext-starter)
| 组件 | 作用 | 注意事项 |
|---|---|---|
app/ | 站点业务代码目录 | 编辑此处添加解剖模块 |
.openai/hosting.json | 声明D1/R2绑定(可选) | 未使用时可忽略 |
vite.config.ts | 本地开发模拟绑定 | 生产环境由平台注入 |
db/schema.ts | 数据库表结构定义 | 初始为空,按需扩展 |
examples/d1/ | D1示例界面参考 | 可删除或改造为用户记录存储 |
drizzle.config.ts | 迁移生成配置 | 修改schema后执行npm run db:generate |
身份认证体系
oai-authenticated-user-email 获取邮箱;若SIWC配置文件含名称,则额外提供百分号编码的UTF-8全名(伴随encoding头确认)getChatGPTUser():可选登录态检测,用于个性化UIrequireChatGPTUser(returnTo):强制登录页保护,匿名访客重定向至登录流chatGPTSignInPath/SignOutPath(returnTo):生成安全编码的登录/登出链接export const dynamic = "force-dynamic";保留路由(/signin-with-chatgpt等)由平台处理,严禁自定义实现环境准备
# 确保 Node.js >= 22.13.0
node -v
# 安装依赖
npm install
# 本地开发(自动模拟D1/R2绑定)
npm run dev
# 生产构建验证
npm run build
# 测试构建产物渲染
npm test
数据库工作流
db/schema.ts 定义用户记录/学习进度等表结构npm run db:generate 生成迁移文件身份集成最佳实践
// app/profile/page.tsx
import { headers } from "next/headers";
import { requireChatGPTUser } from "../chatgpt-auth";
export const dynamic = "force-dynamic"; // 必须!依赖请求头
export default async function ProfilePage() {
const user = await requireChatGPTUser("/profile"); // 未登录则跳转登录
const requestHeaders = await headers();
const email = requestHeaders.get("oai-authenticated-user-email");
const encodedFullName = requestHeaders.get("oai-authenticated-user-full-name");
const fullName =
encodedFullName &&
requestHeaders.get("oai-authenticated-user-full-name-encoding") === "percent-encoded-utf-8"
? decodeURIComponent(encodedFullName)
: null;
return <div>欢迎, {fullName ?? email}</div>;
}
常见陷阱规避
/signin-with-chatgpt 等保留路径创建路由 → 会导致平台OAuth流程失效force-dynamic 的页面读取认证头 → 缓存导致身份错乱






