初始化
This commit is contained in:
89
memory/session-20260623-2.md
Normal file
89
memory/session-20260623-2.md
Normal file
@@ -0,0 +1,89 @@
|
||||
---
|
||||
name: session-20260623-2
|
||||
description: 2026-06-23~24 第2次会话 — 审查接入文档 + 编写方案 + 完成代码改造 + 部署到生产服务器
|
||||
metadata:
|
||||
type: session
|
||||
date: 2026-06-23
|
||||
sessionNumber: 2
|
||||
startTime: 2026-06-23T16:00:00+08:00
|
||||
---
|
||||
|
||||
# 2026-06-23 第2次会话
|
||||
|
||||
## 会话摘要
|
||||
审查 MoKeeText 接入 Mokee Gateway 统一登录网关的完整文档,发现 8 个问题(3 重大 + 5 中等),编写了完整的接入实施方案。
|
||||
|
||||
## 关键操作
|
||||
|
||||
### 接入文档审查
|
||||
- **做了什么**: 逐节审查网关接入文档,对比当前 MoKeeText 项目实际情况
|
||||
- **发现的问题**:
|
||||
1. 🔴 后端中间件:文档给的是 Flask,项目是 FastAPI
|
||||
2. 🔴 所有 API 缺少用户数据隔离(当前 created_by 硬编码 admin)
|
||||
3. 🔴 前端源码结构分析(Vue 3 + Vite + fetch,非 axios)
|
||||
4. 🟡 CORS `allow_origins=["*"]` 与 `allow_credentials=True` 冲突
|
||||
5. 🟡 图片存储是否迁移到文件服务(当前存 MySQL LONGBLOB)
|
||||
6. 🟡 本地开发无网关环境如何调试
|
||||
7. 🟡 现有 admin 数据迁移策略
|
||||
8. 🟡 前端 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` / `admin123` BCrypt
|
||||
|
||||
## 已完成的代码改动
|
||||
|
||||
### 后端(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}`也走后端直连(公开)
|
||||
- 图片上传走网关(鉴权),读取走后端直连(<img>标签 + 分享页兼容)
|
||||
- 网关 Authorization 头为空时从 Cookie 取 Token
|
||||
- 当前项目代码结构保持不变(不重构)
|
||||
|
||||
## 待处理
|
||||
- [ ] Task 0: 网关数据库初始化 SQL(需要网关 DB 访问权限)
|
||||
- [ ] Task 11-12: 生产环境部署(需要 SSH 到服务器)
|
||||
- [ ] 对接测试清单逐项验证
|
||||
Reference in New Issue
Block a user