- W26: NestJS API + Next.js Web + Prisma + SQLite scaffold - W26: Lead 模型 + Crawler + 询价发布助手 (线索池 + 一键发布) - W29.x: MCP 集成 (Integration 模型 + connectMcp + publish_rfq 5 工具端到端跑通) - W30: 3 字段补充 (notes / quotationType / quotationDemand) - W31 P1: 自动填 enterpriseId / userId (Prisma companyUserId 字段 + get_app_identity tool + lead.service.ts publishArgs) - W31: detail 详情页 + admin UI 集成管理 (OpenAppListView + AuditLogListView) 关联: ~/Documents/02-平台开发/产品开发/F002-W31-交接文档.md GIT-AUDIT-REPORT-2026-06-24.md
1.8 KiB
1.8 KiB
apps/web — Next.js 14 前端
生成: 2026-06-05 分支: main
OVERVIEW
Next.js 14 App Router + Tailwind CSS 3 的 SPA(无路由)。useState<Page> 切换 14 组件。端口 3001。
STRUCTURE
web/
├── src/
│ ├── app/
│ │ ├── layout.tsx # 根布局(html lang=zh-CN + Providers)
│ │ └── page.tsx # SPA 根(14 页面条件渲染)
│ ├── components/ # 14 个页面/组件
│ │ ├── LoginPage.tsx
│ │ ├── AuthProvider.tsx # JWT 认证上下文
│ │ ├── Sidebar.tsx
│ │ ├── OverviewPage.tsx
│ │ ├── InquiryPage.tsx # 线索列表
│ │ ├── LeadDetailPage.tsx
│ │ ├── ProductPage.tsx
│ │ ├── ComparisonPage.tsx
│ │ ├── ImagePage.tsx
│ │ ├── RuleCenterPage.tsx # 含采集器配置
│ │ ├── ReportCenterPage.tsx
│ │ ├── SystemMonitorPage.tsx
│ │ └── AdminPage.tsx
│ └── lib/
│ └── apiBase.ts # API_BASE = env ?? 'http://localhost:4000'
WHERE TO LOOK
| 任务 | Location | Notes |
|---|---|---|
| 增加页面 | src/components/ + 更新 page.tsx 的 Page 类型 |
SPA 无路由,手动注册 |
| 修改样式 | tailwind.config.ts |
secondary(#0051d5), border-subtle, surface-container 系 |
| API 调用 | src/lib/apiBase.ts |
生产 Nginx 反代 /api |
| 认证 | AuthProvider.tsx |
localStorage key auth |
CONVENTIONS
- Prettier: noSemi, singleQuote, trailingComma: all, printWidth: 100
- 路径别名
@/→src/ - 导航通过
onNavigateprop 传 page 字符串,参数通过 props - JWT 存 localStorage key
auth
ANTI-PATTERNS
- 不加路由库,保持 SPA useState 模式
- 不在 components 外部加样式文件