From f85c3300bef2110f03ab1f0ef6873fe8daac6c43 Mon Sep 17 00:00:00 2001
From: gqt <3217233537@qq.com>
Date: Sun, 12 Jul 2026 21:21:43 +0800
Subject: [PATCH] feat: finalize comprehensive frontend integration
---
.../verify-comprehensive-session-contract.mjs | 13 ++
.../src/modules/comprehensive/api/content.js | 2 -
miniprogram/src/modules/ice/api/home.js | 6 -
.../src/pages/comprehensive/home/index.vue | 86 +------------
miniprogram/src/pages/ice/home/index.vue | 113 ------------------
5 files changed, 14 insertions(+), 206 deletions(-)
diff --git a/miniprogram/scripts/verify-comprehensive-session-contract.mjs b/miniprogram/scripts/verify-comprehensive-session-contract.mjs
index 4742895..00cfea0 100644
--- a/miniprogram/scripts/verify-comprehensive-session-contract.mjs
+++ b/miniprogram/scripts/verify-comprehensive-session-contract.mjs
@@ -16,6 +16,10 @@ const expectExcludes = (content, unexpected, label) => {
const courseApi = readFileSync(resolve(srcRoot, 'modules/comprehensive/api/course.js'), 'utf8')
const bookingApi = readFileSync(resolve(srcRoot, 'modules/comprehensive/api/booking.js'), 'utf8')
+const comprehensiveHome = readFileSync(resolve(srcRoot, 'pages/comprehensive/home/index.vue'), 'utf8')
+const comprehensiveContentApi = readFileSync(resolve(srcRoot, 'modules/comprehensive/api/content.js'), 'utf8')
+const iceHome = readFileSync(resolve(srcRoot, 'pages/ice/home/index.vue'), 'utf8')
+const iceHomeApi = readFileSync(resolve(srcRoot, 'modules/ice/api/home.js'), 'utf8')
expectIncludes(courseApi, "url: '/api/sessions'", 'session list endpoint')
expectIncludes(courseApi, 'url: `/api/sessions/${id}`', 'session detail endpoint')
@@ -25,6 +29,15 @@ expectIncludes(bookingApi, 'session_id: backendBooking.session_id', 'booking ses
expectIncludes(bookingApi, 'session: toBookingSession(backendBooking.session)', 'booking session mapper')
expectExcludes(bookingApi, 'course: toBookingCourse(backendBooking.course)', 'legacy booking course')
+expectExcludes(comprehensiveHome, '近期课程', 'comprehensive recent courses section')
+expectExcludes(comprehensiveHome, 'upcomingCourses', 'comprehensive recent course state')
+expectExcludes(comprehensiveContentApi, 'upcoming_courses', 'legacy comprehensive home mapping')
+expectExcludes(comprehensiveContentApi, 'upcoming_sessions', 'unused comprehensive home mapping')
+expectExcludes(iceHome, '近期课程', 'ice recent courses section')
+expectExcludes(iceHome, 'upcomingCourses', 'ice recent course state')
+expectExcludes(iceHomeApi, 'course_limit', 'ice recent course request')
+expectExcludes(iceHomeApi, 'upcoming_courses', 'ice recent course mapping')
+
if (failures.length) {
console.error(`Comprehensive session contract verification failed with ${failures.length} issue(s):`)
for (const failure of failures) console.error(`- ${failure}`)
diff --git a/miniprogram/src/modules/comprehensive/api/content.js b/miniprogram/src/modules/comprehensive/api/content.js
index 7862ede..24a5ee0 100644
--- a/miniprogram/src/modules/comprehensive/api/content.js
+++ b/miniprogram/src/modules/comprehensive/api/content.js
@@ -1,6 +1,5 @@
import { request } from './request'
import { compactParams, toArray, toNumber, toPageQuery, toPagination } from './mappers'
-import { toSession } from './course'
const toBanner = (backendBanner = {}) => ({
id: backendBanner.id ?? null,
@@ -22,7 +21,6 @@ const toArticle = (backendArticle = {}) => ({
const toHomeContent = (backendData = {}) => ({
banners: toArray(backendData.banners).map(toBanner),
articles: toArray(backendData.articles).map(toArticle),
- upcoming_courses: toArray(backendData.upcoming_courses).map(toSession),
venue: {
name: backendData.venue?.name || ''
}
diff --git a/miniprogram/src/modules/ice/api/home.js b/miniprogram/src/modules/ice/api/home.js
index 84b4f8b..ca89b42 100644
--- a/miniprogram/src/modules/ice/api/home.js
+++ b/miniprogram/src/modules/ice/api/home.js
@@ -1,5 +1,4 @@
import { request } from './request'
-import { toCourseViewModel } from './course'
const toNumber = (value) => {
const numberValue = Number(value)
@@ -24,9 +23,6 @@ const toActivitySummary = (backendActivity = {}) => ({
const toHomeViewModel = (backendData = {}) => ({
banners: Array.isArray(backendData.banners) ? backendData.banners.map(toBanner) : [],
- upcomingCourses: Array.isArray(backendData.upcoming_courses)
- ? backendData.upcoming_courses.map(toCourseViewModel)
- : [],
activities: Array.isArray(backendData.activities) ? backendData.activities.map(toActivitySummary) : [],
venue: {
name: backendData.venue?.name || '奥林匹克滑冰中心',
@@ -36,13 +32,11 @@ const toHomeViewModel = (backendData = {}) => ({
export const homeApi = {
getHome(options = {}) {
const data = {
- course_limit: options.courseLimit || 2,
banner_limit: options.bannerLimit || 5
}
if (options.activityLimit !== undefined) {
data.activity_limit = options.activityLimit
}
- if (options.courseDate) data.course_date = options.courseDate
return request({
url: '/api/contents/home',
diff --git a/miniprogram/src/pages/comprehensive/home/index.vue b/miniprogram/src/pages/comprehensive/home/index.vue
index e022cfe..02be68e 100644
--- a/miniprogram/src/pages/comprehensive/home/index.vue
+++ b/miniprogram/src/pages/comprehensive/home/index.vue
@@ -25,29 +25,6 @@
-
-
-
-
-
-
-
-
- {{ course.title }}
-
- 时间:{{ formatTimeRange(course.start_at, course.end_at) }}
-
- • 教练:{{ course.coach_name }}
- • 人数:已约 {{ course.booked_count }}/{{ course.capacity }}人
-
-
-
-
- 今日暂无课程排期
-
-
-
-
-
-
-
-
-
-
- {{ course.title }}
- 时间:{{ formatCourseDate(course.start_time, course.end_time) }}
-
- • 教练:{{ course.coach_name }}
- • 人数:已约 {{ course.booked_count }}/{{ course.capacity }}人
-
-
-
-
- 今日暂无课程排期
-
-
-
-