Просмотр исходного кода

docs(spec): 天盘 emoji 替换 SVG 图标任务书(CFC-TIANPAN-01);pool: 新增天盘 emoji 图标替换任务

Agnes Agent 1 неделя назад
Родитель
Сommit
9b4e866246
2 измененных файлов с 72 добавлено и 1 удалено
  1. 60 0
      docs/superpowers/specs/2026-11-04-tianpan-emoji-svg.md
  2. 12 1
      tools/xaf_agent_hub/tasks_backlog.json

+ 60 - 0
docs/superpowers/specs/2026-11-04-tianpan-emoji-svg.md

@@ -0,0 +1,60 @@
+# 天盘 emoji/字符图标替换为 SVG 图标 — 任务规格
+
+- 任务 ID:CFC-TIANPAN-01
+- 模块:cfc-frontend(uni-app 微信小程序)
+- 优先级:P1(UI 规范违规,对标 CFC-COLOR-01 / CFC-GUEST-01 同级的 P0-1「emoji 作功能图标」红线)
+- 创建:2026-11-04
+- 状态:pending
+
+## 背景
+
+天盘模块(五维「心」维度核心)页面存在用 emoji 字符作功能图标的情况,违反项目 UI 规范 P0-1「禁止 emoji 作功能图标」。需替换为 SVG/图标体系,与项目其余页面(访客态重设计已实现「零 emoji」)保持一致。
+
+## 使用点清单(已扫描核实,勿重复核查)
+
+### 1. `cfc-frontend/pages/tianpan/index.vue`(天盘首页)
+
+| 行号 | 现状 | Unicode | 用途 |
+|---|---|---|---|
+| L66 | `{{ item.icon \|\| '📋' }}`(`<view class="item-icon">`) | U+1F4CB | 相关事项卡片缺省图标(canvas 之外) |
+| L476 | `ctx.fillText(item.icon \|\| '📋', x, y)` | U+1F4CB | 相关事项雷达/画布绘制缺省图标 |
+
+### 2. `cfc-frontend/pages/mind-detail/components/FamilyTianpanCard.vue`(心维度主入口卡片)
+
+| 行号 | 现状 | Unicode | 用途 |
+|---|---|---|---|
+| L8 | `&#x2637;` | U+2637 ☰ | 吉位罗盘(易经卦象)图标 |
+| L24 | `&#x2B50;` | U+2B50 ⭐ | 心情评分星级图标 |
+| L44 | `&#x1F9ED;` | U+1F9ED 📛 | 八字/传统标签图标 |
+| L81 | `&#x2600;` | U+2600 ☀ | 传统(五行/节气)标签图标 |
+| L85 | `&#x1F52E;` | U+1F52E 🔮 | 每日运势/占卜标签图标 |
+| L93 | `&#x1F4A1;` | U+1F4A1 💡 | 建议/提示图标 |
+| L100 | `♦` | U+2666 | 宜(黄历)符号 —— **语义符号,保留** |
+| L105 | `✖` | U+2716 | 忌(黄历)符号 —— **语义符号,保留** |
+| L16 / L113 | `&#x2192;` | U+2192 → | 跳转箭头 —— **语义符号,保留** |
+
+> 边界:`→`(跳转箭头)、`♦`/`✖`(宜忌标记)属文本语义符号,**不在本次替换范围**;如需统一视觉可后续单独评估,不阻塞本任务。
+
+## 替换目标
+
+将上表「用途」为功能图标的 7 个使用点(index.vue 的 📋 两处 + FamilyTianpanCard 的 ☰/⭐/📛/☀/🔮/💡)替换为 SVG/图标体系:
+
+1. **优先复用项目既有图标基础设施**:先调研 `cfc-frontend` 现有图标方案(uni-icons / 自定义 icon 组件 / iconfont 字体 / 静态 SVG `<image>` 引用),沿用与其余页面一致的方案,避免引入新依赖。
+2. 若项目已用静态 SVG 文件 + `<image>`:为每个图标新增对应 SVG 资源并 `<image>` 引用(小程序不支持内联 `<svg>` 标签,须用 image 或 base64)。
+3. **canvas 绘制(index.vue L476)**:`ctx.fillText` 绘制 emoji 的,需改为绘制 SVG 图标——canvas 无法直接渲染 SVG 字符串,须将图标预渲染为 bitmap(如 base64 PNG/`ctx.drawImage`),或改用现有图标组件 + 文本/图形兜底;保持雷达/画布功能不变。
+4. **视觉一致性**:新图标尺寸、颜色、间距对齐原 emoji 视觉位(颜色优先跟随主题令牌,勿硬编码色值)。
+
+## 验收标准
+
+- `pages/tianpan/index.vue` 与 `pages/mind-detail/components/FamilyTianpanCard.vue` 内 **零 emoji 功能图标**(`&#xNNNN;` 实体与原生 emoji 均不得用于功能图标;`→`/`♦`/`✖` 语义符号可保留)。
+- 天盘首页 / 心维度卡片渲染正常:今日运势、心情星级、吉位罗盘、八字、五行、星座灵数、相关事项卡片均显示正确图标。
+- canvas 雷达/相关事项绘制功能不回归。
+- `npm run build:mp-weixin`(或项目既定构建命令)EXIT=0,无新增警告。
+- 不破坏天盘分包 `pages/tianpan` 其余页面(member-detail / relation-detail / related-items / daily-fortune / annual-energy / traditional)现有功能。
+
+## 约束
+
+- 只改 `cfc-frontend/pages/tianpan/` 与 `pages/mind-detail/components/FamilyTianpanCard.vue` 相关文件;不动后端。
+- 不引入第三方依赖(除非项目已存在)。
+- 改动最小化:优先替换图标本身,不重构页面结构。
+- 提交到独立分支(如 `feature/tianpan-emoji-svg`),commit 后 push 至 origin/cfclub。

