4.4 KiB
4.4 KiB
name, description, metadata
| name | description | metadata | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| session-20260623-2 | 2026-06-23~24 第2次会话 — 审查接入文档 + 编写方案 + 完成代码改造 + 部署到生产服务器 |
|
2026-06-23 第2次会话
会话摘要
审查 MoKeeText 接入 Mokee Gateway 统一登录网关的完整文档,发现 8 个问题(3 重大 + 5 中等),编写了完整的接入实施方案。
关键操作
接入文档审查
- 做了什么: 逐节审查网关接入文档,对比当前 MoKeeText 项目实际情况
- 发现的问题:
- 🔴 后端中间件:文档给的是 Flask,项目是 FastAPI
- 🔴 所有 API 缺少用户数据隔离(当前 created_by 硬编码 admin)
- 🔴 前端源码结构分析(Vue 3 + Vite + fetch,非 axios)
- 🟡 CORS
allow_origins=["*"]与allow_credentials=True冲突 - 🟡 图片存储是否迁移到文件服务(当前存 MySQL LONGBLOB)
- 🟡 本地开发无网关环境如何调试
- 🟡 现有 admin 数据迁移策略
- 🟡 前端 API 请求路径变化(直连后端 → 网关)
- 结果: 用户澄清了关键问题 — 前端源码在当前目录、不修改当前项目结构(作为基线)、现有数据归属 admin、网关有 admin 用户
接入方案编写
- 做了什么: 编写完整 12 个 Task 的接入实施方案,保存到
docs/superpowers/plans/2026-06-23-mokeetext-gateway-integration.md - 方案覆盖:
- Task 0: 网关数据库初始化(菜单/角色/管理员 SQL)
- Task 1-2: 后端 FastAPI 中间件 + CORS 改造
- Task 3: 5 个路由文件用户数据隔离改造
- Task 4-9: 前端 env/axios/路由守卫/UserChip/v-permission
- Task 10: 按钮权限控制
- Task 11-12: 部署更新
- 关键设计决策:
- 本地开发走
localhost直连后端 +X-Dev-Mock-User头模拟用户 - 生产环境走网关,axios 拦截器自动携带 Token + X-System-Code
- 图片读取 API 不鉴权(笔记中 img 标签无法带 Authorization)
- 前端保留 fetch(dev 模式)+ axios(生产模式)双通道
- 本地开发走
- 结果: 方案已通过 writing-plans 自检(spec coverage ✓, placeholder scan ✓, type consistency ✓)
重要信息
- 系统编码:
mokeetext-edit - 网关地址:
gw.server.zgitm.com - 登录地址:
login.user.zgitm.com - UserChip CDN:
web.gw.zgitm.com/widgets/user-chip.css|js - 文件服务:
file.wg.zgitm.com(可选,当前项目不用) - 网关管理员账号:
admin_mokeetext-edit/admin123BCrypt
已完成的代码改动
后端(Task 1-3)
- ✅
middleware/__init__.py+middleware/user_context.py— UserContext 辅助类 + FastAPI 中间件 - ✅
app.py— CORS 更新(3 个域名 + localhost) + 注册 UserContextMiddleware - ✅
routes/notes.py— 所有接口加 created_by 过滤 + request 参数 - ✅
routes/websites.py— 同上(网站/账号/文件夹) - ✅
routes/import_api.py— 同上 - ✅
routes/upload.py— 上传记录 created_by,读取保持公开 - ✅
routes/share.py— 保持原样(公开访问不走网关)
前端(Task 4-6)
- ✅
.env/.env.production— 环境变量 - ✅
src/utils/request.js— Axios 实例 + 拦截器 - ✅
src/composables/useApi.js— 双模式:dev (fetch+mock) / production (axios+gateway) - ✅
src/router.js— 路由守卫(无 Token → 登录页,localhost 豁免) - ✅
src/directives/permission.js— v-permission 指令 - ✅
src/main.js— 注册 permission + 动态加载 UserChip Widget - ✅
src/App.vue— UserChip 占位 + 本地 mock 头像 - ✅
index.html— UserChip CSS - ✅
src/components/NoteEditor.vue— 双地址:GW_BASE(上传)+ FILE_BASE(读取) - ✅
package.json— 添加 dev/build scripts,安装 axios - ✅ 构建成功:
static/dist/已生成
设计决策确认
- X-User-Id =
"admin"格式 → 历史数据无需迁移 - 分享页
/share/{token}走后端直连(公开),/api/file/{id}也走后端直连(公开) - 图片上传走网关(鉴权),读取走后端直连(
标签 + 分享页兼容)
- 网关 Authorization 头为空时从 Cookie 取 Token
- 当前项目代码结构保持不变(不重构)
待处理
- Task 0: 网关数据库初始化 SQL(需要网关 DB 访问权限)
- Task 11-12: 生产环境部署(需要 SSH 到服务器)
- 对接测试清单逐项验证