Commit Graph
37 Commits
Author SHA1 Message Date
chenxing 3a0f1e0cc9 [CMS-VISUAL] F6: 站点设置「扩展参数」分区退役(7→6 分区),未知配置键改静默保留不丢失(vitest 164 绿) 2026-09-28 12:33:23 +08:00
chenxing 649a08629b [CMS-VISUAL] F3: 栏目管理移除「首页展示形态」下拉,形态统一归首页布局编辑器配置 2026-09-28 12:32:58 +08:00
chenxing 31cbec152a feat(category): S9 内容管理 IA 切分——栏目页降级为内容概览 + 首页形态误导文案修正
build / build (push) Successful in 2m20s
- 新建 components/category/CategoryContentSummary.vue(194):列表型栏目右侧不再挂文章表格,
  改「共 N 篇 + 最近 5 行 + 查看全部」概览;计数口径=直属+子孙(与门户 collectListDescendantIds
  同语义)、全状态计入,一次 page 请求同时拿 total 与 5 行(零新接口、零后端改动)
- CategoryManage.vue 列表分支换组件 + 头注更新;编辑弹窗「首页展示形态」提示改为
  「展示形态由当前皮肤包的主题化实现决定,未实现的形态回落通用骨架渲染」(v2 §七 验收第 8 条点名项)
- ArticleListPanel.vue +7:setup 读 route.query.categoryId 作为初始筛选(深链回显)
- types/cms.ts 1 行:ArticlePageQuery.categoryIds 放宽为 number|string(逗号串),手册未点名、已在
  audit-D §六 披露为偏差
- categoryWorkbench.spec.ts 15→17 例:T-D-01 按裁决改写旧断言(概览而非表格,并机器证明无操作列)、
  T-D-02 深链回显、T-D-03 查看全部跳转;夹具上提 + beforeEach 复位,默认值与旧硬编码行为逐字一致
- 未动 router/routes.ts 的 meta.subOf(护栏 siteRouter.spec 8 / siteLayer.spec 16 绿)
- 遗留立案:R-43 fixedCategory/extraHeight 无生产调用方(按纪律未删)/ R-44 概览含子孙而深链只筛直属
  需产品定口径 / R-45 菜单名来自平台模块表 / R-46 ?categoryId 仅读一次
- 前端 166/166 绿 + build:base exit=0;S10 复跑同绿
2026-09-22 21:55:23 +08:00
chenxing 5d048abdae feat(site-layer): S8 站点上下文卡 + 子站身份染色(方案 A,零后端改动)
- 新建 components/SiteContextCard.vue(194):数据源 store.schoolSites(含 SiteVo.theme),
  展示学校›站点层级与当前站皮肤包名;切站沿用既有纯 URL 通道 adminPathOf,不新增状态机
- SchoolLayout.vue 挂载卡片到原空 .menu-top-box 槽 + 子站态身份染色(侧栏淡底 #fff7ec、
  卡区顶 3px 橙条、页头胶囊转橙);主站态不染色
- 硬约束:未动 utils/sitePath.ts 的 stripSiteSeg/withSiteSeg(剥段高亮全靠它)、未动 router/routes.ts
- siteLayer.spec.ts +4 例(纯加,SITES 夹具补 theme 字段);护栏 siteRouter.spec(8)/sitePath.spec(14)/
  menuRoute.spec(5) 原样绿
- 遗留立案:R-39 isAlone 档不可见 / R-40 门户地址未展示 / R-41 面包屑是否退役 SiteSwitcher 待裁决 /
  R-42 显示包 code 而非中文名
- 前端 164/164 绿 + build:base exit=0
2026-09-22 21:54:58 +08:00
chenxing d05272b820 feat(theme): S5 学院蓝主题改造(管理端)——homeLayout编辑器/主题参数表单/站点设置/类型 + 单测
build / build (push) Successful in 2m19s
2026-09-22 18:34:50 +08:00
chenxing abccca4397 feat(admin): 站点设置页三处体验修复 + 主题参数横排色卡 + 新皮肤 mock
build / build (push) Successful in 2m19s
用户验收反馈三处:
1. 左侧锚点导航不固定——根因 .base-wrap-main .main-container 的 legacy
   overflow:hidden 使 sticky 相对不滚动的隐藏滚动盒定位失效(实测滚动 600px
   导航 top=-387);本页运行时改写为 visible、离开还原,修复后滚动 800px
   导航稳定停在 top:72px。窄屏(≤1080)导航转横排胶囊。
