Files
chenxing 9e28092a8b
build / build-push (push) Successful in 2m26s
feat(svcitem): 事项库+办事大厅 R2 后端落地,并完成交付后独立审计修复
落地(依据《事项库与办事大厅详细设计 v1》)
- 事项域垂直包 com.yunhai.cms.svcitem.*(entity/enums/repository/service+impl/event/config/model dto+query+vo)
  与 controller/{api,oapi}/svcitem;两表 DDL 进 cms_init.sql(表 7/8)+ upgrade_svcitem_r2.sql
- SvcItemQuery 接缝:门户 8 方法 + 管理端 11 方法统一收口,控制器不再注入实现类
- 门户公开层:doServiceList/doGuide 双路由变体 + M0 可选模板整页回退
  (视图名/themeBase/buildUrl/资产主题段四处同源 effectiveTheme,缺模板整包退 default)
- oapi 跨服务快照:与平台 AppAuthFilter 同口径签名(canonical=method\npath?sortedQuery\ntimestamp,
  HmacSHA256/Base64, 5min 窗口)+ /oapi/* 强制验签过滤器
- default 皮肤 service.html/guide.html + main.css 服务中心/指南页样式段

审计修复(发现与处置全表见 docs/18-事项库审计与修复记录.md)
- D1 附件引用链:内容资产(封面+正文内嵌图)独立场景 svc_item_asset,保存时按内容派生全量同步归属
  (AttachmentService.localAssetUrls/localWebUrl/syncAssets:集合内标记、集合外解除)。
  修复根因:upload 带 scene 时只写 ref_type 不写 ref_id,而保存仅按前端提交 id 重绑,
  正文图与封面停在半绑定态 → 既不在孤儿口径内也不受 release 管辖,成永久无主行
- D5 归属校验:绑定前做可认领判定(无引用/半绑定/已属本事项方可绑),他事项引用与跨站附件跳过并告警
- D2 部门:组类型改配置 cms.svc.item.dept-group-type(默认 2=学校组,校内科室改 3);
  deptTree 返回嵌套组树;新增 SvcDeptSource 接缝使静态 getGroupTree 可替身(此前部门链零覆盖)
- D4 缓存:事件 scope 语义化,dict/dept 变更整体失效 cms:svcItem(展示名快照不再滞后 5min)
- 站点解析:findByCode 在 uk(parent_site_id,code) 下命中多条会抛异常变 500,
  4 处生产调用点改 findFirstByCodeOrderByIdAsc(确定性取最早站点)
- 加固:新增 idx_svc_item_portal(含 DESC 列)对症门户排序 filesort;升级脚本改 information_schema
  +PREPARE 幂等索引守卫块(表在缺索引可重跑修复);clear_cms_data.sql 补事项两表;
  view_count 改有界队列+拒绝丢弃告警;SEL_LIST_MAX 截断告警

测试
- 新增 SvcDeptChainIT 7、SvcItemServiceIT 16(含 D1/D5 回归锚点与全方法权限)、
  SvcItemOapiIT 9(时间戳超窗/未知 appKey/畸形头/siteCode 歧义)、SvcItemPortalIT 11
  (嵌套指南路由/关键词/canonical/浏览量异步)、SvcDictServiceIT 8(改名后缓存即时刷新)
- ThemeContractIT 补"缺可选模板主题资产段必退 default"断言并订正七路由表述
- 全量 mvn -o test:388 测试 0 失败;升级脚本 bsch_cms_test 两跑幂等(含缺索引自动补建)
2026-09-11 14:12:04 +08:00

46 lines
2.4 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ============================================================
-- bsch_cms 全量清库脚本(清测试数据,全流程重走)
-- 目标库:jdbc:mysql://localhost:3306/bsch_cms(root)
-- 范围:cms_* 八表全空(站点/栏目/文章/轮播/友链/附件/事项/事项字典),AUTO_INCREMENT 归位
-- 不动的东西:
-- * 平台侧账号(cmssuper/cmsschool 等在 userbase 平台库,不在本库)
-- * 主题包(${user.dir}/data/themes,含 .meta 覆盖层;要重置主题请手工清该目录)
-- * 上传的物理文件(D:/bsch/cms/upload/,见文件尾可选清理说明)
-- 表结构由 Hibernate ddl-auto=update 维护,本脚本只清数据不删表。
-- 重灌演示数据:执行同目录 cms_seed_local.sql(其前置即"各表为空",本脚本正好满足)。
-- ============================================================
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE cms_attachment;
TRUNCATE TABLE cms_banner;
TRUNCATE TABLE cms_link;
TRUNCATE TABLE cms_article;
TRUNCATE TABLE cms_category;
TRUNCATE TABLE cms_service_item;
TRUNCATE TABLE cms_service_dict;
TRUNCATE TABLE cms_site;
SET FOREIGN_KEY_CHECKS = 1;
-- 验证:八表应全为 0
SELECT 'cms_site' AS tbl, COUNT(*) AS remain FROM cms_site
UNION ALL SELECT 'cms_category', COUNT(*) FROM cms_category
UNION ALL SELECT 'cms_article', COUNT(*) FROM cms_article
UNION ALL SELECT 'cms_banner', COUNT(*) FROM cms_banner
UNION ALL SELECT 'cms_link', COUNT(*) FROM cms_link
UNION ALL SELECT 'cms_attachment', COUNT(*) FROM cms_attachment
UNION ALL SELECT 'cms_service_item', COUNT(*) FROM cms_service_item
UNION ALL SELECT 'cms_service_dict', COUNT(*) FROM cms_service_dict;
-- ------------------------------------------------------------
-- 可选(不在 SQL 内):清掉测试期上传的物理文件,只留种子静态资产。
-- 保留:D:/bsch/cms/upload/seed/ (cms_seed_local.sql 的配图依赖它)
-- 删除:seed/ 之外的目录与散文件(测试期真实上传的图片/PDF 均为孤儿)
-- Git Bash 下参考:
-- find /d/bsch/cms/upload -mindepth 1 -maxdepth 1 ! -name seed -exec rm -rf {} +
-- 主题包如需一并重置(连派生皮肤一起清掉,回到内置包):
-- rm -rf <服务运行目录>/data/themes (重启服务后仅剩 classpath 内置包)
-- ------------------------------------------------------------