179 lines
6.2 KiB
Markdown
179 lines
6.2 KiB
Markdown
# EasyCode Homepage Product Showcase Implementation Plan
|
|
|
|
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
|
|
|
**Goal:** Rework the EasyCode front homepage into a product capability showcase organized by the confirmed generation journey.
|
|
|
|
**Architecture:** Keep the change inside `easycode-web/src/views/HomeView.vue` and its source-level test. The view remains static and route-driven: data arrays describe the homepage content, and existing router navigation handles authenticated destinations.
|
|
|
|
**Tech Stack:** Vue 3 `<script setup>`, Element Plus, `@element-plus/icons-vue`, scoped SCSS, Node `node:test`.
|
|
|
|
---
|
|
|
|
## File Structure
|
|
|
|
- Modify: `easycode-web/src/views/homeView.test.mjs`
|
|
- Assert the new product showcase information architecture, 8 journey stages, extension capabilities, source-store navigation, and preserved one-click generation route.
|
|
- Modify: `easycode-web/src/views/HomeView.vue`
|
|
- Replace the 5-step homepage with a product showcase homepage: hero, capability summary, 8-stage journey, extension capabilities, scenarios, and final quick actions.
|
|
- Create: `docs/superpowers/plans/2026-07-07-easycode-homepage-product-showcase.md`
|
|
- This plan.
|
|
|
|
## Task 1: Update Homepage Test First
|
|
|
|
**Files:**
|
|
- Modify: `easycode-web/src/views/homeView.test.mjs`
|
|
- Read-only reference: `docs/superpowers/specs/2026-07-07-easycode-homepage-product-showcase-design.md`
|
|
|
|
- [ ] **Step 1: Replace the old source assertions with the new homepage contract**
|
|
|
|
Use this complete test body:
|
|
|
|
```js
|
|
test('home page presents the product capability showcase journey', () => {
|
|
const source = readView('HomeView.vue')
|
|
|
|
assert.match(source, /const journeySteps = \[/)
|
|
assert.match(source, /const extensionCapabilities = \[/)
|
|
assert.match(source, /const scenarioCards = \[/)
|
|
assert.equal(source.includes('EasyCode 全链路项目生成平台'), true)
|
|
assert.equal(source.includes('从业务描述到可运行源码交付'), true)
|
|
assert.equal(source.includes('需求与项目设置'), true)
|
|
assert.equal(source.includes('系统蓝图'), true)
|
|
assert.equal(source.includes('数据库与 ER'), true)
|
|
assert.equal(source.includes('页面与业务块'), true)
|
|
assert.equal(source.includes('图表中心'), true)
|
|
assert.equal(source.includes('代码与文档'), true)
|
|
assert.equal(source.includes('运行预览'), true)
|
|
assert.equal(source.includes('源码交付'), true)
|
|
assert.equal(source.includes('源码库'), true)
|
|
assert.equal(source.includes('论文初稿'), true)
|
|
assert.equal(source.includes('代码解读'), true)
|
|
assert.equal(source.includes("path: '/generate'"), true)
|
|
assert.equal(source.includes("mode: 'one-click'"), true)
|
|
assert.equal(source.includes("router.push('/source-store')"), true)
|
|
})
|
|
```
|
|
|
|
- [ ] **Step 2: Run the focused test to verify RED**
|
|
|
|
Run from `easycode-web`:
|
|
|
|
```powershell
|
|
node --test src/views/homeView.test.mjs
|
|
```
|
|
|
|
Expected: FAIL because `HomeView.vue` still has `workflowSteps` and does not yet contain the new product showcase contract.
|
|
|
|
## Task 2: Implement Product Showcase Homepage
|
|
|
|
**Files:**
|
|
- Modify: `easycode-web/src/views/HomeView.vue`
|
|
- Test: `easycode-web/src/views/homeView.test.mjs`
|
|
|
|
- [ ] **Step 1: Replace template sections**
|
|
|
|
Use these sections in order:
|
|
|
|
1. `.hero-section` with platform positioning, keyword input, example chips, buttons for projects and source store, plus `.hero-capability-panel`.
|
|
2. `.journey-section` with `journeySteps` rendered as `.journey-card`.
|
|
3. `.extension-section` with `extensionCapabilities` rendered as `.extension-card`.
|
|
4. `.scenario-section` with `scenarioCards`.
|
|
5. `.quick-entry-section` with three final CTA buttons.
|
|
|
|
- [ ] **Step 2: Replace script data**
|
|
|
|
Use `journeySteps`, `extensionCapabilities`, `scenarioCards`, and `quickActions` arrays. The journey array must contain exactly these titles:
|
|
|
|
```js
|
|
[
|
|
'需求与项目设置',
|
|
'系统蓝图',
|
|
'数据库与 ER',
|
|
'页面与业务块',
|
|
'图表中心',
|
|
'代码与文档',
|
|
'运行预览',
|
|
'源码交付'
|
|
]
|
|
```
|
|
|
|
Keep `handleGenerate()` routing to `/generate` with `mode: 'one-click'` and optional `keyword`. Add `goSourceStore()` with `router.push('/source-store')`.
|
|
|
|
- [ ] **Step 3: Replace scoped styles**
|
|
|
|
Keep the established 8px radius and restrained Element Plus look. Use responsive grid rules:
|
|
|
|
```scss
|
|
@media (max-width: 1060px) {
|
|
.hero-section,
|
|
.extension-grid,
|
|
.scenario-grid,
|
|
.quick-entry-section {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.journey-grid {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
}
|
|
|
|
@media (max-width: 760px) {
|
|
.quick-form,
|
|
.journey-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
```
|
|
|
|
- [ ] **Step 4: Run focused test to verify GREEN**
|
|
|
|
Run from `easycode-web`:
|
|
|
|
```powershell
|
|
node --test src/views/homeView.test.mjs
|
|
```
|
|
|
|
Expected: PASS with one passing test and zero failures.
|
|
|
|
## Task 3: Verify Build and Browser
|
|
|
|
**Files:**
|
|
- Verify: `easycode-web/src/views/HomeView.vue`
|
|
- Verify: `easycode-web/src/views/homeView.test.mjs`
|
|
|
|
- [ ] **Step 1: Run Vite build**
|
|
|
|
Run from `easycode-web`:
|
|
|
|
```powershell
|
|
npm run build
|
|
```
|
|
|
|
Expected: exit code 0. If build fails, read the error and fix only failures caused by this homepage change.
|
|
|
|
- [ ] **Step 2: Start or reuse the Vite dev server**
|
|
|
|
Run from `easycode-web`:
|
|
|
|
```powershell
|
|
npm run dev -- --host 127.0.0.1
|
|
```
|
|
|
|
Expected: dev server prints a local URL, usually `http://127.0.0.1:5173/` or another available port.
|
|
|
|
- [ ] **Step 3: Inspect the homepage in the browser**
|
|
|
|
Open the local URL and check desktop and mobile widths. Confirm:
|
|
|
|
- Hero text, input, buttons, and ability panel do not overlap.
|
|
- Journey cards render as 4 columns on desktop, 2 columns on medium screens, and 1 column on mobile.
|
|
- Extension and scenario sections remain readable.
|
|
- Source store and generate actions are visible.
|
|
|
|
## Self-Review
|
|
|
|
- Spec coverage: covered hero, 8-stage journey, extensions, scenarios, quick actions, preserved navigation, responsive rules, and tests.
|
|
- Placeholder scan: no TODO, TBD, or deferred implementation steps.
|
|
- Type consistency: test names use `journeySteps`, `extensionCapabilities`, and `scenarioCards`, matching the planned `HomeView.vue` data arrays.
|