2. 皮肤颜色参数竖排长蛇(真实主题 12 个色参数 = 12 行)——ThemeParamForm
   重排:color 参数转 150px 起步 auto-fill 色卡网格(宽屏一行 4~5 张,
   色卡含取色器+名称+HEX),select/image/text 转两列行式;非法值红框提示。
3. 「换肤/改参数保存后门户立即生效」提示框样式突兀且与按钮拥挤——移除
   皮肤区内联 form-hint,并入卡片 footer 的 card-hint(与基本信息卡一致)。
整页配套:分区卡 10px 圆角+柔和阴影+品牌竖条标题、锚点导航品牌指示条、
footer hint 自适应换行。
mock THEMES 补 poly-blue/agri-forest/jade-normal 三套新皮肤条目。
vitest 147/147 绿;vite build 通过。
2026-09-20 02:42:07 +08:00
chenxing e5a9506228 chore(mock): 粉/紫两包下线后 mock 主题改指 academic-navy/campus-azure
build / build (push) Successful in 2m19s
后端删除 cherry-bloom/violet-iris,改以学院蓝为基座的学府藏蓝/青蓝校园两包接管;
mock 主题清单同步换名换标题换色(cssVar 用各皮肤私有前缀 --an-*/--cz-*),
院系子站种子站点 theme 一并改指,避免管理端主题选择器出现已不存在的皮肤。
2026-09-19 20:22:09 +08:00
chenxing be19ed066a fix(walkthrough): menuRoute 识别 /sch/{code} 壳路径免回退告警;栏目弹窗按钮 type=link 改 text;mock 补 cherry-bloom/violet-iris 主题
build / build (push) Successful in 2m20s
2026-09-19 17:47:51 +08:00
chenxing f29c193ea7 feat(theme+规范): 管理端接入 yh-theme 主题层并按 bsch 应用页规范升级页面骨架
- 主题层: scripts/gen-yh-theme.mjs 生成 assets/styles/yh-theme.css(构建期静态化 color-mix),
  5 主题档×侧栏深浅×渐变×side-plain 挂 html 档位类名; main.ts 于 icons.css 后引入并 initTheme() 消首帧闪色
- utils/theme.ts(+8 用例): localStorage(yh-theme) 持久化 + <html> 档位类名幂等切换
- ThemeSwitcher.vue(+6 用例): 顶栏配色胶囊(5 色网格+3 开关), 定稿 07-seam-pure 同款皮肤
- SchoolLayout: 顶栏 logo 徽标+配色切换器挂载; 站点身份色带退役, 子站橙由 yh-theme .band-sub::before 融合
- useTableHeight 响应化(+5 用例): ResizeObserver(body) 重算修复窗口缩放冻结, 常量 56/56 档不动
- bsch 规范骨架: 操作区 fix mb-12/次按钮 fr, Table 补 link-table table-bottom-box,
  文章关键字 200px 即输即搜(300ms 防抖去 enter-button), 附件分页 customPageCount 记忆+page-box fr,
  轮播展示位移入搜索区, 友链分组改 tabs-wrapper+Tabs card, 五表单校验失败统一"请填写红色星号内容!"
