# question-center 问卷后端(ysch-question-service) 问卷应用 R1「先行跑通」后端:Spring Boot 2.7.18,包名 `com.yunhai.question`,端口 8090,库 `ysch_question`。链路:**新建问卷(自动挂接 FC 表单)→ iframe 内用 FC 设计器编辑 → 发布投放(链接+二维码)→ FC 填写页提交 → 投影拉取 → 回收明细与基础统计**。表单定义/版本/校验/答卷权威全在 form-center(FC),本服务零改动 FC;提交入口永远在 FC 填写页 `#/f/{code}`(不建第二提交入口)。 配套前端:`ysch-question-front`(Vue3+TS+Vite5,端口 8091)。 ``` ├── sql/question_r1.sql 建表脚本(questionnaire / pull_cursor / answer_projection) └── src/ 主代码 + 无外部依赖单测(H2+mock,23 例:投影幂等/游标推进/人数口径/绑定 uk) ``` ## 前置依赖(联调) | 依赖 | 地址 | 说明 | |---|---|---| | form-center 后端/前端 | localhost:8086 / 8089 | /oapi 三端点 + 设计器 iframe / 填写页 `#/f/{code}` | | MySQL | localhost:3306 | 建库 `ysch_question`(执行 `sql/question_r1.sql`;开发期 ddl-auto=update 可自动建表) | | Redis | localhost:6379 | 平台 starter 密钥链(trust-registry) | | CAS/UserBase | localhost:8443 / 8060 | 登录与模块下发(local-debug 形态,同 flow-center) | | appKey | UserBase | **question-center appKey=100020 已注册(2026-10-22)**;FC 验签走 trust-registry 密钥链,FC 本地 trusted-apps 仅停摆兜底、可不配 | | AppRegistry | FC 管理页 | 校管理员在 FC 管理面登记 `question` 应用(appCode 恒 `question`,不写代码注册) | ## 启动(本地 dev) ```bash # 1) MySQL 建库 mysql -uroot -p123456 < sql/question_r1.sql # 2) 启动(:8090) mvn -o spring-boot:run # 健康探针:登录态 curl http://localhost:8090/api/question/ping → 200 {pong,user,shcId};未登录 → 302 CAS ``` ## 关键配置(src/main/resources/application.yml) - `yh.app-auth.app-key: 100020`(UserBase 已注册;FC 侧经 trust-registry 密钥链验签,secret 两端须一致) - `yh.open.services.form-center: http://localhost:8086`(FormCenterClient 唯一出站点) - `question.projection.fixed-delay-ms: 30000` ## 测试 ```bash mvn -o test # 23 例单测(H2/mock,无外部依赖) ``` ## 红线(沿任务书 §7) 不迁旧数据;不做家长问卷;不跨校;不建第二答卷提交入口;不改 form-center/flow-center/svc-hall/Notice/UserBase/BasePlatform;不 import FC 在途未提交类(FormConsumerAccessService/AnswerDelivery*/SubmissionContext* 等);OAPI 只用已提交的 schema/answer/answers 三端点;`appCode` 恒为 `question`(2026-10-22 改定;FC AppRegistry 按此登记)。