AI 面试 /start 动态出题、/finish 按真实回答结构化评分(未配模型用本地 Rubric 估分);案例沉淀 /upload 改 multipart 真实语音+ASR 转写, /organize 用真实 transcript 调 chat 模型整理;seed service 重构为 AihrInterviewService/AihrCaseService;前端面试/案例/对练页与移动端、 demo-check、验收文档同步真实链路口径。
123 lines
6.7 KiB
Bash
Executable File
123 lines
6.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
FRONTEND_URL="${FRONTEND_URL:-http://127.0.0.1:5173}"
|
|
MOBILE_URL="${MOBILE_URL:-http://127.0.0.1:5174}"
|
|
|
|
cd "$ROOT_DIR"
|
|
|
|
fail() {
|
|
echo "FAIL: $*" >&2
|
|
exit 1
|
|
}
|
|
|
|
need() {
|
|
command -v "$1" >/dev/null || fail "missing command: $1"
|
|
}
|
|
|
|
contains() {
|
|
local file="$1"
|
|
local text="$2"
|
|
grep -Fq "$text" "$file" || fail "$file missing marker: $text"
|
|
}
|
|
|
|
check_url() {
|
|
local name="$1"
|
|
local url="$2"
|
|
local code
|
|
code="$(curl -sS -o /tmp/wygj-demo-check.body -w '%{http_code}' "$url")"
|
|
[[ "$code" == "200" ]] || fail "$name returned HTTP $code"
|
|
echo "OK: $name"
|
|
}
|
|
|
|
need curl
|
|
|
|
check_url "frontend" "$FRONTEND_URL/"
|
|
check_url "mobile" "$MOBILE_URL/h5/user"
|
|
|
|
tenant_payload="$(curl -fsS "$FRONTEND_URL/dev-api/auth/tenant/list")"
|
|
[[ "$tenant_payload" == *'"tenantId":"000000"'* ]] || fail "tenant list missing tenant 000000"
|
|
echo "OK: tenant list"
|
|
|
|
code_payload="$(curl -fsS "$FRONTEND_URL/dev-api/auth/code")"
|
|
[[ "$code_payload" == *'"uuid"'* ]] || fail "captcha response missing uuid"
|
|
echo "OK: captcha"
|
|
|
|
contains frontend/src/router/index.ts "/recruit/interview"
|
|
contains frontend/src/router/index.ts "/train/practice"
|
|
contains frontend/src/router/index.ts "/knowledge/cases"
|
|
contains frontend/src/router/index.ts "/knowledge/sop"
|
|
contains frontend/src/router/index.ts "/system/model"
|
|
|
|
contains mobile/src/App.vue "早上好,王敏"
|
|
contains mobile/src/App.vue "AI结构化面试"
|
|
contains mobile/src/App.vue "团队今日概况"
|
|
contains mobile/src/App.vue "sendSmsCode"
|
|
contains mobile/src/App.vue "/dev-api/resource/sms/code"
|
|
contains mobile/src/App.vue "/dev-api/auth/mobile/sms-login"
|
|
contains mobile/src/App.vue "fetchMobileHome"
|
|
contains mobile/src/App.vue "/dev-api/api/aihr/mobile/home/"
|
|
contains mobile/src/App.vue "startMobilePractice"
|
|
contains mobile/src/App.vue "/dev-api/api/train/practice/start"
|
|
contains mobile/src/App.vue "训练完成,主管端待复盘已更新"
|
|
contains mobile/src/App.vue "/dev-api/api/aihr/mobile/practice/history"
|
|
contains mobile/src/App.vue "competencyProfile"
|
|
contains mobile/package.json "aihr-mobile"
|
|
contains frontend/src/views/recruit/interview.vue "建议复试"
|
|
contains frontend/src/views/train/practice.vue "导师改写"
|
|
contains frontend/src/views/knowledge/cases.vue "真实语音"
|
|
contains frontend/src/views/knowledge/sop.vue "训练题已生成"
|
|
contains frontend/src/views/system/model/index.vue "调用优先级"
|
|
contains frontend/src/api/aihr/interview.ts "/api/recruit/interview/start"
|
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrInterviewController.java "/api/recruit/interview"
|
|
contains frontend/src/api/aihr/practice.ts "/api/train/practice/start"
|
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrPracticeController.java "/api/train/practice"
|
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java "mobileCompletedCount"
|
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java "aihr_practice_session"
|
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrMobileSeedService.java "待复盘对练"
|
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrMobileController.java "/practice/reviews"
|
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrMobileController.java "/practice/reviews/{id}/reviewed"
|
|
contains mobile/src/App.vue "标记已复盘"
|
|
contains frontend/src/api/aihr/case.ts "/api/knowledge/case/upload"
|
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrCaseController.java "/api/knowledge/case"
|
|
contains frontend/src/api/aihr/sop.ts "/api/knowledge/search"
|
|
contains frontend/src/api/aihr/sop.ts "/api/knowledge/doc/upload"
|
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrSopController.java "/api/knowledge"
|
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrSopController.java "/doc/upload"
|
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrSopSeedService.java "仅支持 txt/md/markdown/pdf/doc/docx/xls/xlsx/ppt/pptx 文件"
|
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrSopSeedService.java "/embeddings"
|
|
contains backend/script/sql/aihr_knowledge_mysql8.sql "embedding_json"
|
|
contains frontend/src/views/knowledge/sop.vue "上传文档"
|
|
contains frontend/src/views/knowledge/sop.vue ".pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx"
|
|
contains docs/RUOYI_AI_INCREMENTAL_MIGRATION.md "ruoyi-ai"
|
|
contains docs/RUOYI_AI_INCREMENTAL_MIGRATION.md "POST /api/knowledge/doc/upload"
|
|
contains backend/script/sql/aihr_knowledge_mysql8.sql "aihr_knowledge_fragment"
|
|
contains backend/script/sql/aihr_model_mysql8.sql "aihr_model_config"
|
|
contains backend/script/sql/aihr_practice_mysql8.sql "aihr_practice_session"
|
|
contains backend/script/sql/aihr_practice_mysql8.sql "dialogue_json"
|
|
contains backend/script/sql/aihr_model_mysql8.sql "api_key"
|
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrModelController.java "/api/aihr/model"
|
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrModelController.java "/providers/{providerCode}"
|
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrModelController.java "/configs/{id}/enabled"
|
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrModelSeedService.java "aihr_model_provider"
|
|
contains frontend/src/api/aihr/model.ts "/api/aihr/model/providers"
|
|
contains frontend/src/api/aihr/model.ts "/api/aihr/model/configs"
|
|
contains frontend/src/views/system/model/index.vue "submitProvider"
|
|
contains frontend/src/views/system/model/index.vue "submitModel"
|
|
contains backend/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java "/mobile/sms-login"
|
|
contains backend/ruoyi-admin/src/main/java/org/dromara/web/controller/CaptchaController.java "aihr.sms.login-template-id"
|
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrMobileController.java "/api/aihr/mobile"
|
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrMobileSeedService.java "candidateHome"
|
|
|
|
echo "OK: demo routes and real-flow markers"
|
|
echo "OK: AI interview API markers"
|
|
echo "OK: AI practice API markers"
|
|
echo "OK: AI case API markers"
|
|
echo "OK: AI SOP API markers"
|
|
echo "OK: ruoyi-ai incremental migration markers"
|
|
echo "OK: AI model migration markers"
|
|
echo "OK: AI model config page markers"
|
|
echo "OK: AI mobile role home markers"
|
|
echo "PASS: demo preflight"
|