101 lines
3.6 KiB
Markdown
101 lines
3.6 KiB
Markdown
# role-user
|
||
|
||
员工端 C 端工作台,基于 `access-manage` 后端和 `role-admin` 管理后台建设。
|
||
|
||
当前已搭建 React + Next.js App Router + TypeScript 前端骨架,采用移动优先、PWA 友好的工作台形态。
|
||
|
||
## 启动
|
||
|
||
```bash
|
||
pnpm install
|
||
cp .env.example .env.local
|
||
pnpm dev
|
||
```
|
||
|
||
默认访问:
|
||
|
||
- 登录页:http://localhost:3210/login
|
||
- 工作台:http://localhost:3210/dashboard
|
||
- 任务:http://localhost:3210/tasks
|
||
- 排班:http://localhost:3210/schedule
|
||
- 公告:http://localhost:3210/announcements
|
||
- 门店:http://localhost:3210/store
|
||
- 我的:http://localhost:3210/me
|
||
|
||
## 环境变量
|
||
|
||
```bash
|
||
ACCESS_MANAGE_API_BASE_URL=http://localhost:3500/api
|
||
ROLE_USER_SESSION_COOKIE=role_user_session
|
||
```
|
||
|
||
`ACCESS_MANAGE_API_BASE_URL` 指向 `access-manage` 服务端 API 根路径。员工登录会调用后端 `POST /api/auth/employee/login`,登录成功后只把 JWT 写入 Next.js 服务端 HttpOnly Cookie,不写入 `localStorage`。
|
||
|
||
## 可用命令
|
||
|
||
```bash
|
||
pnpm dev
|
||
pnpm typecheck
|
||
pnpm lint
|
||
pnpm build
|
||
```
|
||
|
||
## 当前实现范围
|
||
|
||
- Next.js App Router 项目结构、TypeScript、ESLint、`@/*` 路径别名和基础样式。
|
||
- BFF Route Handlers:
|
||
- `POST /api/auth/login`
|
||
- `POST|GET /api/auth/logout`
|
||
- `GET /api/auth/me`
|
||
- `PATCH /api/auth/me/password`
|
||
- `GET /api/permissions/me`
|
||
- `GET /api/mobile/tasks`
|
||
- `GET /api/mobile/tasks/:id`
|
||
- `POST /api/mobile/tasks/:id/start`
|
||
- `POST /api/mobile/tasks/:id/complete`
|
||
- `POST /api/mobile/tasks/:id/comment`
|
||
- `GET /api/mobile/announcements`
|
||
- `GET /api/mobile/announcements/:id`
|
||
- `POST /api/mobile/announcements/:id/read`
|
||
- `GET /api/mobile/shifts`
|
||
- `GET /api/mobile/shifts/today`
|
||
- `GET /api/mobile/store`
|
||
- `GET /api/mobile/store/employees`
|
||
- 页面:
|
||
- `/login`
|
||
- `/dashboard`
|
||
- `/tasks`
|
||
- `/tasks/:id`
|
||
- `/schedule`
|
||
- `/announcements`
|
||
- `/announcements/:id`
|
||
- `/store`
|
||
- `/me`
|
||
- 首页已消费正式 `mobile/bootstrap` 的 `latestAnnouncements`、`tasks`、`overdueTaskCount`、`todayShift/todayShifts`。
|
||
- `/announcements` 支持全部、未读、已读筛选;公告详情进入后通过 BFF 标记已读。
|
||
- `/tasks` 支持全部、待处理、处理中、已完成筛选;任务详情支持开始、完成和追加备注。
|
||
- `/schedule` 支持今日、未来、全部排班筛选。
|
||
- `/me` 已接入本人修改密码表单,前端不持久化密码或 token。
|
||
- `/dashboard`、`/tasks`、`/announcements`、`/schedule` 会在后端临时不可用或 5xx 时保持基础资料和业务空态。
|
||
- `/store` 会尝试读取当前门店详情和本店员工列表;后端权限或接口不可用时保持门店基础信息和空态。
|
||
- 移动端底部导航、加载态、空态、会话缺失跳登录、401 清理 Cookie 的服务端路径。
|
||
- PWA manifest、应用图标、基础 service worker、安全响应头和参照 SeaCloud 的移动端工作台视觉系统。
|
||
|
||
## 文档
|
||
|
||
- `docs/C_EMPLOYEE_APP_REQUIREMENTS.md`: C 端员工工作台需求文档。
|
||
- `docs/FULLSTACK_BACKEND_GAP_ANALYSIS.md`: C 端员工工作台三端缺口与改动范围分析。
|
||
- `RTK.md`: 本项目 Codex/Agent 协作规则。
|
||
|
||
## 关联项目
|
||
|
||
- `/Users/mac033/Desktop/my-project/access-manage`: 服务端 API。
|
||
- `/Users/mac033/Desktop/my-project/role-admin`: 管理后台。
|
||
|
||
## 安全边界
|
||
|
||
- 不展示任何明文密码。
|
||
- 不把密码、JWT 或权限 token 持久化到前端存储。
|
||
- 员工端修改密码已通过 BFF 接入后端 `PATCH /api/auth/me/password`。
|
||
- 公告、任务、排班已按正式后端接口接入列表、筛选、详情和员工端操作;后端临时不可用时页面保留业务空态。
|