Commit Graph
54 Commits
Author SHA1 Message Date
chenxing 175dacc9ad 学校应用开通硬闸门:UserHome 贯通 schId 到 SDK getUserApp
build / build-push (push) Failing after 13s
- AppRemoteService/OpenApiAppRemoteServiceImpl 增 getUserApps(user,schoolId)、getAppById(user,appId,schoolId) 重载(原方法委托传 null)
- UserController.getUserApp 透传 schId 并删「schId 暂不参与」过时注释;getAppInfoById 同步带 schId 收窄
2026-10-12 14:23:26 +08:00
chenxing 29d32eed6e feat(小组件内置化): 候选池真源换自建 widget_catalog + 统一取数/内容/管理端四接口
build / build-push (push) Successful in 58s
- widget_catalog:comp_type=1 内容在 front 工程(库里只登记键)、=2 内容存 content,全表无 url 字段 ⇒ 小组件链路彻底不再有「html 地址」;sch_id 只留字段与 visibleToSchool 过滤钩子(v1 全校一致)
- 新接口(真实路径按 /{platform} 展开为 /api/xxx):getWidgetData?code=&params=(统一取数,未知 code 回空数据+msg 不抛 500)、getWidgetContent?code=(仅 comp_type=2 按需取正文,不塞进 getUserSettings 免每次进桌面下发全部 HTML)、GetWidgetCatalogList、SaveWidgetCatalog(content 走 JSON body)
- 管理端鉴权照抄 AppSettingController.checkAdmin(超管 type==1 或 roleId∈{2,5,7},判定标准一字未改;该方法是 private 故复制逻辑),拒绝走 BizException(ErrorCode.FORBIDDEN),按平台信封为 code=3 非 500
- getUserSettings:widgetAppList 改读自建表并增 code/compType、删 url,id/appId 同值以复用既有 widgetAppIds 存取与面板排序链路;saveUserWidget/toggleWidgetShow 未动
- 数据源按拍板走 L2 可溯源 mock(yunhai 9 工程检索课表/听评课零命中),字段逐一等于 design/widget-snapshots-old-bsch 旧接口口径,接入点以 // TODO 接入 oapi: 标注;本期无出站,故未注入 YschOpenCall(零手写签名代码)
- DDL:仓库无 migration 机制(ddl-auto=update),脚本按既有约定落 resources/sql/widget_catalog.sql,dev 自动建表、测试/生产需手工执行(INSERT IGNORE 可重复跑)
2026-10-11 08:47:54 +08:00
chenxing 47f9e3f751 feat(appearance): /oapi/appearance 出参摘除 logoText(子应用 header 定稿只出 logo 图,门户文字走 /api/schLogoText 自有链;init 侧缺失字段自动清 yh-logo-text)——出参恰三字段 {theme,avatar,logoUrl},测试对齐
build / build-push (push) Successful in 2m14s
2026-10-09 17:08:00 +08:00
chenxing 977b5c90a4 fix(壁纸): 删除选中壁纸后白板修复——删除清理按 raw+展示双形态匹配、getUserSettings 悬空引用自愈回落兜底链、管理员选定默认被删池自动跳过、池兜底改取第一张(min id,与用户口径及原注释一致)
build / build-push (push) Successful in 1m56s
2026-10-09 14:53:12 +08:00
chenxing 570b593293 feat(msgcenter): 消息读取改走 SDK msg 读方法并带当前激活身份学校口径(resolveReadSchId→/oapi/identity/current,0/异常降级 null);todo 角标沿用主学校口径不变;直批标读联动带口径(消息按学校隔离 批次3) 2026-10-09 12:23:10 +08:00
chenxing 1f352214f7 feat(壁纸): 三级默认壁纸——sch_settings.wallpaper_url 两级配置 + getUserSettings 兜底链(个人未自选:本校默认→平台默认→池内最新)(LOGO文字与主题JSON化增补)
build / build-push (push) Successful in 1m13s
2026-10-09 11:53:18 +08:00
chenxing f9282574e2 feat(appearance): 主题档存储/传输全面 JSON 化(读侧兼容旧紧凑值)+ LOGO 文字 sch_settings.logo_text 级联读写(LOGO文字与主题JSON化)
build / build-push (push) Successful in 2m1s
2026-10-09 10:35:03 +08:00
chenxing 8b3f8afd77 fix(appearance): 生效值合成统一紧凑编码——级联命中的 ThemeState JSON 转回 theme|0|1|1 形态
build / build-push (push) Successful in 53s
线上验证发现:readThemeWithFallback 返回 ThemeState JSON(schTheme 端点口径),而 oapi 契约/init
收敛只认紧凑编码——层间编码不一致会让学校/平台档被 init 当脏值跳过。合成层补 encodeThemeState
转换(读侧宽松:转换失败降 null 不抛)。
2026-10-09 00:26:40 +08:00
chenxing 0ac521f286 feat(appearance): 开放接口 GET /oapi/appearance(生效值合成)+ 级联下沉 service(oapi 代理轮)
build / build-push (push) Successful in 3m18s
- 新增 controller/oapi/OapiAppearanceController:userId 入参,出参 {theme, avatar, logoUrl} 当前用户生效值
  (个人→学校→平台级联合成,层级知识不外露);出参裸 payload,Map 禁 String
