forked from wangziqi/gongxue-base
feat: add AI school recommendation foundation
This commit is contained in:
@@ -2055,7 +2055,9 @@ ACTIVATION_CODE_REGION_MISMATCH
|
||||
- 手册目录和阅读。
|
||||
9. `pages/scoreline/index`
|
||||
- 动态字段筛选和趋势。
|
||||
10. `pages/profile/index`
|
||||
10. `pages/ai-school/index`
|
||||
- SVIP AI 择校推荐、报告历史和 JSON 报告渲染。
|
||||
11. `pages/profile/index`
|
||||
- 会员、订单、激活码、学习数据、勋章。
|
||||
|
||||
## 当前 Taro 实现进度
|
||||
@@ -2076,6 +2078,7 @@ pages/student/order-detail/index
|
||||
pages/student/vocabulary/index
|
||||
pages/student/handbook/index
|
||||
pages/student/scoreline/index
|
||||
pages/student/ai-school/index
|
||||
pages/student/assets/index
|
||||
pages/student/profile/index
|
||||
```
|
||||
@@ -2088,6 +2091,7 @@ src/services/learning.ts 练习 session、答题、收藏、错题/收藏复
|
||||
src/services/commerce.ts 套餐、优惠券、下单、支付参数、订单详情、权益、激活码
|
||||
src/services/profile.ts 个人中心、地区目标、签到、反馈、勋章、倒计时
|
||||
src/services/video.ts 题目视频列表、播放签名
|
||||
src/services/ai.ts AI 择校推荐生成、报告列表、报告详情
|
||||
src/services/tenantAdmin.ts 租户后台看板、权限矩阵、成员、学生创建/批量导入/分班/备注/跟进、内容、营销、设置、角色模板写操作、公共题库采纳/同步/单条和批量冲突处理、导入详情/复检、CRM 配置/队列、分佣规则/成员比例/订单/结算
|
||||
src/services/platformAdmin.ts 平台后台租户、套餐账单、用量、公共题库授权
|
||||
```
|
||||
@@ -2110,6 +2114,87 @@ npm run build:taro:h5:platform
|
||||
- 平台后台:租户创建、状态变更、订阅开通、账单生成、人工收款确认、用量录入、公共题库授权编辑已接第一版;继续补租户详情/编辑、平台审计、自动计费和批量账单操作。
|
||||
- 小程序:验证 `Taro.login`、微信支付、分享 scene/referral、Supabase client 兼容性;如不稳定,保留 `apps/api/auth/*` 作为小程序登录适配层。
|
||||
|
||||
## AI 择校推荐接入
|
||||
|
||||
AI 择校推荐是学生端 SVIP 功能,前端只调用 `apps/api`,不要在 H5/小程序内保存任何 AI provider key、prompt secret 或服务端模型配置。当前后端默认使用 deterministic `local_rules` provider,基于学生目标地区和 `scoreline_records` 生成稳定 JSON 报告;后续真实 AI provider 仍保持同一接口和 JSON schema。
|
||||
|
||||
生成报告:
|
||||
|
||||
```http
|
||||
POST /api/ai/school-recommendations/generate
|
||||
```
|
||||
|
||||
请求体:
|
||||
|
||||
```json
|
||||
{
|
||||
"regionId": "<regionId>",
|
||||
"estimatedScore": 210,
|
||||
"riskPreference": "balanced",
|
||||
"constraints": "优先考虑计算机相关专业",
|
||||
"recommendationLimit": 5
|
||||
}
|
||||
```
|
||||
|
||||
`riskPreference` 支持 `safe`、`balanced`、`sprint`。`regionId` 不传时后端会使用 `/api/profile/me` 中学生档案的目标地区。后端会校验该地区属于当前租户,并要求当前学生有有效 SVIP;无权限时返回 `AI_SVIP_REQUIRED`。
|
||||
|
||||
响应核心结构:
|
||||
|
||||
```json
|
||||
{
|
||||
"item": {
|
||||
"id": "<reportId>",
|
||||
"status": "generated",
|
||||
"provider": "local_rules",
|
||||
"model": "local-scoreline-rules-v1",
|
||||
"promptVersion": "school-recommendation-v1",
|
||||
"resultPayload": {
|
||||
"schemaVersion": "school-recommendation-report-v1",
|
||||
"summary": "基于当前地区历年分数线...",
|
||||
"riskLevel": "balanced",
|
||||
"recommendedSchools": [
|
||||
{
|
||||
"schoolId": "<schoolId>",
|
||||
"schoolName": "烟测学院",
|
||||
"majorId": "<majorId>",
|
||||
"majorName": "计算机科学与技术",
|
||||
"latestYear": 2026,
|
||||
"latestScore": 188,
|
||||
"scoreGap": 22,
|
||||
"riskLevel": "safe",
|
||||
"confidence": 0.9,
|
||||
"reason": "预估分与最新参考线差值约 22 分...",
|
||||
"scorelineTrend": {
|
||||
"years": [2026],
|
||||
"scores": [188],
|
||||
"direction": "unknown"
|
||||
},
|
||||
"tags": ["稳妥", "趋势不足", "样本较少"]
|
||||
}
|
||||
],
|
||||
"actionPlan": [],
|
||||
"disclaimers": [],
|
||||
"dataCoverage": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
报告历史:
|
||||
|
||||
```http
|
||||
GET /api/ai/school-recommendations?regionId=<regionId>&limit=20
|
||||
GET /api/ai/school-recommendations/detail?reportId=<reportId>
|
||||
```
|
||||
|
||||
前端渲染建议:
|
||||
|
||||
- `resultPayload.schemaVersion` 必须等于 `school-recommendation-report-v1`,未知版本先降级为只展示 summary 和原始 JSON。
|
||||
- `recommendedSchools` 是服务端已排序结果,前端不要重新按分数线做业务排序。
|
||||
- `disclaimers` 必须展示在报告底部或导出 PDF 中。
|
||||
- 报告详情只能展示当前登录学生自己的报告,遇到 `AI_REPORT_NOT_FOUND` 按“报告不存在或无权访问”处理。
|
||||
- 当前 Taro 基础页在 `pages/student/ai-school/index`,service 在 `src/services/ai.ts`。
|
||||
|
||||
## 租户后台前端建议
|
||||
|
||||
租户后台可以先做 H5 管理台,也可以后续使用 Taro H5 复用部分组件。优先页面:
|
||||
|
||||
Reference in New Issue
Block a user