chore: init monorepo snapshot

This commit is contained in:
liaibo
2025-11-23 10:55:04 +08:00
commit c70ff52869
941 changed files with 246586 additions and 0 deletions
+136
View File
@@ -0,0 +1,136 @@
# Wolai 深度复刻计划 (Wolai Deep Replication Plan)
**目标**:深度复刻 Wolai 的核心体验,重点解决左侧树状侧边栏的 Bug,并完善右侧编辑器的块交互(特别是「转为页面」功能)。
**基准**:严格遵循 `design/ui_react.md``design/PHASE_1.5_TURN_TO_PAGE_EXACT_CLONE.md`
## 1. 现状分析 & 问题定位
当前项目已具备基础骨架(Next.js + Supabase + BlockNote),但在精细度和交互上仍有差距:
* **侧边栏 (Sidebar)**
* 存在 Bug:拖拽抖动、状态同步延迟、无限嵌套渲染可能出错。
* 缺失细节:右键菜单(重命名/删除)、多选操作、精确的 Hover/Active 样式。
* **编辑器 (Editor)**
* 缺失核心功能:「转为页面」互转逻辑。
* 样式细节:BlockNote 默认样式需定制为 Wolai 的蓝色系 (#2563eb)。
## 2. 实施路线图
### 阶段 A: 侧边栏重构与修复 (Sidebar Overhaul)
**目标**:打造丝滑、无 Bug 的无限嵌套文件树。
1. **数据层优化**
## 3. 技术规范 (Strict Guidelines)
* **CSS 框架**Tailwind CSS (v4)。
* **图标库**`lucide-react` (通用), `react-icons` (特定品牌)。
* **状态管理**`zustand` (全局 UI 状态), `swr` / `react-query` (数据获取)。
* **拖拽库**`@dnd-kit/core`, `@dnd-kit/sortable` (推荐,比 react-dnd 更现代且易于控制样式)。
## 4. 验证计划
### 自动化测试
* (暂无,依赖手动验证)
# Wolai 深度复刻计划 (Wolai Deep Replication Plan)
**目标**:深度复刻 Wolai 的核心体验,重点解决左侧树状侧边栏的 Bug,并完善右侧编辑器的块交互(特别是「转为页面」功能)。
**基准**:严格遵循 `design/ui_react.md``design/PHASE_1.5_TURN_TO_PAGE_EXACT_CLONE.md`
## 1. 现状分析 & 问题定位
当前项目已具备基础骨架(Next.js + Supabase + BlockNote),但在精细度和交互上仍有差距:
* **侧边栏 (Sidebar)**
* 存在 Bug:拖拽抖动、状态同步延迟、无限嵌套渲染可能出错。
* 缺失细节:右键菜单(重命名/删除)、多选操作、精确的 Hover/Active 样式。
* **编辑器 (Editor)**
* 缺失核心功能:「转为页面」互转逻辑。
* 样式细节:BlockNote 默认样式需定制为 Wolai 的蓝色系 (#2563eb)。
## 2. 实施路线图
### 阶段 A: 侧边栏重构与修复 (Sidebar Overhaul)
**目标**:打造丝滑、无 Bug 的无限嵌套文件树。
1. **数据层优化**
## 3. 技术规范 (Strict Guidelines)
* **CSS 框架**Tailwind CSS (v4)。
* **图标库**`lucide-react` (通用), `react-icons` (特定品牌)。
* **状态管理**`zustand` (全局 UI 状态), `swr` / `react-query` (数据获取)。
* **拖拽库**`@dnd-kit/core`, `@dnd-kit/sortable` (推荐,比 react-dnd 更现代且易于控制样式)。
## 4. 验证计划
### 自动化测试
* (暂无,依赖手动验证)
### 官方操作策略 (Official Operational Strategies)
* **块操作逻辑**
* **转换 (Turn into)**:核心逻辑是“保留内容,改变形式”。通过 `::` 菜单、快捷键或 `/` 菜单触发。
* **层级 (Hierarchy)**
* **缩进**:使用 `Tab` / `Shift+Tab` 控制缩进,建立父子关系。
* **嵌套**:拖拽块到另一个块的**内部**(下方缩进位)可创建嵌套结构。
* **布局 (Layout)**:通过拖拽块到左右边缘(显示垂直蓝线)创建分栏。支持 `/2` 等快捷指令。
* **多选 (Multi-select)**:支持鼠标框选或 `Shift+Click` 连续选择。`Esc` 选中当前块,`Shift+Arrow` 多选。
* **Markdown 自动格式化**:输入 `* ` 自动变列表,`# ` 变标题,`[] ` 变待办,`()` 变高级待办,`+[]` 变折叠待办。
* **引用系统 (Reference System)**
* **块引用 (Block Ref)**
* **行内引用**`[[``# ` 触发。虚线下划线,不可编辑,点击跳转。快捷键 `Esc` -> `H`
* **嵌入引用**:独立块,左侧虚线边框,可编辑(有限制)。快捷键 `Esc` -> `Q`
* **页面引用 (Page Ref)**
* **双向链接 (Backlinks)**:页面底部显示“反向引用”列表。
* **预引用**:引用不存在的页面时,可创建“预引用”占位符或直接新建页面。
* **聚合应用**:如 `[[TODO]]` 标签聚合。
* **页面选项 (Page Options)**
* **宽屏模式**:切换定宽 (760px) / 自适应宽度。
* **小字体**16px -> 14px 全局缩放。
* **标题目录 (TOC)**:右侧悬浮,层级 H1-H4 + 子页面。
* **统计**:字数统计、块数统计。
* **待办列表 (Todo List)**
* **进度条联动**:父块为进度条时,自动计算子待办块的完成百分比。
* **高级待办**:4种状态(未做、进行中、完成、取消)。`Alt+Click` 切换取消。
* **图片 (Image)**
* **插入**:命令、拖拽、复制、URL。
* **OCR**:需手动在菜单中点击“文字识别”以建立索引。
* **编辑**:支持裁剪、马赛克、绘图。
### 手动验证清单
* **隐式 OCR**:官方文档未强调 OCR 功能,印证了其作为后台搜索索引服务的定位,而非前台核心编辑功能。
* **文件预览**:依赖第三方服务或浏览器原生能力,保持轻量化。
### 手动验证清单
1. **侧边栏测试**
* [ ] 创建 3 层嵌套页面,确认缩进正确。
* [ ] 拖拽页面 A 到页面 B 内部,确认无刷新实时更新。
- **底部**:结果计数("共 N 条匹配结果"+ 快捷键提示("Ctrl+Enter 新窗口打开", "Alt+Enter 右侧边栏打开")。
- **OCR 策略 (Hidden OCR)**Live Site 验证确认):
- **机制**:图片上传后,后端异步进行 OCR 识别。
- **搜索**:识别的文本会被索引,支持通过关键词搜索到包含该文本的图片页面。
- **展示**:默认情况下,OCR 文本**不直接显示**在页面上(保持页面整洁),而是作为图片的元数据存在。
- **高亮**:在搜索结果摘要中,会高亮显示匹配的 OCR 文本。
- **图片块操作 (Image Block Operations)**Live Site 捕捉确认):
- **菜单项**
- **图片边框** (Toggle)。
- **设置图片超链接...**
- **评论**
- **对齐** (左/中/右)。
- **查看原图** / **全屏查看**
- **编辑图片** (裁剪/旋转等)。
- **文字识别 (OCR)** (手动触发入口)。
- **添加说明 (Caption)** / **说明文字居中**
- **下载**
- **恢复默认大小**
- **替换图片...**
- **文件预览 (File View)**Live Site 捕捉确认):
- **Office 文档 (.docx, .xlsx, .pptx)**
- **策略**:不自行开发渲染器,调用 **Microsoft Office Online****Google Docs Viewer** 服务。
- **实现**:在新标签页打开,或使用 iframe 嵌入 Office Online 预览链接。
- **组件推荐**`react-doc-viewer` (支持多种格式,自动降级) 或直接构建 Office Online URL。
- **PDF 文档**
- **策略**:使用 `react-pdf` 在应用内直接渲染,提供更好的阅读体验。
- **功能**:翻页、缩放、下载。
## 5. 下一步行动 (Next Steps)
建议优先执行 **阶段 A (侧边栏)**,因为它是整个应用的导航骨架,Bug 最影响体验。
然后执行 **阶段 B**,打通「块 <-> 页面」的流转。