- 142 用例全绿, vite build 通过
2026-09-19 16:48:16 +08:00
chenxing 6f1f666479 周末修订
build / build (push) Successful in 4m47s
2026-09-15 23:41:11 +08:00
chenxing a05b0ded55 feat(svcitem): 事项库+办事大厅 R2 前端三页,并复用富文本组件消除双份实现
build / build (push) Successful in 3m14s
落地(依据《事项库与办事大厅详细设计 v1》§7)
- 路由:办事事项 modId=21 / 服务字典 modId=22 + 子站镜像(/sch/{code}/site/{siteCode}/svc/*)
  + 3 条 legacyRedirect 旧链兼容;SchoolLayout 菜单图标兜底
- ServiceItemList:三维筛选/关键字/分页/发布下架删除/跳转编辑
- ServiceItemEdit:三段富文本 + 封面 + 指南附件上传回显(attList)+「我要办理外链」提示
  + 部门选择器不可达时提示"可留空保存"
- ServiceDictManage:object/category 双 Tab,被引用键编辑锁定 + 删除引用守护提示
- api/类型:SvcItemApi/SvcDictApi 与 types/cms.ts 契约补齐;站点设置补 svc_hall_base 键

审计修复(docs/18)
- D3 接线:列表页新增 ServiceItemSortModal 拖拽排序(顺序源 selList,保存按下标重排 sort_no)
  与「同步部门名」按钮,此前后端 sort/syncDeptName 已备但前端无入口
- 附件场景拆分:封面与三个富文本编辑器改传 scene=svc_item_asset,指南附件保持 svc_item
  (内容资产由后端按内容派生归属,不再依赖前端收集上传 id——删除只写不读的 uploadedIds 记账)
- 部门组树:SvcDeptVo 增 children,前端 flattenDepts 缩进扁平化(后端改嵌套下发,交互不变)
- RichTextEditor 补 articleId/slateMinHeight prop 并去掉死状态 editorLoading;
  ArticleEdit 改为复用该组件(正文区最小高度按原口径传入,观感不变),消除双份 wangEditor 实现

测试与 mock
- mock 补 /api/svc/** 全量桩(事项分页/字典/部门树/排序/同步部门名/附件回显 + 站点 1、2 示例数据),
  dev:mock 下三页可用(实测 curl 各项响应正确)
- cms.spec 补 save/syncDeptName/selList/dict save+delete 契约;siteRouter.spec 补事项三条路由
  modId 与子站镜像 resolve 断言;新增 RichTextEditor.spec 5 例(上传参数三键/成功 emit/失败不 emit/工具栏排除项)
- vitest 127 用例全绿 + vite build 通过
2026-09-11 14:14:02 +08:00
chenxing 34733ec280 feat(cms): docs/16 站点设置整页化+首页布局编辑器- SiteSetting.vue整页7分区(基本信息/皮肤与外观/首页布局/基础展示/页脚信息/SEO与域名/扩展参数)锚点导航sticky+IntersectionObserver+分区卡片三段式每分区独立保存(configJson单一事实源+submitSection统一提交);创建模式仅①②可编辑其余锁定,创建成功原地replace到site/setting/:id;SiteWizard三步向导退役删除(门户预览收编portalPreviewUrl);SiteManage瘦身表格+行内编辑跳整页(adminPathOf子站带站点段);ImageAssetField图片双通道(上传+路径粘贴折叠);SiteConfigForm支持groups/showExtras/siteId+asset字段接ImageAssetField+三旧键表单不再展示(ABSORBED_LEGACY_KEYS静默保留);homeLayout三件套(homeLayout.ts模型parse/serialize/validate/genFromCategories一键生成+blockTypes.ts注册表showIf条件字段+HomeLayoutEditor.vue序列编辑增删显隐上移下移);routes site/new+site/setting/:id+legacy redirect;CategoryManage home_style提示改口指向首页布局;新增siteSetting.spec+homeLayout.spec,重写siteManage.spec,117用例全绿
build / build (push) Successful in 2m19s
2026-09-10 15:09:10 +08:00
chenxing 7c925cd4f2 ci修订:构建容器名唯一化(修复与同宿主其他仓并发构建时 exit 137 互杀)-runner 挂宿主 docker.sock,容器名在整个 daemon 上共享命名空间,固定名 frontbuild 在多仓/多 workflow 并发时会被对方的 docker rm -f 直接 SIGKILL(2026-09-10 三仓同推:本仓 build run#10 与 UserBase 两条 run 被打死、Notice 侥幸绿,本仓改动本身 vitest 99/99+build 已本地验证);改法 BUILD_CONTAINER=frontbuild-${GITHUB_RUN_ID}-${时间戳},run/exec/cp/rm 全步统一引用;YAML 解析与 step sh -n 通过
build / build (push) Successful in 2m24s
2026-09-10 12:17:01 +08:00
chenxing dfd2b89fbd feat(icons): 全量接入 ysch-icons 并统一首页入口-icons.css 由 build_mask_css.py 注入 105 个官方矢量(同名覆盖 apps/logout/category/browse/edit/ashbin/user-filling,异名保留 attachment/stop/saoba/print/word/excel/ppt/pdf1/txt/tupian1/yasuo/weizhi 12 个手绘稿,旧文件自动存 icons.css.bak);SchoolLayout 左侧菜单 Ionicons→iconfont 掩码类(wenzhang/liebiao/tupian/cshxd/sjlm/zhandian,page 与 modId 两分支同表,链接/附件库内无语义取近似)+菜单图标与文字间距 8px;面包屑补常驻首页段(超管 首页>学校列表>校名>站点>模块,校级无学校列表段),crumb-home 用 inline-flex 真居中并关掉压缩 layout.css 遗留的 .path-nav .icon-category{top:1px} 字体基线补偿(该补偿对 mask 的 1em 方块有害,不改压缩产物);头部「常用应用」改「返回首页」(icon-shouye+linkHomePage,面板 appList 原为硬编码 [] 属死入口,DOM 与 isPanel 保留仅失去入口);ArticleListPanel 发布按钮 icon-apps→icon-fasong 语义纠正;首页与全部应用链接 /BschHome→/userhome/front/index.html(线上 BschHome 实测 404,userhome 200 且 hash 含 /apps);登出路由 /cas/logout→/logout 与 Notice/UserhomeFront 统一(/cas/logout 在 SSO 侧无效);vitest 99/99+build 通过
build / build (push) Failing after 6s
2026-09-10 11:57:36 +08:00
chenxing 6ee9ab5684 feat(site-layer): 学校站点分层方案C落地(docs/13)+栏目管理增强+管理端三修复+首页视觉升级管理端+审计复检T1~T5(docs/15)整合批次-URL站点段/site/{siteCode}无component镜像层(去name防重名,router-view跳过推进渲染)+身份条SiteSwitcher自绘(徽章#577afb/#ff9900+分组下拉✓+path次级列+Esc/外点收起)+URL唯一事实源syncSiteFromRoute(非法/跨校/主站码当子站段告警打回同页主站,localStorage降级刷新首帧兜底)+菜单剥段高亮stripSiteSeg/withSiteSeg补段+menuRoute镜像层防重影+跳转收敛adminPathOf(工作台进入/全部站点总览/站点管理行进入管理纯URL切站);栏目管理-上级栏目可选可改(禁选自身及后代防成环)+批量添加BatchAddCategory(行序写排序号单行失败不中断)+单页wangEditor富文本预览字数分区+categoryIds契约前端/types/mock三处统一+SchoolLayout高度链.layout-wrap修复+ArticleListPanel fixed模式;管理端三修复-皮肤预览Modal全屏(ThemePreviewFrame可选fill prop)+SiteManage补themeUnregistered声明+长图文编辑器随内容增高;管理端视觉升级配套-SiteConfigForm 12新键+BannerManage gallery展示位切换+栏目homeStyle下拉+PortalPreview侧栏同步;审计复检-新增siteRouter.spec真实路由集成7用例(镜像层matched3层/守卫子站码定向主站前缀/越权回工作台/旧链带id重定向)+sitePath空白容错+siteLayer持久化round-trip与身份条次级入口(docs/15);vitest 99/99+build通过+S1~S10 GUI走查全过
build / build (push) Successful in 2m43s
2026-09-10 11:11:23 +08:00
chenxing 9ba4cb135a feat(theme): 皮肤包管理收敛平台级+命名表单-新顶层路由/theme-manage(meta.superOnly守卫+页面watch双兜底),ThemeManage升级全屏页复用新抽WorkbenchHeader(工作台同款深色顶栏backTo=/workbench),工作台超管工具行加皮肤包管理按钮,删SiteManage兜底按钮,旧/theme重定向新页;上传/添加皮肤包改表单弹窗(zip+显示名/描述;添加=源包+标识名+命名一步),内置包可改显示名/描述(无参数区+恢复默认名称);openEdit未注册主题保留原值并告警(themeEdit util,不再静默归一default);mock删modId=7菜单节点;SiteWizard预览内容源v-model对齐path语义(W4遗留);vitest 62/62+build通过
build / build (push) Successful in 2m17s
2026-09-08 20:25:57 +08:00
chenxing 604d77049b refactor(build): 产物直出 dist-去掉 dist/base 中间层(outDir 统一 dist,与 UserBase 同风格),CI zip 步骤回归 cd dist,根治上提交 4b93b13 的打包路径绕法,vitest 56/56+本地 build dist 根 index.html 实测
build / build (push) Successful in 3m16s
2026-09-08 18:37:44 +08:00
chenxing 4b93b131c5 fix(ci): zip 打包路径改 dist/base-vite outDir 即 dist/base,曾误打 dist/ 整层致 zip 根只有 base/ 目录无 index.html,projman 前端发布校验「zip 根目录缺少 html 文件」(初版即错,首次真走部署通道才暴露)
build / build (push) Successful in 2m39s
2026-09-08 17:40:10 +08:00
chenxing 198175975b feat(env-config): 运行时配置改造-index.html内联引导脚本同步XHR拉/{ctx}/api/env-config?target=admin写__APP_CONFIG__,host.config三级合并(运行时JSON>VITE_*(仅dev/mock)>同域推导),删.env.base/.env.prod产物零环境值,vitest 56/56+build产物零烧入
build / build (push) Successful in 2m21s
2026-09-08 17:18:35 +08:00
chenxing d8ac455428 feat(W1): 皮肤包管理页-卡片网格+上传/派生/编辑/删除,ThemeApi五方法,路由/入口/mock modId=7,ThemeVo增source/inUseCount/editable/usedBySiteNames,T-W1-21..24 绿56/56
build / build (push) Successful in 2m16s
2026-09-08 15:14:10 +08:00
chenxing dedd4a6a3a feat(W4): 站点path全链路-portalUrlOf/previewPortalUrl纯函数,站点列/向导地址预览/预览frame sitePath,store携带path,mock嵌套路由,T-W4-16..18 绿51/51 2026-09-08 15:14:10 +08:00
chenxing 7b99ec398d feat(W2): 栏目树修订-虚拟根(学校名/子站名)+工具栏收敛4按钮+高度链修复,T-W2-01..10 绿 44/44 2026-09-08 15:14:09 +08:00
chenxing 1e887906eb chore(W0): 测试基建-补 npm test/test:watch 脚本(vitest run),前端用例 32/32 绿 2026-09-08 15:14:09 +08:00
chenxing 2a077aa917 chore(收尾): mock 数据同步 B2 引用模型-附件 refType 场景引用/page unusedCount/upload scene 白名单 2026-09-08 15:14:09 +08:00
chenxing fc566eed8b feat(B5): 栏目工作台-树+类型化内容面板,ArticleList 组件化薄壳
- 新建 ArticleListPanel(props categoryId/fixedCategory):无props=全局检索行为不变(薄壳红线);
  固定栏目模式隐藏栏目下拉,watch categoryId 联动 reload(拖拽排序不触发,红线)
- CategoryManage 右侧:列表型=本栏目文章面板+新建文章(query.categoryId 预选)+预览;
  单页型=摘要+编辑内容+预览;外链型=URL+打开链接;空态引导;工具栏增树折叠(窄屏)
- ArticleEdit 支持 query.categoryId 新建态预选栏目
- 后端零改动(红线);vitest 32/32 绿(新增 categoryWorkbench.spec 7 例,手写挂载+vi.mock 桩)
2026-09-08 15:14:09 +08:00
chenxing e494a2d2d8 feat(B4): 友链分组改下拉选已有+允许新建(Select allow-create filterable)
- options=数据聚合的既有分组;仍落 groupName 字符串,后端零改动
- 拼错旧组名不再产生新脏分组;vitest 25/25 绿+build 成功
2026-09-08 15:14:08 +08:00
chenxing bb5c5e513f feat(B3): 站点编辑弹窗增自定义样式面板(config_json.custom_css)
- 折叠面板 textarea(等宽字体/10240计数/示例提示),面板为唯一编辑入口
- custom_css 入 RESERVED_SITE_CONFIG_KEYS(结构化表单保留键,不与扩展行重复编辑)
- vitest 25/25 绿(新增保留键往返用例)+build 成功
2026-09-08 15:14:08 +08:00
chenxing bcd639cfc2 feat(B2): 附件管理改"未使用"语义+用途列;banner/link 上传带 scene
- AttachmentManage: orphanCount→unusedCount(零残留),用途列(文章/轮播/友链/站点配置/未使用)
- BannerManage/LinkManage 上传 action 传 scene;ArticleList 删除提示文案同步
- types AttachmentVo 增 refType;vitest 24/24+build 绿
2026-09-08 15:14:07 +08:00
chenxing 3990811ed5 feat(B1): 校级建站入口-新建院系子站(向导锁定本校主站)+学校信息服务端继承
- SiteManage: 新建按钮校级显示"新建院系子站";编辑弹窗校级隐藏schId/schName(payload留空服务端继承)
- SiteWizard: lockParentId 锁定上级为本校主站禁改
- SchoolWorkbench: 副文案改自助创建口径
- vitest 24/24 绿 + build 成功
2026-09-08 15:14:07 +08:00
chenxing c77be8b5d8 chore: 前置快照-assetUrl前缀与学校切换收敛会话遗留(执行方案B1~B5前既有未提交变更) 2026-09-08 15:14:07 +08:00
admin 67a7164897 ci: 上传/webhook curl 加 -f 防静默失败 + 域名解析诊断
build / build (push) Successful in 2m18s
2026-09-07 10:08:29 +08:00
chenxing 506fae0097 fix(API基址): VITE_SERVICE_HOST /cms→/yschcms 对齐projman部署上下文;upload校验/菜单剥离兼容新旧前缀
build / build (push) Successful in 2m16s
2026-09-07 09:35:11 +08:00
chenxing 82eb067b19 merge projman injected files
build / build (push) Successful in 2m16s
2026-09-07 09:11:47 +08:00
chenxing a3a75c3680 init local code 2026-09-07 09:11:37 +08:00
admin cd1c8a79dd ci: init build workflow [skip ci] 2026-09-07 08:41:41 +08:00
admin 06b931dfac init: readme guide [skip ci] 2026-09-07 08:41:36 +08:00
admin 1ee32b759c Initial commit 2026-09-07 08:41:35 +08:00