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

4.4 KiB
Raw Permalink Blame History

name, description, metadata
name description metadata
session-20260623-2 2026-06-23~24 第2次会话 — 审查接入文档 + 编写方案 + 完成代码改造 + 部署到生产服务器
type date sessionNumber startTime
session 2026-06-23 2 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
    • 前端保留 fetchdev 模式)+ 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}也走后端直连(公开)
  • 图片上传走网关(鉴权),读取走后端直连(标签 + 分享页兼容)
  • 网关 Authorization 头为空时从 Cookie 取 Token
  • 当前项目代码结构保持不变(不重构)

待处理

  • Task 0: 网关数据库初始化 SQL需要网关 DB 访问权限)
  • Task 11-12: 生产环境部署(需要 SSH 到服务器)
  • 对接测试清单逐项验证