mirror of
https://github.com/KingHWJ/WeReadBoard.git
synced 2026-11-03 18:24:58 +08:00
feat: add book detail, notes detail, recommendation page and MySQL schema
新增功能: - 书籍详情弹窗:点击书架书籍展示详细信息(书名、作者、出版社、ISBN、字数、评分、简介、阅读进度),数据实时从微信读书 API 获取并入库 - 笔记详情弹窗:点击有笔记的书展示划线和想法/点评,按章节分组展示,数据实时获取并入库 - 推荐页面:个性化推荐(为你推荐)+ 关键词搜索书籍,数据从微信读书 API 获取并入库 - 修复 Flask 中文 URL 参数编码问题 后端新增 API: - GET /api/book/detail?book_id=xxx — 书籍详情 - GET /api/book/notes?book_id=xxx — 笔记详情(划线+想法) - GET /api/recommend?maxIdx=0 — 个性化推荐 - GET /api/search?keyword=xxx — 搜索书籍 数据库新增表: - book_details, book_progress, book_highlights, book_chapters - book_reviews, recommended_books, search_results MySQL 版本建表语句 schema_mysql.sql: - 18 张表的完整 DDL,含索引、字符集 utf8mb4、字段注释 - 适用于后续从 SQLite 迁移至 MySQL
This commit is contained in:
1 parent
1e9c537b86
commit
ebfa3a1852
6 files changed
+1660
-4
No files matched your search
@@ -21,6 +21,7 @@
|
||||
<a href="#top-books" class="nav-link">读书排行</a>
|
||||
<a href="#shelf" class="nav-link">书架</a>
|
||||
<a href="#notes" class="nav-link">笔记</a>
|
||||
<a href="#discover" class="nav-link">推荐</a>
|
||||
</div>
|
||||
<div class="nav-update" id="fetchTime"></div>
|
||||
</div>
|
||||
@@ -117,6 +118,49 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 推荐发现 -->
|
||||
<section id="discover" class="discover-section">
|
||||
<div class="container">
|
||||
<h2 class="section-title">🔍 推荐发现</h2>
|
||||
<div class="discover-tabs">
|
||||
<button class="discover-tab active" id="tabRecommend" onclick="switchDiscoverTab('recommend')">为你推荐</button>
|
||||
<button class="discover-tab" id="tabSearch" onclick="switchDiscoverTab('search')">搜索书籍</button>
|
||||
</div>
|
||||
<!-- 推荐区 -->
|
||||
<div id="recommendPanel" class="discover-panel">
|
||||
<div class="discover-controls">
|
||||
<button class="btn-primary" onclick="loadRecommend(0)">刷新推荐</button>
|
||||
<button class="btn-secondary" onclick="loadMoreRecommend()">换一批</button>
|
||||
</div>
|
||||
<div class="discover-grid" id="recommendGrid"></div>
|
||||
</div>
|
||||
<!-- 搜索区 -->
|
||||
<div id="searchPanel" class="discover-panel" style="display:none">
|
||||
<div class="search-box">
|
||||
<input type="text" id="searchInput" class="search-input" placeholder="输入书名、作者或关键词..." onkeydown="if(event.key==='Enter')doSearch()">
|
||||
<button class="btn-primary" onclick="doSearch()">搜索</button>
|
||||
</div>
|
||||
<div class="discover-grid" id="searchGrid"></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 书籍详情弹窗 -->
|
||||
<div class="modal-overlay" id="bookDetailModal" onclick="closeModal('bookDetailModal')">
|
||||
<div class="modal-content book-detail-modal" onclick="event.stopPropagation()">
|
||||
<span class="modal-close" onclick="closeModal('bookDetailModal')">×</span>
|
||||
<div id="bookDetailBody" class="modal-body"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 笔记详情弹窗 -->
|
||||
<div class="modal-overlay" id="notesDetailModal" onclick="closeModal('notesDetailModal')">
|
||||
<div class="modal-content notes-detail-modal" onclick="event.stopPropagation()">
|
||||
<span class="modal-close" onclick="closeModal('notesDetailModal')">×</span>
|
||||
<div id="notesDetailBody" class="modal-body"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 页脚 -->
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
|
||||
Reference in new issue
Block a user