Cathay-Chen/next-oa

给朋友vibe coding的简易oa系统

★ 0Forks 0TypeScriptGitHub ↗Compare

README

派睿OA工程基础

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 的会话上下文入口。

Prisma

当前 schema 覆盖 MVP P0 核心域:

  • Company
  • Department
  • User
  • ApprovalTemplate
  • Approval
  • ApprovalStep
  • ApprovalTask
  • ApprovalCc
  • ApprovalActionLog
  • AttendanceGroup
  • AttendanceLocation
  • AttendanceGroupMember
  • AttendanceRecord
  • AttendancePunch
  • Notification
  • Attachment
  • AuditLog

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

shadcn/ui

本仓库已包含 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。

Contributors

Cathay-Chen

Issues