Files
mokeeText/memory/session-20260623-1.md
2026-07-15 16:08:17 +08:00

105 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: session-20260623-1
description: 2026-06-23 第1次会话 — MoKeeText 项目从零搭建到 Docker 部署
metadata:
type: session
date: 2026-06-23
sessionNumber: 1
startTime: 2026-06-23T14:00:00+08:00
---
# 2026-06-23 第1次会话
## 会话摘要
从零搭建 Web 记事本 MoKeeText包含笔记编辑器Tiptap 增强型、网站账号密码管理、智能导入。技术栈FastAPI + Vue 3 + Vite + MySQL。已部署到生产服务器 Docker。
## 关键决策
### 技术选型
- **做了什么**: 选择 FastAPI + Vue3 + MySQL放弃纯 Jinja2 模板方案
- **原因**: Vue 组件化更适合复杂交互FastAPI 轻量够用
- **结果**: 前后端分离,前端 Vite 构建静态文件,后端纯 API
### 编辑器选型
- **做了什么**: 使用 Tiptap 增强型编辑器
- **原因**: 支持文字颜色、图片粘贴上传、表格、表情,飞书级别体验
- **结果**: Tiptap 通过 esbuild 打包成本地文件(~460KB无需 CDN
### 图片存储
- **做了什么**: 图片存入 MySQL `uploads` 表的 LONGBLOB 字段,不存文件系统
- **原因**: 部署简单,备份只要导出数据库
- **结果**: 上传 API 返回 `/api/file/{id}`,支持 20MB 以内的图片
### 部署架构
- **做了什么**: Docker Compose 部署,前端 Nginx :3006后端 FastAPI :4006
- **原因**: 生产环境标准化
- **结果**: 前端不代理 APIVue 直接跨域请求后端 `https://mokeetext.server.zgitm.com`
## 代码结构
```
mokeeText/
├── app.py # FastAPI 入口 + CORS
├── models.py # 6个模型Folder/Note/Tag/Website/Account/Upload
├── routes/
│ ├── notes.py # 笔记 CRUD + 分享 + 移动
│ ├── websites.py # 网站/账号/文件夹 CRUD + 排序
│ ├── import_api.py # 智能导入解析
│ ├── upload.py # 图片上传/读取存DB
│ └── share.py # 分享公开查看页
├── src/ # Vue 3 源码
│ ├── App.vue # 左导航 + 顶栏 + 底栏
│ ├── views/
│ │ ├── NotesView.vue # 笔记文档列表 + 编辑器
│ │ ├── WebsitesView.vue # 网站管理 + 弹窗
│ │ └── SharesView.vue # 分享管理
│ └── components/
│ ├── NoteEditor.vue # Tiptap 编辑器(图片粘贴/拖拽/预览)
│ ├── Modal.vue # 通用弹窗
│ ├── ConfirmModal.vue # 确认弹窗
│ └── PromptModal.vue # 输入弹窗
├── static/dist/ # Vue 构建产物
├── nginx.conf # 前端 Nginx 配置(纯静态,无代理)
├── Dockerfile # 后端镜像
├── Dockerfile.frontend # 前端镜像
└── docker-compose.yml # 编排
```
## 数据库MySQL 10.20.1.122:3306/mokeetext
- 用户mokeetext / mokee.
- 所有表均有 `created_by` / `updated_by` 字段(默认 admin
- `notes.share_token` + `share_expires_at` 支持分享链接有效期
- `accounts.sort_order` 支持账号排序
## 生产环境
- 服务器101.132.183.138 root/mokee2016.
- 项目目录:/data/mokee/mokeetext
- 前端https://mokeetext.zgitm.com (:3006)
- 后端https://mokeetext.server.zgitm.com (:4006)
- 日志:/data/mokee/mokeetext/logs按天轮转保留30天
- ICP备案湘ICP备19021539号
## UI 特性
- 左侧可收起导航(展开"mokee编辑器",收起"M"
- 笔记页文件夹侧边栏可收起
- 分享链接支持 7天/30天/1年/永久 四种有效期
- 图片点击全屏预览(带关闭按钮)
- Ctrl+S 保存toast 提示
- 弹窗全部 Vue 组件(非浏览器 alert/confirm
- 移动端响应式适配768px 断点)
## 最新改动UI 优化)
- 文件夹用圆点替代 emoji胶囊数量标签
- 左侧导航选中项蓝色左边框指示器
- "mokee编辑器"品牌名(收起显示 M
- 文件夹侧边栏可收起
- 分享页卡片宽度 1100px超宽滚动
- 图片上传存 DB + 粘贴/拖拽自动上传 + 点击预览带关闭按钮
- 前端不代理,直接跨域调后端
- 后端 CORS 已开
- 全站响应式768px 断点)
## 待处理
- [ ] favicon.ico 前端图标
- [ ] mokeetext.server.zgitm.com 反向代理配置(运维处理)
- [ ] 后续可加用户登录/权限系统