- readThemeWithFallback/readAvatarWithFallback 从 SchSettingsController 下沉 ISchSettingsService(行为等价),
  供 schTheme 读端点与 oapi 合成共享——顺带修复「appearance 无学校→平台级联」审计缺陷 C
- OpenApiAuthEnforceConfiguration:/oapi/* 强制应用签名(无签名 401,对齐 UserMsg/UserBase 同名配置)
- oapi schId 解析走本地 user_current_role(不引 identity 跨仓);超管临时切校角色场景与 /api 版有差,登记偏差
- 单测:生效值合成 3 例(个人优先不触级联/级联命中/脏值+无角色落平台层),60/60 绿
2026-10-08 23:28:40 +08:00
chenxing 54d1b848c3 feat(settings+msgcenter): S7 主题/头像读侧级联 + 消息测试修复与 appKey 收尾
- SchSettingsController:schTheme/schAvatarStyle 读侧加学校→平台(schId=0)级联(readThemeWithFallback/readAvatarWithFallback),
  回传 hitSchId 供设置中心区分「本校已配」与「回落平台」;写侧与接口签名不变
- MsgCenterProxyService:summary.todos 摘除 appKey 死字段(appKey 属后端签名标识不下发)
- MsgCenterProxyServiceTest:两例更新为 appId 口径(字典翻译/字典固定一次出站)+ 补 countByApp 富化/降级、
  appId 查无空页、todos 无 appKey 断言;34/34 绿
2026-10-08 23:08:36 +08:00
chenxing c6acd5d71a 外观偏好异步补齐A:用户外观偏好服务端真源(user_appearance 实体+Appearance 三端点)
- 新实体 user_appearance(per-user 一行,theme_state/avatar_style 紧凑编码,NULL=跟随学校默认)
- 新增 GET appearance 聚合出参 + saveMyTheme/saveMyAvatarStyle 双写端点(登录态 /api/** 链路)
- 聚合读永不抛:个人段/学校段独立降级(identity 跨仓故障→学校段 null),脏值视同未配置
- Logo 择优复用 findLogoList 口径(本校 type=1 → 系统 type=0 → null),URL 拼法对齐 getLogoList
- ThemeCodec 编解码下沉 + resolveThemeSchId/resolveSchId 下沉 SchSettingsService(行为等价重构,供共享)
- 单测:ThemeCodecTest 5 例 + AppearanceServiceTest 9 例(聚合降级/upsert 置 NULL/择优/校验从严)
2026-10-08 18:20:29 +08:00
chenxing 0e57022555 feat(msgcenter): 计数口径改总数 + 出参/筛选全面改用 appId(appKey 不再下发)
build / build-push (push) Successful in 54s
- summary 透传 sysTotal/bizTotal/approvalTotal 分类总数(含已读,UserMsg 新字段)
- 新代理端点 GET /msgCenter/countByApp([{appId, appName, total, unread}])替代 unreadCountByApp:UserMsg /oapi/msg/countByApp + 应用字典富化
- 新增应用字典(UserBase /oapi/app/list 按用户 5min TTL 缓存):appKey↔appId/name 映射,失败沿用旧值并进 30s 短路
- list 筛选参数 appKey→appId(代理翻译为 appKey 下行,字典查无返回空页);行出参 appKey 移除,替换为 appId/appName——appKey 属后端签名标识不再暴露前端
2026-10-08 16:37:15 +08:00
chenxing 18e8e978a6 feat(msgcenter): 按应用未读数代理端点 GET /msgCenter/unreadCountByApp
build / build-push (push) Successful in 1m13s
- 签名代理 UserMsg /oapi/msg/unreadCountByApp({appKey: 未读数},口径同 unreadCount 过滤删除与过期,无未读的 appKey 不出现)
- 消息中心「按应用」清单角标数据源;UserMsg 停机降级空 Map,铃铛不 500
2026-10-08 11:59:52 +08:00
chenxing b621c959cf feat(appicon): 应用图标键下发出栏(YschAppIcons 10-04 轮 P2 后端)
build / build-push (push) Successful in 13m48s
- AppIconKeyService/AppIconEntryVo(新):icon_key/icon_color 资产库键值读取
- UserController:getUserApp 返回体加图标键注入(withIconKeys)
- UserSettingsController:用户设置应用列表注入 iconKey/iconColor(未配置 null 走原 img 回退)
- UsedAppController/UsedAppServiceImpl:常用应用列表同口径注入
依据:根目录《AppIcon资产库落地-执行报告-20261004.md》P2 数据侧/管理端
2026-10-06 20:21:04 +08:00
chenxing 564403b5ca feat(avatar): 学校默认头像样式端点三件套(默认头像轮后端)
- SchSettingsController:GET schAvatarStyle(登录可读,null=未配置)/ POST saveSchAvatarStyle(校管理员)/ POST clearSchAvatarStyle
- SchSettings 实体 + sql/sch_settings_avatar_style.sql:avatar_style 列(DDL 待人工执行)
前端配套=UserHome/front e2c937f(登录写 localStorage[yh-avatar-sch-default] + 设置页 avatar pane)
2026-10-06 20:21:02 +08:00
chenxing a3aa6d917e feat(user): 本人联系方式修改端点 POST /{platform}/user/UpdateContact——登录态取 userId(防替改),YschOpenCall Tier0 直调 UserBase /oapi/user/self/contact(服务目录取址+信封异常透传,零新增配置项);业务错误 DException 冒泡原样包信封,UserBase 不可达收口友好提示;成功返回最新 BoaUser 供前端刷新 store(任务B·UserHome 侧) 2026-10-02 08:54:45 +08:00
chenxing f2166c007b ci: 重触发构建与自动部署——deployMode 已切 auto,重走建档链部署 d71901d(schTheme/主题接口上线)
build / build-push (push) Successful in 2m29s
2026-09-30 14:58:41 +08:00
chenxing d71901db35 feat(theme): 学校默认主题档三接口——schTheme 读 / saveSchThemeState 写 / clearSchTheme 清空(主题设置 S3)
build / build-push (push) Successful in 1m28s
- 契约对齐 YschTheme《主题设置与通道改动》§3.5:读已登录可开放且可空不兜底(与 getSchSettings 的 default-theme 兜底语义刻意区分);写仅学校管理员/超管(权限先例照抄 UserSettingsServiceImpl.findSchWallpaperManageList:type==1 或 OtherUtil.isAdminById(roleId));清空=置空 theme 字段(sch_settings 行还承载 logo 等配置不能删行,置空后读侧 null,效果与删行等价)
- 存储形态:theme_name 列存紧凑四段编码 theme|sideDeep01|gradOn01|sideFollow01(如 teal|0|1|1)——不拆列零 DDL;列宽未确认故不存整份 JSON;读侧只认该格式,旧档名/脏值一律视同未配置(防旧库值意外生效);写入侧四字段校验从严
- schId 解析:超管=显式参数或 0(平台默认层);其余=当前角色学校(UserCurrentRole),兜底主归属
- ISchSettingsService 新增 findBySchIdRaw(无兜底原样读,可空语义专用);既有 saveSchTheme/saveSchLogo/getSchSettings 不动(无其他调用方,影响面零)
2026-09-30 12:52:22 +08:00
chenxing 29f6c30309 feat(msgcenter): 列表筛选参数透传 + summary 聚合 UserMsg 分类计数(消息对接 2026-09-30)
- MessageCenterController.msgCenter/list:可选参数 msgType(0/1/2)/appKey/isRead(0/1)/keyword 透传代理,不传与现状一致(Header 回归无影响)
- MsgCenterProxyService.list:非空才下发 query(旧 UserMsg 收到未知参数会被忽略——UserMsg 部署前线上筛选静默失效,属预期过渡,待人工清单含 UserMsg 部署)
- MsgCenterProxyService.summary:优先调 UserMsg /oapi/msg/summary(新端点:unreadCount/sysUnread/bizUnread/approvalUnread/total/readCount 一次喂饱左栏);旧版无该端点(404/异常)自动降级 unreadCount 单查,分类字段缺省由前端兜底
- 单测:list_filtersPassedThrough(透传+空值不下发)、summary_prefersSummaryEndpoint、summary_legacyUserMsg_fallsBackToUnreadCount;既有 28 用例回归全绿(31 run 0 fail)
2026-09-30 12:37:55 +08:00
chenxing 9f10d8d4eb refactor(msgcenter): 目录键归一 flowcenter→flow-center(D1)——直批出站目标 key 与部署名对齐,私有键 flowcenter-base-url 改名 flow-center-base-url(MsgCenterProperties.flowCenterBaseUrl 同步),注释/常量/测试跟随;私有方法名 getFlowcenter 等为 Java 标识符按惯例保留
build / build-push (push) Successful in 1m40s
2026-09-28 17:22:34 +08:00
chenxing ae4bc5ecf6 feat(msgcenter): 消息跳转收口(C1/C2)——出参增 showJump 判权(authorized-codes 每请求懒加载一次、UserBase 不可达放行、无权 jumpUrl 同置 null 双保险);jump-bases 手工基址表三处退役(字段/yml/兜底分支)+ jumpApp 命中严格二选一不回落发送方 appKey,注册表基址并入尾斜杠归一 2026-09-28 16:52:51 +08:00
chenxing 847f13445d feat(msgcenter): 卡片直批——MsgApprovalProxyService 定位待办办 approve/reject(B3 §2):身份全取会话防代批、bizId=办件 id 匹配 instanceId、0/>1 匹配明确文案、业务拒绝原文透出、不可达降级不阻塞 2026-09-28 13:30:28 +08:00
chenxing 15be1ffabb feat(msgcenter): jumpUrl 基址改走应用注册表——by-code 主查/by-key 兜底取 pc_url(§3.2 归一化丢 fragment 拼 #),jump-bases 降为兜底 + 30s 不可达短路;附 findMessage 共享定位方法(供 B3 直批) 2026-09-28 13:29:17 +08:00
chenxing 7924b2d654 feat(msgcenter): jumpUrl 回落链——jumpApp 优先/bizType 回落/绝对 URL 直通(自指地址 Phase 2 接收侧)+ 本地补 flow.cc/flow.returned/svc_item 三键 2026-09-28 11:54:35 +08:00
chenxing 8492fba06b fix(msgcenter): 代理出站迁 YschOpenCall,修复目标 ctx 签名不剥导致的 UserMsg 401
build / build-push (push) Successful in 58s
160 事故:MsgCenterProxyService 走共享 IDHttp 出站,AppSignInterceptor 只剥本应用
base-path(/userbase),打 usermsg-service:10009/usermsg 时签名路径多 /usermsg 前缀,
UserMsg AppAuthFilter 剥 ctx 后验签不一致 → 401 → 列表/未读/WS 票据全部静默降级空。

修复:改 YschOpenCall 泛化直调(Tier 0),usermsg-base-url 解析为 TargetSpec
(host + /usermsg ctx),per-target 剥离后签名与服务端对齐;base-url 未配时回落
服务目录 usermsg。新增回归断言:TargetSpec.basePath==/usermsg 且调用 path 为
ctx 裸路径。测试 16/16 绿。
2026-09-20 00:48:05 +08:00
chenxing 5f5ac3db71 feat(sdk+msgcenter): 对齐 SDK 重构包名(openapi.client→base)+ 消息中心代理后端(09-16/09-19 遗漏提交)
build / build-push (push) Successful in 1m34s
- import 全面切换 com.yunhai.platform.openapi.base.*(对齐 Nexus -57 SDK)
- MsgCenter 代理三件(Properties/Controller/ProxyService)+ 测试 11/11(09-19 消息中心二期本地完成态)
- Dockerfile 已在 563edb5 去掉写死 profile;本提交补齐源码侧遗漏
2026-09-19 13:08:23 +08:00
chenxing ed8bbcdf45 ci: retrigger(SDK -57 已发 Nexus)
build / build-push (push) Failing after 1m10s
2026-09-19 13:01:07 +08:00
chenxing 563edb5232 fix(docker): 去掉 ENTRYPOINT 写死的 --spring.profiles.active 与镜像内烤配置
build / build-push (push) Failing after 10s
命令行参数以更高优先级压掉 env SPRING_PROFILES_ACTIVE=platform,prod(平台公共配置层
加载失效,160 实测 profile 只剩 prod);配置改由平台 env + /app/config/ 挂载供给。
2026-09-19 12:53:12 +08:00
chenxing 6aa55bbc44 chore: env-config 迁移后重建镜像(空提交触发 CI)
build / build-push (push) Successful in 1m43s
2026-09-09 17:50:10 +08:00
chenxing 59e8197d22 健康检查,数据埋点
build / build-push (push) Successful in 1m11s
2026-09-03 11:50:22 +08:00
chenxing ac00581417 ci
build / build-push (push) Successful in 1m22s
2026-09-02 11:32:22 +08:00
chenxing 65a17fb881 新增上传头像
build / build-push (push) Successful in 1m25s
2026-09-02 10:44:55 +08:00
chenxing 759b120f2a logo,壁纸修复,加入小应用管理,样式待调整
build / build-push (push) Successful in 2m11s
2026-08-28 14:24:46 +08:00
chenxing 567c8b7786 logo,壁纸修复
build / build-push (push) Successful in 1m36s
2026-08-28 10:28:28 +08:00
chenxing e7ca6dd846 logo,壁纸修复
build / build-push (push) Failing after 40s
2026-08-28 10:23:36 +08:00
chenxing a3a2cd0cf0 桌面修订上线
build / build-push (push) Successful in 1m35s
2026-08-27 21:46:29 +08:00
chenxing ea3d5ed121 json序列化修复
build / build-push (push) Successful in 33s
2026-08-26 19:08:01 +08:00
chenxing d9ec243926 ci
build / build-push (push) Successful in 2m10s
2026-08-26 17:37:42 +08:00
chenxing 4e6dd3e52a add application-prod.yml for docker build
build / build-push (push) Successful in 1m31s
2026-08-24 20:53:48 +08:00
chenxing 79bce1b4d2 Merge remote-tracking branch 'origin/main'
build / build-push (push) Failing after 1m13s
2026-08-24 20:47:30 +08:00
chenxing 5ab9e90a51 ci 2026-08-24 20:47:16 +08:00
admin 35e1dd2da5 ci: update build workflow [skip ci] 2026-08-24 20:46:08 +08:00
chenxing ec93c5648d icon文件404修复
build / build-push (push) Failing after 1m27s
2026-08-24 20:41:49 +08:00
chenxing f20e204800 ci
build / build-push (push) Failing after 4s
2026-08-24 20:07:14 +08:00
chenxing a6f99d02bd ci
build / build-push (push) Failing after 4s
2026-08-24 20:04:09 +08:00
chenxing 8b15dc6fdc ci
build / build-push (push) Successful in 32s
2026-08-24 19:49:53 +08:00
chenxing 5a7adb9ce3 修改上传接口
build / build-push (push) Successful in 52s
2026-08-24 18:48:21 +08:00
chenxing a7539a4cf0 更新数字基座
build / build-push (push) Successful in 1m3s
2026-08-24 09:29:31 +08:00
chenxing 4ed43dbc05 Merge remote-tracking branch 'origin/main'
build / build-push (push) Successful in 1m21s
2026-08-21 14:27:34 +08:00
chenxing 67bd105b1d 更新接口 2026-08-21 14:25:08 +08:00