初始化

This commit is contained in:
zg
2026-07-15 16:08:17 +08:00
parent f0d70aded4
commit 4e0057ece5
89 changed files with 13512 additions and 0 deletions

View File

@@ -0,0 +1,173 @@
# MoKeeText Web 记事本 — 设计文档
**日期**: 2026-06-23
**状态**: 已确认
---
## 项目概述
一个 Web 记事本工具,包含两个核心模块:
1. **Markdown 笔记** — 增强型编辑器,类似飞书文档体验
2. **网站账号管理** — 网站密码本,智能导入功能
数据存储到 MySQL。
---
## 技术选型
| 层级 | 技术 | 理由 |
|------|------|------|
| 后端框架 | Python FastAPI | 高性能异步Python 操作 MySQL 成熟 |
| 模板引擎 | Jinja2 | FastAPI 内置支持,服务端渲染 |
| ORM | SQLAlchemy | 最成熟的 Python ORMMySQL 支持好 |
| 数据库 | MySQL | 用户指定 |
| 编辑器 | Tiptap | 增强型富文本编辑器,支持颜色/图片/表情/表格 |
| 前端交互 | 原生 JS + CDN 库 | 无构建步骤,快速迭代 |
| 样式 | 手写 CSS飞书风格| 简洁现代,大量留白 |
---
## 数据库设计
### 文件夹表 (folders)
| 字段 | 类型 | 说明 |
|------|------|------|
| id | INT PK | 主键 |
| name | VARCHAR(100) | 文件夹名 |
| type | ENUM('note','website') | 文件夹类型 |
| parent_id | INT FK | 父文件夹NULL为根 |
| sort_order | INT | 排序 |
| created_at | DATETIME | 创建时间 |
### 笔记表 (notes)
| 字段 | 类型 | 说明 |
|------|------|------|
| id | INT PK | 主键 |
| title | VARCHAR(500) | 标题 |
| content | LONGTEXT | Tiptap JSON/HTML |
| folder_id | INT FK | 所属文件夹 |
| created_at | DATETIME | 创建时间 |
| updated_at | DATETIME | 更新时间 |
### 标签表 (tags)
| 字段 | 类型 | 说明 |
|------|------|------|
| id | INT PK | 主键 |
| name | VARCHAR(50) | 标签名 |
| color | VARCHAR(20) | 颜色 |
### 笔记-标签关联 (note_tags)
| 字段 | 类型 | 说明 |
|------|------|------|
| note_id | INT FK | 笔记ID |
| tag_id | INT FK | 标签ID |
### 网站表 (websites)
| 字段 | 类型 | 说明 |
|------|------|------|
| id | INT PK | 主键 |
| name | VARCHAR(200) | 网站名 |
| url | VARCHAR(500) | 网址 |
| folder_id | INT FK | 所属文件夹 |
| created_at | DATETIME | 创建时间 |
### 账号表 (accounts)
| 字段 | 类型 | 说明 |
|------|------|------|
| id | INT PK | 主键 |
| website_id | INT FK | 所属网站 |
| username | VARCHAR(500) | 账号 |
| password | VARCHAR(500) | 密码(明文,后续加密) |
| remark | TEXT | 登录说明/备注 |
| created_at | DATETIME | 创建时间 |
---
## 页面路由
| 路由 | 页面 |
|------|------|
| `/` | 重定向到 /notes |
| `/notes` | 笔记主页 |
| `/websites` | 网站管理主页 |
| `/api/notes/*` | 笔记 CRUD API |
| `/api/websites/*` | 网站 CRUD API |
| `/api/accounts/*` | 账号 CRUD API |
| `/api/folders/*` | 文件夹 CRUD API |
| `/api/tags/*` | 标签 CRUD API |
| `/api/import/parse` | 智能导入解析 |
| `/api/import/save` | 智能导入保存 |
---
## 智能导入解析逻辑
输入格式:
```
https://github.com 代码网站
zhangsan_new@qq.com
Xyz789!@#
新注册的开发账号
```
解析规则:
- 第1行按第一个空格分割 → 前半为URL后半为网站名
- 第2行账号
- 第3行密码
- 第4行备注可选
- 根据URL匹配已有网站 → 存在则返回匹配信息,不存在则标记新建
---
## UI 布局
```
┌──────────────────────────────────────────────┐
│ 📝 MoKeeText [笔记] [网站管理] 个人版 │
├────────────┬─────────────────────────────────┤
│ 搜索... │ 标题 编辑/预览/分屏 标签│
│ + 新建 │ ───────────────────────────── │
│ │ │
│ 📁 文件夹 │ Tiptap 增强编辑器 │
│ ├ 工作 │ (支持颜色/图片/表情/表格) │
│ ├ 个人 │ │
│ └ 学习 │ │
│ │ │
│ 🏷️ 标签 │ │
│ python │ │
│ mysql │ │
└────────────┴─────────────────────────────────┘
```
---
## 项目结构
```
mokeeText/
├── app.py # FastAPI 入口
├── config.py # 数据库配置
├── models.py # SQLAlchemy 模型
├── routes/
│ ├── notes.py # 笔记相关路由
│ ├── websites.py # 网站相关路由
│ └── import_api.py # 智能导入 API
├── templates/
│ ├── base.html # 基础布局
│ ├── notes.html # 笔记页
│ └── websites.html # 网站管理页
├── static/
│ ├── css/
│ │ └── style.css # 飞书风格样式
│ └── js/
│ ├── editor.js # Tiptap 初始化
│ ├── notes.js # 笔记交互
│ └── websites.js # 网站管理交互
├── requirements.txt
└── docs/
└── superpowers/
└── specs/
└── 2026-06-23-mokeetext-design.md
```