130 lines
4.3 KiB
Markdown
130 lines
4.3 KiB
Markdown
# yedir-ai
|
||
|
||
yedir-ai 是一个面向商业化交付的 AI 设计工作台。它把 Lovart 风格的新首页、无限画布、Agent 工作流、图像生成与编辑、3D/CAD、本地 AI 配置中心和后台治理能力整合到同一个 Next.js 应用中。
|
||
|
||
这个仓库已经不再定位为通用 Chat 模板。旧 Chat 页面入口已移除,`/api/chat` 目前保留为 Canvas/Agent 等内部生成链路使用。
|
||
|
||
## 当前能力
|
||
|
||
- **Lovart 风格首页**:静态轻量壳优先渲染,站点配置、精选图、项目、教程和会员信息通过客户端渐进加载。
|
||
- **Canvas/Agent 工作台**:支持多模态生成、图片编辑、素材编排、Agent 模式和项目化创作流程。
|
||
- **图像与视频生成链路**:支持 Gemini、Volcano、Qwen、FAL、RUXA、Krea、Runway、Midjourney 等可配置供应商。
|
||
- **3D / CAD 能力**:集成 Tripo3D、World Labs、KittyCAD/Zoo,并支持后台模型别名和 Key 池配置。
|
||
- **后台设置中心**:本地 AI 设置已拆分为领域组件,支持折叠持久化、状态摘要、快捷目录和统一 section shell。
|
||
- **生产治理**:包含类型检查、lint、日志脱敏、首页公开接口缓存/降级、仓库污染物检查和 CI 质量门禁。
|
||
|
||
## 技术栈
|
||
|
||
- Next.js 16 App Router
|
||
- React 19 RC
|
||
- TypeScript
|
||
- Tailwind CSS + Radix UI
|
||
- Drizzle ORM + Postgres
|
||
- Auth.js
|
||
- Vercel Blob / S3-compatible object storage
|
||
- Playwright
|
||
- Ultracite / Biome
|
||
|
||
## 快速开始
|
||
|
||
准备 Node.js 20、pnpm 9.12.3 和 Postgres。
|
||
|
||
```bash
|
||
pnpm install
|
||
cp .env.example .env.local
|
||
pnpm db:migrate
|
||
AUTH_TRUST_HOST=true PORT=3001 pnpm dev
|
||
```
|
||
|
||
默认访问地址:
|
||
|
||
```text
|
||
http://localhost:3001/
|
||
```
|
||
|
||
后台设置页:
|
||
|
||
```text
|
||
http://localhost:3001/settings
|
||
```
|
||
|
||
未登录访问后台会重定向到 `/login?callbackUrl=%2Fsettings`。
|
||
|
||
## 环境变量
|
||
|
||
先从 `.env.example` 复制到 `.env.local`,再按部署环境填写真实值。不要提交 `.env.local` 或任何真实密钥。
|
||
|
||
最小本地运行通常需要:
|
||
|
||
- `AUTH_SECRET`
|
||
- `AUTH_URL` 或本地开发使用 `AUTH_TRUST_HOST=true`
|
||
- `POSTGRES_URL`
|
||
- `BLOB_READ_WRITE_TOKEN` 或一组 S3 配置
|
||
- 至少一个可用 AI Provider Key,或在后台设置中配置供应商
|
||
|
||
更多分组说明见 [docs/deployment.md](docs/deployment.md)。
|
||
|
||
## 常用命令
|
||
|
||
```bash
|
||
pnpm dev
|
||
pnpm lint
|
||
pnpm check:logs
|
||
pnpm check:brand
|
||
pnpm check:ci
|
||
pnpm check:env
|
||
pnpm check:artifacts
|
||
pnpm check:quality
|
||
pnpm clean:artifacts
|
||
pnpm exec tsc --noEmit --pretty false
|
||
pnpm test
|
||
pnpm db:migrate
|
||
pnpm db:generate
|
||
```
|
||
|
||
推荐提交前至少运行:
|
||
|
||
```bash
|
||
pnpm check:quality
|
||
AUTH_TRUST_HOST=true PORT=3001 pnpm dev
|
||
SMOKE_BASE_URL=http://127.0.0.1:3001 pnpm smoke:routes
|
||
```
|
||
|
||
## 目录结构
|
||
|
||
```text
|
||
app/ Next.js routes, route handlers, admin pages
|
||
components/ UI, Canvas, home, editor and product modules
|
||
components/home/lovart/ Lovart home focused render sections
|
||
lib/ DB, AI providers, storage, observability, domain logic
|
||
docs/ Deployment, operations, architecture and feature notes
|
||
tests/ Playwright e2e and route-level tests
|
||
.github/workflows/ Quality gates and Playwright CI
|
||
```
|
||
|
||
## 部署与运维
|
||
|
||
- 生产部署建议使用受控反向代理,并只在 Host 头可信时设置 `AUTH_TRUST_HOST=true`。
|
||
- 首页公开接口应保持快速返回,慢数据库或外部服务异常时返回缓存或 fallback。
|
||
- 生产日志默认通过 `LOG_LEVEL=info` 控制,敏感字段会被 `lib/observability` 脱敏。
|
||
- Playwright workflow 独立于基础质量门禁,避免把密钥依赖和 e2e 成本混入每次 lint/typecheck。
|
||
|
||
详细说明:
|
||
|
||
- [部署指南](docs/deployment.md)
|
||
- [运维与质量门禁](docs/operations.md)
|
||
- [系统架构说明](docs/architecture.md)
|
||
- [发布就绪检查清单](docs/release-readiness.md)
|
||
- [安全策略](SECURITY.md)
|
||
- [贡献指南](CONTRIBUTING.md)
|
||
- [行为准则](CODE_OF_CONDUCT.md)
|
||
- [支持说明](SUPPORT.md)
|
||
- [更新日志](CHANGELOG.md)
|
||
|
||
## 开发边界
|
||
|
||
- `/classic` 和 `/chat/[id]` 旧 Chat UI 已重定向到 `/`。
|
||
- `/api/chat` 暂时是内部生成 API,不作为公开旧 Chat 页面入口。
|
||
- Canvas、Agent、图像处理和后台设置仍有大型历史模块,后续应按领域继续拆分。
|
||
- License 以仓库根目录 [LICENSE](LICENSE) 为准;本阶段未修改许可证和版权主体。
|