+ 12 - 1
tools/xaf_agent_hub/tasks_backlog.json

@@ -1590,5 +1590,16 @@
     "status": "pending",
     "status": "pending",
     "spec": "docs/superpowers/specs/2026-11-01-team-system-design.md",
     "spec": "docs/superpowers/specs/2026-11-01-team-system-design.md",
     "prompt": "规格 2026-11-01-team-system-design.md §3.5/§4.2/§4.3(已合入 cfclub)。背景:廖总要求「在我的团队加一个邀请功能,邀请其他用户加入团队」。现状(勿重复核查):SupplySystemController 仅 member/add(管理员直接加, 参数仅 systemId/userId, 不带parentId不联动supply_hierarchy);SupplySystemMember 无邀请码/受邀人字段;前端 vendor/team-system.vue(780行) 无邀请入口。可参照 DistributionService.generateInviteCode/registerByInviteCode 手法(结算模型不同, 仅复用码生成/凭码注册)。\n数据:supply_system_member 扩列 invite_code(幂等 ensureColumn + 同步 schema.sql)。\n接口(@PostMapping+@Resource+@RequestAttribute(\"userId\")+Result<T>, /api/admin/supply-team/*):① POST /invite-code 生成/获取我的邀请码(幂等, 已生成复用, 支持刷新重置旧码) ② POST /invite/info 凭码查团队名/邀请人昵称头像/成员数(确认页用, 不泄露隐私) ③ POST /invite/join 凭码加入(校验码有效+用户未加入过该体系→addMember(systemId,userId,role=member,active) + SupplyHierarchyService.addRelation(systemId,inviterId,userId) 挂parentId=邀请人/level=父level+1)。\n前端:vendor/team-system.vue 团队成员区加「邀请成员」按钮→弹窗(邀请码+复制+可后置小程序码);新增受邀确认页(展示邀请人/团队→加入→跳转我的团队)。\n边界:同一(systemId,userId)仅加入一次(addMember已有existing检查);status=inactive后可再申请;role=member不可自助变更;邀请不直接挂钩佣金(结算走唯一负责人口径§0.5)。默认自助加入即生效(负责人可移除)、邀请码永久有效唯一。\n约束:先查 API_REFERENCE 避免重复并同步;mvn clean compile + node --check 通过;不破坏现有4套团队功能。"
     "prompt": "规格 2026-11-01-team-system-design.md §3.5/§4.2/§4.3(已合入 cfclub)。背景:廖总要求「在我的团队加一个邀请功能,邀请其他用户加入团队」。现状(勿重复核查):SupplySystemController 仅 member/add(管理员直接加, 参数仅 systemId/userId, 不带parentId不联动supply_hierarchy);SupplySystemMember 无邀请码/受邀人字段;前端 vendor/team-system.vue(780行) 无邀请入口。可参照 DistributionService.generateInviteCode/registerByInviteCode 手法(结算模型不同, 仅复用码生成/凭码注册)。\n数据:supply_system_member 扩列 invite_code(幂等 ensureColumn + 同步 schema.sql)。\n接口(@PostMapping+@Resource+@RequestAttribute(\"userId\")+Result<T>, /api/admin/supply-team/*):① POST /invite-code 生成/获取我的邀请码(幂等, 已生成复用, 支持刷新重置旧码) ② POST /invite/info 凭码查团队名/邀请人昵称头像/成员数(确认页用, 不泄露隐私) ③ POST /invite/join 凭码加入(校验码有效+用户未加入过该体系→addMember(systemId,userId,role=member,active) + SupplyHierarchyService.addRelation(systemId,inviterId,userId) 挂parentId=邀请人/level=父level+1)。\n前端:vendor/team-system.vue 团队成员区加「邀请成员」按钮→弹窗(邀请码+复制+可后置小程序码);新增受邀确认页(展示邀请人/团队→加入→跳转我的团队)。\n边界:同一(systemId,userId)仅加入一次(addMember已有existing检查);status=inactive后可再申请;role=member不可自助变更;邀请不直接挂钩佣金(结算走唯一负责人口径§0.5)。默认自助加入即生效(负责人可移除)、邀请码永久有效唯一。\n约束:先查 API_REFERENCE 避免重复并同步;mvn clean compile + node --check 通过;不破坏现有4套团队功能。"
