高考后专业兴趣探索 H5 —— 18 道大学场景题,基于 RIASEC 职业兴趣模型生成「未来专业人格卡」,
推荐优先探索的专业大类与职业出口。实现自 PRD v1.1(gaokao_future_major_personality_prd_v1_1.md)。
Vite + React 18 + TypeScript。全屏移动端 H5,单一「科技蓝」主题。
npm install
npm run dev # 本地开发 http://localhost:5173
npm run build # 类型检查 + 生产构建
npm run preview # 预览生产构建
npm run test # 单元测试(vitest)run.sh 封装了开发服务器的启停:
./run.sh start # 启动(已在运行则不重复启动)
./run.sh stop # 停止所有本项目的服务实例(含历史遗留的多个进程)
./run.sh restart # 重启
./run.sh status # 查看运行状态stop 会同时按 PID 文件和工作目录扫描,能把之前多次启动遗留的所有实例一并清理干净。
生产环境不要使用 Vite dev server。推荐让 Nginx 直接托管 dist/,并通过多进程 submit-api 接收提交日志;所有 API 进程再写入单独的 log-writer 进程,统一落盘到 /root/work/data/logs。
./run.sh prod-deploy # npm run build → 启动日志进程/API 多进程 → 安装 Nginx 配置 → reload Nginx
./run.sh prod-status # 查看 log-writer 和 submit-api 状态
./run.sh prod-restart # 重启生产日志链路
./run.sh prod-bench-log # 压测提交日志接口常用环境变量:
API_PROCESSES=8 API_PORT_START=3101 ./run.sh prod-deploy
LOG_DIR=/tmp/whichprofession-logs INSTALL_NGINX=0 RELOAD_NGINX=0 ./run.sh prod-restart
BENCH_DURATION=10 BENCH_CONCURRENCY=500 ./run.sh prod-bench-log
SUBMIT_LOG_STRICT_VALIDATE=1 ./run.sh prod-restart # 开启提交日志深度 JSON 校验,吞吐会下降日志文件为 JSONL,当前日期文件在 LOG_DIR,历史文件归档到 LOG_DIR/history,单文件超过 100MiB 自动切分。
首页 → 题前说明 → 18 题双选答题 → 生成动画 → 人格卡结果 → 完整专业报告 → 16 张图鉴 → 分享海报
src/data/quiz.ts— 18 题 / 16 人格卡 / 99 专业大类 / RIASEC 元数据src/lib/score.ts— 双层打分算法(PRD §8,含三处对齐修订);算法详解见docs/algorithm.mdsrc/components/— 手绘 SVG 图元 + 共享原子组件src/screens/— 8 屏页面src/App.tsx— 屏幕状态机design-reference/— Claude Design 导出的原始设计稿存档
npm run test 运行单元测试(vitest + Testing Library),覆盖:
- 数据层(
data/quiz.test.ts)—— 18 题 / 16 人格 / 99 大类的结构与引用完整性、合规词检查 - 打分算法(
lib/score.test.ts)—— PRD §8 主干 + 三处修订 + 边缘场景(空/部分作答、规范序、确定性) - 屏幕状态机(
App.test.tsx)—— 双选答题、取消、自动进题、上一题、答满 18 题 - 8 屏组件(
screens/screens.test.tsx)—— 渲染冒烟与导航交互 - 基础组件(
components/components.test.tsx)—— atoms 与 doodles
无 MBTI 字样;含免责声明;文案统一用「优先探索 / 当前吸引力较低」,不出现「最适合 / 不适合 / 命定」(PRD §13)。