feat: 完整重构小程序匹配功能 + 修复UI对齐 + 文章数据API

主要更新:
1. 按H5网页端完全重构匹配功能(match页面)
   - 4种匹配类型: 创业合伙/资源对接/导师顾问/团队招募
   - 资源对接等类型弹出手机号/微信号输入框
   - 去掉重新匹配按钮,改为返回按钮

2. 修复所有卡片对齐和宽度问题
   - 目录页附录卡片居中
   - 首页阅读进度卡片满宽度
   - 我的页面菜单卡片对齐
   - 推广中心分享卡片统一宽度

3. 修复目录页图标和文字对齐
   - section-icon固定40rpx宽高
   - section-title与图标垂直居中

4. 更新真实完整文章标题(62篇)
   - 从book目录读取真实markdown文件名
   - 替换之前的简化标题

5. 新增文章数据API
   - /api/db/chapters - 获取完整书籍结构
   - 支持按ID获取单篇文章内容
This commit is contained in:
卡若
2026-01-21 15:49:12 +08:00
parent 1ee25e3dab
commit b60edb3d47
197 changed files with 34430 additions and 7345 deletions

View File

@@ -1,3 +1,8 @@
/**
* 页面截图工具
* 开发: 卡若
* 技术支持: 存客宝
*/
import type { DocumentationPage } from "@/lib/documentation/catalog"
export type ScreenshotResult = {
@@ -31,7 +36,7 @@ export async function captureScreenshots(
const captureUrl = new URL("/documentation/capture", options.baseUrl)
captureUrl.searchParams.set("path", pageInfo.path)
console.log(`[v0] Capturing: ${pageInfo.path}`)
console.log(`[Karuo] Capturing: ${pageInfo.path}`)
await page.goto(captureUrl.toString(), {
waitUntil: "networkidle",
@@ -51,7 +56,7 @@ export async function captureScreenshots(
// Allow network to settle
await frame.waitForLoadState("networkidle", { timeout: options.timeoutMs }).catch(() => {
console.log(`[v0] Network idle timeout for ${pageInfo.path}, continuing...`)
console.log(`[Karuo] Network idle timeout for ${pageInfo.path}, continuing...`)
})
if (pageInfo.waitForSelector) {
@@ -60,7 +65,7 @@ export async function captureScreenshots(
timeout: options.timeoutMs,
})
.catch(() => {
console.log(`[v0] Selector timeout for ${pageInfo.path}, continuing...`)
console.log(`[Karuo] Selector timeout for ${pageInfo.path}, continuing...`)
})
}
@@ -76,10 +81,10 @@ export async function captureScreenshots(
screenshotPng: Buffer.from(screenshot),
})
console.log(`[v0] Success: ${pageInfo.path}`)
console.log(`[Karuo] Success: ${pageInfo.path}`)
} catch (error) {
const message = error instanceof Error ? error.message : String(error)
console.log(`[v0] Error capturing ${pageInfo.path}: ${message}`)
console.log(`[Karuo] Error capturing ${pageInfo.path}: ${message}`)
results.push({ page: pageInfo, error: message })
} finally {
await page.close().catch(() => undefined)