+  },
+  {
+    "id": "CFC-TIANPAN-01",
+    "title": "天盘 emoji/字符图标替换为 SVG 图标(pages/tianpan/index.vue 相关事项缺省图标 + mind-detail/FamilyTianpanCard 罗盘/心情/传统/运势/建议图标,对齐 P0-1 零emoji规范)",
+    "priority": "P1",
+    "module": "cfc-frontend",
+    "instance": "lan-248",
+    "status": "pending",
+    "spec": "docs/superpowers/specs/2026-11-04-tianpan-emoji-svg.md",
+    "prompt": "规格 docs/superpowers/specs/2026-11-04-tianpan-emoji-svg.md(已合入 cfclub)。背景:廖总指示将天盘 emoji 图标替换任务入池(方案C)。现状(勿重复核查,使用点已核实):pages/tianpan/index.vue L66(+L476 canvas) 用 📋 作相关事项缺省图标;pages/mind-detail/components/FamilyTianpanCard.vue 用 &#x2637;(☷ 罗盘)/&#x2B50;(⭐ 心情)/&#x1F9ED;(🧭 八字)/&#x2600;(☀ 传统)/&#x1F52E;(🔮 运势)/&#x1F4A1;(💡 建议) 作功能图标,违反 P0-1 禁emoji规范。→(跳转)/♦✖(宜忌) 为语义符号不替换。\n方案:①先调研 cfc-frontend 既有图标基础设施(uni-icons/iconfont/静态SVG+<image>),沿用同页面方案,不引新依赖;②index.vue L66 替换为图标组件或 <image>,L476 canvas fillText 改 drawImage 预渲染图标(canvas 无法直接渲 SVG 字符串);③FamilyTianpanCard 各标签/评分图标同法替换;④颜色跟随主题令牌。\n验收:两文件功能图标零 emoji(&#x实体与原生 emoji 均不得用于功能图标);首页/卡片渲染正常(今日运势/心情星级/罗盘/八字/五行/星座灵数/相关事项卡片);canvas 绘制不回归;npm run build:mp-weixin EXIT=0;不动后端与天盘分包其余页面。提交独立分支 push 至 origin/cfclub 后回报 commit 哈希。",
+    "created_at": "2026-11-03 20:11:51"
   }
   }
-]
+]