立项背景和目标:学校心理健康干预长期依赖教师凭经验逐份看量表分数,测评、预警、干预、回访四个环节彼此割裂,高危学生容易漏网。光屿面向学校场景,打通学生端、教师端、管理端三类角色,把"测评→预警→干预→跟踪"做成闭环,并引入 AI Agent 辅助研判与解读,目标是让教师每天上班就能掌握全校心理动态。 2. 软件功能与核心模块:学生端提供心理测评(PHQ-9/GAD-7/PSS-10 等量表)、心理科普、咨询预约、话题社区与"星光夜话"陪伴对话;教师/管理端提供量表发布、测评任务分发、班级完成率统计、高危预警中心、线上咨询聊天窗、新生 Excel 批量导入、KPI 总览工作台;AI 层实现预警研判与测评解读两个业务 Agent,统一经 LLM 网关调用,带重试、隐私脱敏、全链路审计与影子模式。 3. 业务流程与功能路径:教师发布量表→下发测评任务→学生作答→评分引擎判级并触发预警信号(规则"就高不就低"+AI 研判双通道,只升不降)→教师在学生档案中查看 AI 研判卡,采纳/驳回并留痕→发起咨询预约→按 T+1/3/7/14/30 节奏回访,全程写入审计日志可追溯。
整体架构与设计思路:前后端分离,前端 Vue 3 + TypeScript + Vite + Pinia,后端 NestJS + TypeScript,数据库 PostgreSQL + Prisma 7,鉴权采用 JWT cookie + RBAC 三角色(admin/counselor/student),名单导入用 exceljs。核心设计决策是后端裁决 nextActions 驱动前端按钮,前端不自行推导业务状态,从根上避免多端状态不一致。 2. 我负责的模块与结果(量化):① 搭建 LLM 统一网关:环境驱动多 Provider、指数退避重试、学号/手机/身份证自动脱敏、每次调用入审计表,实测结构化短输出延迟仅 372ms,验证了 AI 解读"教师端专属、学生端零 LLM"的可行性;② 落地预警研判 Agent 全链路:信号表→规则预筛+AI 研判→草稿报告→教师人工采纳/驳回(唯一流转点)→每日 07:00 增量 cron→教师端 AI 研判卡 UI,共 6 个提交;③ 学生六维画像:PSS-10 真实换算出分、"无数据即弃权不估算"闸门、综合评分按有效维度计算,杜绝占位伪分。全量质量:后端 jest 342 用例、前端 vitest 57 用例、vue-tsc 0 错误,四件套全绿。 3. 难点与解决方案:① P0 越权漏洞(counselor 可跨分管班级操作)——统一 resolveScope/resolveWriteTarget 权限裁决,写操作逐一校验;② Prisma 7 配合 tsx 直跑时 NestJS 装饰器元数据缺失导致 DI 失败——每个 Service/Controller 构造器显式 @Inject;③ 管理端 v4 设计令牌带 --a- 前缀且作用域受限,Teleport 到 body 的弹窗组件取不到令牌、卡片全透明——组件内建令牌映射层修复,并用 DevTools computed 值验证;④ LLM 输出不稳定——chatJson 校验失败即弃权走规则兜底,老师永远有报告可看。