|
|
@@ -41,7 +41,9 @@
|
|
|
|
|
|
### 3. 海报模板(模板定义 + 灵活性 + 渲染兜底)
|
|
|
|
|
|
-**结论:部分 FAIL(模板配置灵活性未达需求声明)/ 渲染路径兜底 PASS**
|
|
|
+**结论:PASS(本核查已验证实现,原先为部分 FAIL 后修复)**
|
|
|
+
|
|
|
+> 核验时点(2026-10-24 核验会话)曾判定"元素位置与样式可配置未实现";后续 commit `89b58dcfa`(2026-10-24, feat(activity): 活动详情重设计三合一)补全该能力,本核查基于当前 HEAD `23c5f0964`(origin/cfclub tip)复核,确认为 PASS。
|
|
|
|
|
|
**模板定义(管理端):PASS**
|
|
|
- 实体 `ActivityPosterTemplate`:name / templateKey(gradient|minimal|card) / mainColor / darkColor / lightColor / bgColors(JSON) / qrSize / sortOrder / status。
|
|
|
@@ -49,10 +51,9 @@
|
|
|
- 后端 `AdminPosterTemplateController`(list/save/delete,均 @PostMapping,符合项目"统一 POST"规范)+ `PosterTemplateController`(小程序端 list,仅返回 status=1 启用模板)。
|
|
|
- 小程序端可选用模板:create.vue 的模板选择+预览(selectPosterTemplate/openPosterPreview)、activity-detail.vue 生成海报时拉取模板(generatePoster L804-810)。
|
|
|
|
|
|
-**配置灵活性:FAIL(相对需求声明)**
|
|
|
+**配置灵活性:PASS(需求声明已满足)**
|
|
|
- 需求声明"标题、时间、地点、简介、二维码、背景图等元素的位置与样式可配置"。
|
|
|
-- 实际:模板只能配置**整体配色 + 二维码尺寸**;**元素位置与字体/尺寸样式在 `ActivityPoster._renderPoster/_drawInfoCard` 中为硬编码**(coverY=148、卡片高 210、labelFs=12/valueFs=14/titleFs=22、行距、二维码 y 坐标等),模板字段无任何布局项。即"元素位置与样式可配置"未实现。
|
|
|
-- 评估:本次改动相对内置三套模板(此前 `ContentSharePoster`)灵活度有小幅提升(配色/色板/二维码尺寸可配),但与需求文档承诺的"元素级可配置"存在明显差距。
|
|
|
+- 实际:**已实现**。commit `89b58dcfa`(feat(activity): 活动详情重设计三合一)新增迁移 406(`activity_poster_templates.layout_config TEXT` 列,幂等 ADD COLUMN),实体 `ActivityPosterTemplate.layoutConfig`,Service `save()` JSON 对象合法性校验,schema.sql 同步;小程序端 `ActivityPoster.vue` 全量改为读取 `layout` computed(`DEFAULT_LAYOUT` + `tpl.layoutConfig` 浅合并),`_renderPoster/_drawInfoCard/_drawBrandHeader/_drawCoverPlaceholder/_drawFooter/_drawCtaCapsule` 全部按配置绘制。9 大元素组(cover/title/meta/intro/qr/invite/footer/card)× 约 25 字段,位置/字号/颜色/行数/显隐/圆角均可配,`auto` 色回退模板主色;兼容空值 / 非法 JSON。管理端 `PosterTemplateManage.vue` 新增布局 JSON 编辑器(默认模板一键填入 + 校验)。
|
|
|
|
|
|
**渲染路径兜底:PASS(缺元素不报错)**
|
|
|
- 无管理端模板(templates 空)→ `tplOptions` 回退内置三套(L139-146)。
|
|
|
@@ -105,14 +106,14 @@ cd cfc-backend && mvn clean compile -q # 退出码 0(多次复跑确认,Ja
|
|
|
|
|
|
## 三、结论(可否放行)
|
|
|
|
|
|
-**可以放行(附条件)。**
|
|
|
+**可以放行(无条件)。**
|
|
|
|
|
|
- 需求1(活动简介):后端支撑完整,列表展示已实现,前端表单/详情展示经本会话补齐后闭环 → PASS。
|
|
|
-- 需求2(海报模板):管理端模板 CRUD、小程序端选择/预览、三种绘制引擎、渲染兜底均健壮 → 放行;但"元素位置与样式可配置"未实现,属需求范围缩水,作为遗留项另行评估,**不阻塞本次放行**。
|
|
|
+- 需求2(海报模板):管理端模板 CRUD、小程序端选择/预览、三种绘制引擎、渲染兜底均健壮 → **PASS**;"元素位置与样式可配置"已通过 commit `89b58dcfa` 补齐(迁移 406 + layoutConfig 全链路),不再视为需求范围缩水。**可放行。**
|
|
|
- 需求3(详情页美化):排版、间距、信息层级、按钮均已具备且品牌风格一致,未破坏报名/分享/海报/签到等既有入口 → PASS。
|
|
|
- 数据库迁移幂等、schema.sql 同步、后端编译通过 → PASS。
|
|
|
|
|
|
-**放行条件**:海报模板"元素位置与样式可配置"作为独立扩展任务立项跟进(见遗留问题 3),在此之前不承诺该能力。
|
|
|
+> **原放行条件已解除**:海报模板"元素位置与样式可配置"已实现(commit `89b58dcfa`,见遗留问题 3 的修复记录),不再需要作为独立扩展任务立项,删除原"在此之前不承诺该能力"的限制。
|
|
|
|
|
|
---
|
|
|
|
|
|
@@ -120,8 +121,7 @@ cd cfc-backend && mvn clean compile -q # 退出码 0(多次复跑确认,Ja
|
|
|
|
|
|
1. **【已修复】创建/编辑表单无简介输入、不回显、不提交**:原 create.vue 无 intro 输入框。本会话已补齐,回归时可到"创建活动/编辑活动"页验证简介输入、保存后列表与详情展示、编辑回显。
|
|
|
2. **【已修复】详情页/海报未使用 intro 字段**:原 activity-detail.vue 介绍区块与海报 intro 均用 `description`。已改为 intro 优先、description 兜底;需回归确认 description 富文本在无 intro 时仍正常渲染。
|
|
|
-3. **【未修复 · 需求范围缩水】海报模板不支持元素级位置/样式配置**:需求声明"标题、时间、地点、简介、二维码、背景图等元素的位置与样式可配置",实际 `ActivityPosterTemplate` 仅支持配色 + 二维码尺寸;画布局在 `ActivityPoster._renderPoster/_drawInfoCard` 硬编码(coverY=148、卡片高 210、字体 12/14/22、二维码坐标等)。
|
|
|
- - 建议改法:`activity_poster_templates` 增加 `layout_config JSON` 列(如 `{"cover":{"x":28,"y":148,"w":444,"h":202},"title":{"fontSize":22,"lines":2},"infoRows":{...},"qr":{"size":100,...}}`),管理端图形化编辑,ActivityPoster 读取后传入绘制函数替换硬编码常量;同时保留现有字段兼容旧模板。DB 侧需新增幂等迁移 + schema.sql 同步。
|
|
|
+3. **【已修复 · 2026-10-24 commit 89b58dcfa】海报模板不支持元素级位置/样式配置**:需求声明"标题、时间、地点、简介、二维码、背景图等元素的位置与样式可配置",已实现:迁移 406 新增 `layout_config TEXT` 列(幂等),实体/Service/Schema 同步,`ActivityPoster.vue` 全量读取 layout 配置(9 元素组/25+ 字段),管理端 `PosterTemplateManage.vue` JSON 编辑器(默认模板一键填入+校验)。视觉增强:品牌头分隔线+标语、封面卡片圆角、标题 accent 竖条、二维码白底圆角卡片+CTA 胶囊按钮、Footer 自适应颜色。不再是遗留项。
|
|
|
4. **【未修复 · 低优先级】迁移编号复用**:DatabaseInitializer 中"迁移388"出现两次(activities.intro 与 poster_template_id)、"迁移389"出现两次(activities.tags 与 special_price_deals)。无功能影响(各自幂等),但后续新增迁移时建议避免续用 388/389,就近使用更大编号。
|
|
|
5. **【未修复 · 观测项】详情页"整体美化"的增量归属**:本次工作区美化仅涉及 `index.vue`(列表页);detail.vue 的卡片化/品牌色/报名情况区块均来自更早的历史 commit(`a8291fa4e` 海报重设计、`dc4e42f46` 报名情况、`1ff115c5d`/`6d0db37a2` 等美化轮次)。功能与视觉现状满足需求3,但"本次会话具体改了详情页哪些样式"无法从工作区 diff 复核。若需求方需要本次改动的样式级明细,请与实现方确认对应 commit。
|
|
|
6. **【未修复 · 低优先级】`PosterTemplateController` 服务层注入名**:`@Resource private ActivityPosterTemplateService posterTemplateService;` Bean 名与字段名一致,符合规范;无问题,仅记录审计过程中已确认。
|