What you'll get: A reusable DimensionArticles.vue component that any dimension page (身/智/心/行/富) can drop in to show dimension-filtered articles. It follows the exact same pattern as the existing DimensionTasks/DimensionActivities/DimensionProducts components — self-loading, configurable by dimensionCode, with "更多" link and article click events.
Why this approach: The article section is currently inline in wisdom/index.vue — duplicated logic that every other dimension page would need to copy. Extracting it into a component follows the consistent Dimension* pattern already used for tasks, activities, and products, which are already shared across 9-14+ files each. No changes needed to existing components.
What it will NOT do: Change the wisdom page layout (that's the companion plan redesign-wisdom-page). Modify existing components. Touch backend or routes.
Effort: Quick Risk: Low — straightforward new component following an established 10-file-strong pattern Decisions to sanity-check: Whether articles should load internally (self-contained) or receive data as props — default is self-loading consistent with DimensionTasks.vue
Your next move: Approve this plan, or run a high-accuracy review. Can run before or independently of the redesign-wisdom-page plan.
TL;DR (machine): Quick, Low — create DimensionArticles.vue following existing Dimension* pattern. Self-loads articles filtered by dimensionCode. 1 todo.
cfc-frontend/components/DimensionArticles.vuedimensionCode prop (String, required)getFeaturedArticles({size:5}) from ../../utils/api.jsrelatedDimensions.indexOf(dimensionCode) !== -1@moreArticles when "更多" is clicked@articleClick(article) when a card is tapped?.?.getFeaturedArticlesZero human intervention - all verification is agent-executed.
- Test decision: tests-after (file existence + grep-based assertions)
- Evidence:
.omo/evidence/task-1-dimension-articles-created.txt
| Todo | Depends on | Blocks | Can parallelize with |
|---|---|---|---|
| T1. Create DimensionArticles.vue | — | T2 | — |
| T2. Verify frontend compilation | T1 | — | — |
[ ] 1. Create DimensionArticles.vue component
What to do / Must NOT do: Create file /app/cfc/cfc-frontend/components/DimensionArticles.vue. Template: section with header "推荐阅读" + "更多" link → article card list. Each card shows: category badge (categoryName with color), title, summary (clamped), view count, publishedAt date. "更多" emits @moreArticles. Card tap emits @articleClick(article). Empty state when no articles. Script: props dimensionCode (String, required), data articles (Array), loading (Boolean). On mount call loadArticles() method that calls getFeaturedArticles({size: 5}), filters relatedDimensions by dimensionCode. Style: scoped, flexbox only, no CSS Grid. Must NOT use ?.. Must NOT use display: grid. Must NOT reference wisdom-specific data.
Parallelization: Wave 1 | Blocked by: — | Blocks: T2
References:
/app/cfc/cfc-frontend/components/DimensionTasks.vue (1-148) — self-contained component, dimensionCode prop, loadTasks, emit patternwisdom/index.vue lines 478-504 — API returns array of {id, categoryName, title, summary, viewCount, publishedAt, relatedDimensions}wisdom/index.vue lines 137-161 — category badge, title, summary, meta (views, date)wisdom/index.vue lines 264-275 — relatedDimensions.indexOf('wisdom') !== -1/app/cfc/cfc-frontend/utils/api.js line 1175 — export const getFeaturedArticles
Acceptance criteria (agent-executable):cfc-frontend/components/DimensionArticles.vue\bprops\b and dimensionCode present in filegetFeaturedArticles present in filerelatedDimensions present in filemoreArticles present in file (event emit)articleClick present in file (event emit)\?\. returns emptydisplay:\s*grid returns empty
QA scenarios:.omo/evidence/task-1-dimension-articles-created.txt
Commit: Y | feat(frontend): 创建 DimensionArticles 组件,可复用维度文章卡片[ ] 2. Verify frontend compilation
What to do / Must NOT do: Run npm run build:mp-weixin from /app/cfc/cfc-frontend/. Exit 0.
Parallelization: Wave 2 | Blocked by: T1 | Blocks: —
References: cfc-frontend/AGENTS.md
Acceptance criteria: build exits 0, no compilation errors
QA: Capture output to .omo/evidence/task-2-build-output.txt
Commit: N
?., no CSS Grid, Vue 2 Options APIfeat(frontend): 创建 DimensionArticles 组件,可复用维度文章卡片cfc-frontend/components/DimensionArticles.vue exists<DimensionArticles dimensionCode="X" />