Next.js App Router + Prisma/MySQL + NextAuth Credentials 的移动端优先 OA MVP。当前版本包含手机号/邮箱 + 密码登录、工作台、审批、考勤、通知和个人中心页面,并通过 Prisma seed 提供可演示的三类角色数据。
- Next.js 15 App Router / React 18 / TypeScript
- Tailwind CSS + shadcn/ui 初始化配置与本地基础组件
- Prisma 6 + MySQL
- NextAuth Credentials provider,JWT session
- Zustand 客户端 UI 状态
- npm scripts 作为本地验证入口
npm install
cp .env.example .env
npm run docker:up编辑 .env:
DATABASE_URL="mysql://pairui:[email protected]:3306/pairui_oa"
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="$(openssl rand -base64 32)"创建数据库后执行迁移与 seed:
npm run db:migrate -- --name init
npm run db:seed
npm run dev默认访问 http://localhost:3000。未登录会跳转 /login。
更完整的 Docker、验证脚本、CI 建议和 375px 移动端 QA 清单见 docs/QA-DevOps验收准备-CMP-1291.md。MVP 三账号演示流程验收记录见 docs/QA-MVP演示流程-CMP-1297.md。
seed 会创建安徽省派睿建设工程有限公司、演示部门和三类角色演示账号。默认密码均为 Passw0rd!。
| 角色 | 姓名 | 手机号 | 邮箱 | 密码 |
|---|---|---|---|---|
| 超级管理员 | 陈总 | 13800000001 |
[email protected] |
Passw0rd! |
| 部门管理员 | 王经理 | 13800000002 |
[email protected] |
Passw0rd! |
| 普通员工 | 李明 | 13800000003 |
[email protected] |
Passw0rd! |
当前登录方式为手机号/邮箱 + 密码,不包含短信验证码。
组织与认证基础使用 Company、Department、User.role 作为 MVP 最小模型。src/lib/permissions.ts 将 SUPER_ADMIN、DEPT_ADMIN、EMPLOYEE 映射为权限清单,并提供部门范围 helper:
- 超级管理员:公司级范围。
- 部门管理员:本部门及下级部门范围。
- 普通员工:个人范围,审批操作仍以运行态待办归属校验为准。
GET /api/me 返回当前用户、公司、部门、角色、权限、部门范围、未读通知数和待审批数,可作为后续审批、考勤、管理后台 API 的会话上下文入口。
当前 schema 覆盖 MVP P0 核心域:
CompanyDepartmentUserApprovalTemplateApprovalApprovalStepApprovalTaskApprovalCcApprovalActionLogAttendanceGroupAttendanceLocationAttendanceGroupMemberAttendanceRecordAttendancePunchNotificationAttachmentAuditLog
seed 会创建安徽省派睿建设工程有限公司演示公司、部门、三类演示账号、六种审批模板、默认考勤组、演示审批记录和通知。登录不同账号后,审批的「待我审批 / 我发起的 / 抄送我的」会展示不同数据。
seed 命令配置在 prisma.config.ts。
常用命令:
npm run prisma:validate
npm run prisma:generate
npm run db:migrate -- --name <migration_name>
npm run db:seed
node scripts/verify-seed.mjs本仓库已包含 components.json、Tailwind CSS variables,以及 Button、Input、Label、Card、Badge 等基础组件。后续需要更多组件时使用:
npx shadcn@latest add tabs sheet dialog form select textarea avatar separator skeleton最小验证命令:
npm run verify完整本地验证(会启动 Docker MySQL、执行迁移、seed 并校验演示数据):
npm run verify:db如果本机尚未配置 MySQL,只能完成依赖安装、类型检查、lint、测试与 schema 校验;db:migrate、db:seed 和 verify-seed 需要可连接的 DATABASE_URL。npm run verify 会为 prisma:validate 提供默认本地 DATABASE_URL,不要求先创建 .env。