Files
2026-04-17 21:55:27 +08:00

33 KiB
Raw Permalink Blame History

Light Sleep

  • Candidate: Reflections: Theme: 追加 kept surfacing across 57 memories.; confidence: 0.83; evidence: memory/2026-04-12.md:35-36, memory/2026-04-12.md:38-40, memory/2026-04-12.md:44-46; note: reflection
    • confidence: 0.00
    • evidence: memory/2026-04-14.md:503-506
    • recalls: 0
    • status: staged
  • Candidate: Possible Lasting Truths: No strong candidate truths surfaced.
    • confidence: 0.00
    • evidence: memory/2026-04-14.md:509-509
    • recalls: 0
    • status: staged
  • Candidate: 背景: 用户确认在现有 fquiz 系统内先落地 AI 聊天功能(先方案确认,再开发),要求最小改动闭环。
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:5-5
    • recalls: 0
    • status: staged
  • Candidate: 改动: 后端新增聊天域(FastAPI + SQLAlchemy):; 新增模型:api/app/models/chat.py; chat_sessions; chat_messages
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:9-12
    • recalls: 0
    • status: staged
  • Candidate: 改动: 新增 Schemaapi/app/schemas/chat.py
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:13-13
    • recalls: 0
    • status: staged
  • Candidate: 改动: api/app/services/chat_service.py(会话/消息读写与发送主流程); api/app/services/llm_gateway.py(模型路由解析 + OpenAI-compatible 调用); 新增路由:api/app/api/v1/chat.py; GET /api/v1/chat/sessions
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:15-18
    • recalls: 0
    • status: staged
  • Candidate: 改动: POST /api/v1/chat/sessions; GET /api/v1/chat/sessions/{session_id}/messages; POST /api/v1/chat/sessions/{session_id}/messages
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:19-21
    • recalls: 0
    • status: staged
  • Candidate: 改动: api/app/api/router.py 挂载 chat 路由; api/app/models/__init__.pyapi/app/core/database.py 注册聊天模型确保 create_all 生效
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:23-24
    • recalls: 0
    • status: staged
  • Candidate: 改动: 聊天模型与密钥策略:; 复用模型管理路由规则,解析顺序:; CAPABILITY: chat.default; GLOBAL: __global__
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:26-29
    • recalls: 0
    • status: staged
  • Candidate: 改动: 仅命中 ENABLED 且存在激活密钥记录的模型。; 运行时 key 从环境变量读取,不反解库内 hash:; LLM_PROVIDER_API_KEYSopenai=sk-... 或 JSON)。
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:30-32
    • recalls: 0
    • status: staged
  • Candidate: 改动: 配置与部署模板:; api/app/core/config.py 新增:; llm_provider_api_keys; llm_request_timeout_seconds
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:34-37
    • recalls: 0
    • status: staged
  • Candidate: 改动: chat_context_message_limit; chat_default_system_prompt; .env.exampledocker-compose.yml.github/workflows/main.yml 同步新增上述变量透传。; api/requirements.txt 新增 httpx==0.28.1
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:38-41
    • recalls: 0
    • status: staged
  • Candidate: 改动: RBAC 与菜单:; api/app/services/seed_service.py 新增权限 chat.use。; 新增后台菜单 admin.chat/admin/chat)。; admin 默认菜单绑定新增 admin.chat
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:43-46
    • recalls: 0
    • status: staged
  • Candidate: 改动: api/app/services/admin_service.pyadmin.chat 加入内置受保护菜单集合。
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:47-47
    • recalls: 0
    • status: staged
  • Candidate: 改动: 前端(Next.js App Router + TanStack Query):; 新增页面:web/src/app/admin/chat/page.tsx
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:49-50
    • recalls: 0
    • status: staged
  • Candidate: 改动: 新增类型:web/src/types/auth.tsChatSession/ChatMessage 等)。; 后台首页增加入口卡片:web/src/app/admin/page.tsx。; 首页快捷入口增加 AI 聊天 按钮:web/src/app/page.tsx
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:55-57
    • recalls: 0
    • status: staged
  • Candidate: 验证: python3 -m compileall api/app 通过; 前端 lint; npm run lint:web 通过
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:62-64
    • recalls: 0
    • status: staged
  • Candidate: 验证: cd web && npx tsc --noEmit 通过
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:66-66
    • recalls: 0
    • status: staged
  • Candidate: 风险与备注: 当前为非流式回复,长回答时前端等待感较明显。; 当前默认按 OpenAI-compatible /chat/completions 调用,若其他 Provider 接口不兼容需二期扩展适配层。; 聊天表由 create_all 自动创建,适用于当前仓库口径;后续若引入正式迁移体系需补充迁移脚本。
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:70-72
    • recalls: 0
    • status: staged
  • Candidate: 补充记录(2026-04-13 / web 构建修复): 问题:docker compose build webRUN npm run build 失败,堆栈指向 web/src/app/layout.tsxnext/font/googleSpace Grotesk / Manrope / JetBrains Mono)拉取 fonts.googleapis.com 失败。
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:76-76
    • recalls: 0
    • status: staged
  • Candidate: 补充记录(2026-04-13 / web 构建修复): web/src/app/layout.tsx 移除 next/font/google 依赖与变量注入。; web/src/app/globals.css:root 补充 --font-heading / --font-body / --font-mono 本地字体回退栈,保持现有样式变量接口不变。
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:78-79
    • recalls: 0
    • status: staged
  • Candidate: 补充记录(2026-04-13 / web 构建修复): cd web && npm run build 通过。; docker compose build web 通过。
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:81-82
    • recalls: 0
    • status: staged
  • Candidate: 补充记录(2026-04-13 / web 构建修复): 构建不再依赖外网字体下载,但渲染字体会按运行环境已安装字体回退,字形可能与 Google Fonts 原始效果有轻微差异。
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:84-84
    • recalls: 0
    • status: staged
  • Candidate: 补充记录(2026-04-13 / 首页类型构建修复): 问题:docker compose build webRUN npm run build 的 TypeScript 阶段失败,报错集中在 web/src/app/page.tsxButtonRootProps/InputRootProps 不接受 role/id/onPress 等常用属性。; 根因:@heroui/react 在当前仓库依赖组合(Next.js 16 + React 19 + TS 严格检查)下导出类型不完整,导致封装组件 `web/src/com
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:88-89
    • recalls: 0
    • status: staged
  • Candidate: 补充记录(2026-04-13 / 首页类型构建修复): web/src/app/page.tsx:认证模式切换按钮从 role="tab"+aria-selected 改为 aria-pressed toggle 语义,避免不被组件类型支持的属性。; web/src/app/page.tsx:将首页 Button 用法改为原生 button,保持现有 btn-* 样式类不变。; web/src/components/ui.tsxButton/Input/Checkbox 改为原生语义封装(保留 btn-* /
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:91-93
    • recalls: 0
    • status: staged
  • Candidate: 补充记录(2026-04-13 / 首页类型构建修复): cd web && npm run build 通过(包含 Running TypeScript ... Finished TypeScript)。
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:95-95
    • recalls: 0
    • status: staged
  • Candidate: 补充记录(2026-04-13 / 首页类型构建修复): 首页表单控件不再走 HeroUI 行为层,交互细节(如组件内建动画/状态样式)由本地样式类主导;当前页面功能不受影响,但若后续回切 HeroUI 需先升级或修复其类型声明。
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:97-97
    • recalls: 0
    • status: staged
  • Candidate: 补充记录(2026-04-13 / HeroUI 类型阻断修复-2: 问题:docker compose build webRUN npm run build 的 TypeScript 阶段再次失败,先报 web/src/components/ui.tsxwithDefaultButtonClass(className) 参数不兼容(className 可能是函数),随后暴露 ListBox/Modal/Table 类型不接受 children。; 根因:@heroui/react 在当前依赖组合下的导出类型
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:101-102
    • recalls: 0
    • status: staged
  • Candidate: 补充记录(2026-04-13 / HeroUI 类型阻断修复-2: web/src/components/ui.tsxButton/Input/TextArea/Checkbox 全部切为原生语义封装,并兼容现有调用参数:; Button 兼容 onPressisDisabled; Checkbox 兼容 isSelecteddefaultSelectedonValueChange、布尔 onChange; web/src/components/ui.tsx`ListBox/ListBoxItem
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:104-107
    • recalls: 0
    • status: staged
  • Candidate: 补充记录(2026-04-13 / HeroUI 类型阻断修复-2: cd web && npm run build 通过(Running TypeScript ... Finished TypeScript)。
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:109-109
    • recalls: 0
    • status: staged
  • Candidate: 补充记录(2026-04-13 / HeroUI 类型阻断修复-2: ListBox/Modal/Table 的包装类型放宽后,编译期约束下降;后续若升级 HeroUI 并修复官方声明,建议回收宽松包装并恢复严格类型。
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:111-111
    • recalls: 0
    • status: staged
  • Candidate: 补充记录(2026-04-13 / HeroUI Table 集合上下文运行时修复): 问题:用户在前端运行时遇到 cannot be rendered outside a collection.,堆栈来自压缩产物,页面实际白屏。; 根因:web/src/app/admin/todos/page.tsxTable.Header/Table.Body/Table.Column/Table.Row 直接挂在 Table 下;当前 HeroUI 版本中 Table 仅是容器根节点,必须通过 Table.Content 承载 `re
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:115-116
    • recalls: 0
    • status: staged
  • Candidate: 补充记录(2026-04-13 / HeroUI Table 集合上下文运行时修复): web/src/app/admin/todos/page.tsx:将表格结构调整为 Table -> Table.Content -> Table.Header/Table.Body,其余业务逻辑与样式不变。
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:118-118
    • recalls: 0
    • status: staged
  • Candidate: 补充记录(2026-04-13 / HeroUI Table 集合上下文运行时修复): npm run lint:web 通过。; cd web && npx tsc --noEmit 通过。; cd web && npm run build 通过(含 Generating static pages ... /admin/todos)。
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:120-122
    • recalls: 0
    • status: staged
  • Candidate: 补充记录(2026-04-13 / HeroUI Table 集合上下文运行时修复): 仅修复 admin/todos 当前命中页面;若后续新增 HeroUI Table 页面,仍需遵循同一组合约束避免复发。
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:124-124
    • recalls: 0
    • status: staged
  • Candidate: 补充记录(2026-04-13 / web 字体构建回归修复): 问题:用户再次反馈 docker compose build webRUN npm run build 失败,堆栈指向 web/src/app/layout.tsx[next]/internal/font/google/space_grotesk...。; 根因:layout.tsx 回归为 next/font/googleSpace_Grotesk / Manrope / JetBrains_Mono)编译期下载字体,受限网络环境下失败。
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:128-129
    • recalls: 0
    • status: staged
  • Candidate: 补充记录(2026-04-13 / web 字体构建回归修复): web/src/app/layout.tsx 删除 next/font/google 导入与字体变量注入,仅保留 h-full antialiased。; web/src/app/globals.css:root 显式补齐 --font-heading / --font-body / --font-mono 本地字体回退栈。
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:131-132
    • recalls: 0
    • status: staged
  • Candidate: 补充记录(2026-04-13 / web 字体构建回归修复): cd web && npm run build 通过。; docker compose build web 通过([builder 5/5] RUN npm run build 完成,镜像 fquiz-web 构建成功)。
    • confidence: 0.00
    • evidence: memory/2026-04-13.md:134-135
    • recalls: 0
    • status: staged
  • Candidate: 背景: GitHub Actions 构建 API 镜像时,pip install -r requirements.txt 多次出现 ReadTimeoutErrorfiles.pythonhosted.org / pypi.org)。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:5-5
    • recalls: 0
    • status: staged
  • Candidate: 改动: 更新 api/Dockerfile; 新增构建参数 PIP_INDEX_URL(默认 https://pypi.org/simple)。; 新增构建参数 PIP_DEFAULT_TIMEOUT(默认 120)。; pip install 增加 --retries 8 --timeout "${PIP_DEFAULT_TIMEOUT}" -i "${PIP_INDEX_URL}"
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:9-12
    • recalls: 0
    • status: staged
  • Candidate: 改动: 设置 PIP_DISABLE_PIP_VERSION_CHECK=1。; 更新 .github/workflows/main.yml; API 镜像构建新增 build-args; PIP_INDEX_URL=${{ secrets.PIP_INDEX_URL || vars.PIP_INDEX_URL || 'https://pypi.org/simple' }}
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:13-16
    • recalls: 0
    • status: staged
  • Candidate: 改动: PIP_DEFAULT_TIMEOUT=${{ vars.PIP_DEFAULT_TIMEOUT || '120' }}; 更新 api/requirements.txt:; 从宽范围约束改为精确版本,减少 pip 解析回溯与重复下载。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:17-19
    • recalls: 0
    • status: staged
  • Candidate: 验证: 本地触发 docker build -f api/Dockerfile api --build-arg PIP_INDEX_URL=https://pypi.org/simple --build-arg PIP_DEFAULT_TIMEOUT=120
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:23-23
    • recalls: 0
    • status: staged
  • Candidate: 验证: 新的 pip install 参数生效。; 发生网络超时时会触发 Retry(total=...) 重试逻辑,而非首次超时直接失败。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:25-26
    • recalls: 0
    • status: staged
  • Candidate: 风险与备注: 受网络质量影响,构建时长可能显著增加。; 若目标环境访问 pypi.org 不稳定,需在 GitHub Secrets/Variables 配置更近的 PIP_INDEX_URL
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:30-31
    • recalls: 0
    • status: staged
  • Candidate: 追加修正(同日): 触发问题:No matching distribution found for websockets>=10.4; extra == "standard"。; 原因:uvicorn[standard] 会强依赖 websockets;在当前包源下解析失败。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:35-36
    • recalls: 0
    • status: staged
  • Candidate: 追加修正(同日): api/requirements.txtuvicorn[standard]==0.44.0 改为 uvicorn==0.44.0,并新增 wsproto==1.3.2。; api/Dockerfile 启动命令追加 --ws wsproto,明确 WebSocket 协议实现。; 结果:构建日志不再出现 websockets>=10.4 依赖链,改为安装 wsproto
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:38-40
    • recalls: 0
    • status: staged
  • Candidate: 追加修正(部署脚本 YAML 解析): 触发问题:部署阶段 docker compose 报错 yaml: line 2: mapping values are not allowed in this context,并伴随 DRONE_SSH_PREV_COMMAND_EXIT_CODE 变量告警。; 原因:appleboy/ssh-actionscript_stop: true 下会插入额外控制逻辑,和脚本中的 heredoc 组合后可能污染生成文件。; 处理:移除 workflow 中 `appleboy/ssh-acti
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:44-46
    • recalls: 0
    • status: staged
  • Candidate: 追加修正(API 构建超时 + 解析冲突): pip 拉取 files.pythonhosted.org 频繁 ReadTimeoutError。; 在高延迟场景下,解析 pydantic 版本链时出现 ResolutionImpossible
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:51-52
    • recalls: 0
    • status: staged
  • Candidate: 追加修正(API 构建超时 + 解析冲突): api/requirements.txt 新增显式锁定:; pydantic==2.12.5; pydantic-core==2.41.5; 将 psycopg[binary]==3.3.3 改为显式双包:
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:54-57
    • recalls: 0
    • status: staged
  • Candidate: 追加修正(API 构建超时 + 解析冲突): psycopg==3.3.3; psycopg-binary==3.3.3
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:58-59
    • recalls: 0
    • status: staged
  • Candidate: 追加修正(API 构建超时 + 解析冲突): docker compose build api --no-cache 成功。; 日志显示 pydantic-core-2.41.5psycopg-binary-3.3.3 均成功下载并安装,最终 fquiz-api Built
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:61-62
    • recalls: 0
    • status: staged
  • Candidate: 追加开发(文件管理一期主链): 在现有 FastAPI + SQLAlchemy + RBAC + Next.js App Router 结构上落地文件管理一期最小闭环。; 支持 VFS / S3 driver 抽象,先打通后台 /admin/files 骨架与核心目录操作。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:67-68
    • recalls: 0
    • status: staged
  • Candidate: 追加开发(文件管理一期主链): 新增模型:file_storage_backendsfile_storage_mountsfile_index_entriesapi/app/models/file_storage.py)。; init_db 增加 file_storage 模型加载,保证 create_all 生效。; 新增存储驱动层:VfsStorageDriverS3StorageDriver 与统一工厂(api/app/services/storage_driver.py)。; 新增文件服务:目录列表
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:70-73
    • recalls: 0
    • status: staged
  • Candidate: 追加开发(文件管理一期主链): 新增 API:/api/v1/admin/files/directories/deleteapi/app/api/v1/admin_files.py)。; 种子数据增加 file.read/file.manage 权限、admin.files 菜单、默认 VFS backend+mount 与 S3 backend 占位配置。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:74-75
    • recalls: 0
    • status: staged
  • Candidate: 追加开发(文件管理一期主链): 新增后台页面:web/src/app/admin/files/page.tsx。; 提供挂载点切换、面包屑目录浏览、刷新、新建目录、删除。; 增补类型定义 FileListResponse 等,并在后台首页新增文件管理入口卡片。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:77-79
    • recalls: 0
    • status: staged
  • Candidate: 追加开发(文件管理一期主链): api/requirements.txt 增加 boto3==1.40.59S3 driver 依赖)。; .env.example 增加 FILE_VFS_ROOT(默认 ./data/vfs)。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:81-82
    • recalls: 0
    • status: staged
  • Candidate: 追加开发(文件管理一期主链): python3 -m compileall 覆盖新增/改动后端文件通过。; npx eslint(目标前端文件)通过。; npx tsc --noEmitweb)通过。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:84-86
    • recalls: 0
    • status: staged
  • Candidate: 追加开发(文件管理一期主链): 当前未提供存储后端/挂载点的可视化配置管理,S3 仍需手工写入 backend 配置并启用。; 仅实现目录浏览+建目录+删除,未包含上传、下载、移动、重命名、分享、回收站等完整网盘能力。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:88-89
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(API 容器 unhealthy + Docker Hub 超时): docker compose up 阶段 fquiz-api 持续 unhealthy(容器反复重启)。; 部署日志中 db 拉取 registry-1.docker.io 超时(Client.Timeout exceeded while awaiting headers)。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:94-95
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(API 容器 unhealthy + Docker Hub 超时): api/app/services/admin_service.py 在模块导入期构建 selectinload(...) 常量,提前触发 SQLAlchemy mapper 配置;当时 User.audit_logs -> "AuditLog" 对应模型尚未注册,导致启动即崩溃。; 生产部署 compose 固定 postgres:16-alpine,对 Docker Hub 可达性强依赖。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:97-98
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(API 容器 unhealthy + Docker Hub 超时): api/app/models/__init__.py 增加模型模块统一导入,保证关系类可解析。; api/app/services/admin_service.pyselectinload(...) 由模块级常量改为惰性构建,避免导入阶段触发 mapper 配置。; .github/workflows/main.yml 部署生成的 docker-compose.prod.yml 中 DB 镜像改为可配置:; `image: ${POSTGRES_IM
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:100-103
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(API 容器 unhealthy + Docker Hub 超时): .env 模板新增 POSTGRES_IMAGE 默认值。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:104-104
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(API 容器 unhealthy + Docker Hub 超时): 使用镜像源参数重建 API 成功:; docker compose build api --build-arg PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple --build-arg PIP_DEFAULT_TIMEOUT=600 --build-arg PIP_RETRIES=30; docker compose up -d api 后状态为 Up ... (healthy)。; `curl http
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:106-109
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(GitHub 发布 Run Command Timeout: 发布阶段日志持续停留在 docker compose pull 的 layer 下载进度。; appleboy/ssh-action 最终报错:Run Command Timeout,作业退出码 1
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:114-115
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(GitHub 发布 Run Command Timeout: 远端拉取镜像速度慢时,SSH Action 的命令执行超时先触发,未等到 docker compose pull 自然完成。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:117-117
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(GitHub 发布 Run Command Timeout: 更新 .github/workflows/main.yml 部署步骤:; 为 appleboy/ssh-action 增加 timeout: 120scommand_timeout: 45m。; 脚本内新增 DOCKER_CLIENT_TIMEOUT=600COMPOSE_HTTP_TIMEOUT=600 默认值。; 新增 pull_with_retry(最多 3 次)包装 docker compose pull,网络抖动时自动重试。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:119-122
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(GitHub 发布 Run Command Timeout: 推送触发 main 发布,观察部署日志不再在固定时长点报 Run Command Timeout。; 远端 docker compose ps 应显示 db/api/web 均为 Up(或 healthy)。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:124-125
    • recalls: 0
    • status: staged
  • Candidate: 追加改造(后台视觉风格方案 A): 将后台从默认黑白风格升级为更现代的 Slate + Cyan 视觉基线,保持业务逻辑不变。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:130-130
    • recalls: 0
    • status: staged
  • Candidate: 追加改造(后台视觉风格方案 A): web/src/app/layout.tsx; 字体切换为 Space Grotesk(标题)+ Manrope(正文)+ JetBrains Mono(等宽)。; web/src/app/globals.css:; 新增统一设计 token(背景/边框/强调色/文本层级)。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:132-135
    • recalls: 0
    • status: staged
  • Candidate: 追加改造(后台视觉风格方案 A): 新增通用样式类:surface-cardsurface-card-mutednoticebtn-*controltable-*。; 增加浅色渐变背景与柔和光斑,提升整体层次。; web/src/app/admin/layout.tsx:; 后台侧栏、顶部标题区改为半透明磨砂卡片风格,激活态采用青色高亮。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:136-139
    • recalls: 0
    • status: staged
  • Candidate: 追加改造(后台视觉风格方案 A): web/src/app/admin/**web/src/app/page.tsx:; 统一替换卡片/按钮/表单/表格样式到新通用类,保持页面结构与交互逻辑不变。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:140-141
    • recalls: 0
    • status: staged
  • Candidate: 追加改造(后台视觉风格方案 A): npm run lint:web 通过。; npm run build:web 失败(环境问题,非本次样式改动引入):; Turbopack 报 Can't resolve '@tanstack/react-query' / Can't resolve 'react',但 npm --workspace web ls react @tanstack/react-query --depth=0 可见依赖存在。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:143-145
    • recalls: 0
    • status: staged
  • Candidate: 追加改造(后台视觉风格方案 A): 本次改动覆盖前端多个后台页面,主要风险是视觉回归与局部间距细节,需要联调页面人工验收。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:147-147
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(DB 端口冲突 + pgvector 基线): 远端启动 db 报错:listen tcp4 0.0.0.0:5432: bind: address already in use。; 服务器已有旧 PostgreSQL 占用 5432,当前容器无法绑定。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:152-153
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(DB 端口冲突 + pgvector 基线): docker-compose.yml; DB 端口映射改为 ${POSTGRES_PORT:-5433}:5432。; DB 默认镜像改为 docker.m.daocloud.io/pgvector/pgvector:pg16。; .github/workflows/main.yml
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:155-158
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(DB 端口冲突 + pgvector 基线): 生产 compose 模板同步改为 ${POSTGRES_PORT:-5433}:5432。; .env 自动模板新增 POSTGRES_PORT=5433。; POSTGRES_IMAGE 默认改为 docker.m.daocloud.io/pgvector/pgvector:pg16。; .env.example
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:159-162
    • recalls: 0
    • status: staged
  • Candidate: 追加修复DB 端口冲突 + pgvector 基线): 新增 POSTGRES_PORT=5433,并同步默认 POSTGRES_IMAGE 为 pgvector 镜像。; README.md; PostgreSQL 默认访问端口更新为 5433,并注明可通过 POSTGRES_PORT 覆盖。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:163-165
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(DB 端口冲突 + pgvector 基线): docker compose config 通过。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:167-167
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(DB 端口冲突 + pgvector 基线): db.ports.published5433。; db.imagedocker.m.daocloud.io/pgvector/pgvector:pg16
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:169-170
    • recalls: 0
    • status: staged
  • Candidate: 追加优化(后台页面左右留白收敛): 用户反馈后台页面左右两侧 margin 偏大,宽屏下可用内容空间浪费。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:175-175
    • recalls: 0
    • status: staged
  • Candidate: 追加优化(后台页面左右留白收敛): web/src/app/admin/layout.tsx 将主容器最大宽度由 max-w-[1360px] 提升到 max-w-[1760px]。; 同时增加轻量响应式外层横向内边距(px-3 sm:px-4 xl:px-6),避免贴边。; 主内容区内边距从 p-6 md:p-8 收敛为 p-4 md:p-6,进一步释放表格可视宽度。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:177-179
    • recalls: 0
    • status: staged
  • Candidate: 追加优化(后台页面左右留白收敛): cd web && npx eslint src/app/admin/layout.tsx 通过。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:181-181
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(CORS 跨域配置增强): 前端调用 API 出现浏览器 CORS 拦截,需要支持更灵活的来源配置。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:186-186
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(CORS 跨域配置增强): 后端 CORS 配置增强(api/app/core/config.py + api/app/main.py):; 新增 API_CORS_ORIGIN_REGEX 配置项(可选)。; API_CORS_ORIGINS 支持 * 与通配符域名(如 https://*.example.com),内部转换为正则匹配。; CORSMiddleware 增加 allow_origin_regex=settings.cors_origin_regex
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:188-191
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(CORS 跨域配置增强): 部署与环境模板同步:; .env.example 新增 API_CORS_ORIGIN_REGEX=。; docker-compose.yml API 环境变量新增 API_CORS_ORIGIN_REGEX 透传。; .github/workflows/main.yml 生产 compose 模板与默认 .env 模板同步新增该变量。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:192-195
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(CORS 跨域配置增强): README.md 增加 CORS 配置说明与示例。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:197-197
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(CORS 跨域配置增强): python3 -m compileall api/app/core/config.py api/app/main.py 通过。; docker compose config 展开结果包含:; API_CORS_ORIGINS; API_CORS_ORIGIN_REGEX
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:199-202
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(Web 镜像构建 TypeScript 阻塞): docker compose build webweb/DockerfileRUN npm run build 失败。; 报错定位在 web/src/app/page.tsx:190 附近(placeholder="Email" 上下文),实际错误为 Cannot find name 'title'
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:207-208
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(Web 镜像构建 TypeScript 阻塞): 登录/注册表单标题渲染使用了未定义变量 title,导致 TypeScript 检查失败并中断 Next.js 构建。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:210-210
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(Web 镜像构建 TypeScript 阻塞): web/src/app/page.tsx{title} 改为基于 mode 的内联表达式:; 登录显示 登录; 注册显示 注册
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:212-214
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(Web 镜像构建 TypeScript 阻塞): 复跑 docker compose build web,构建成功,路由静态生成完成,最终输出 fquiz-web Built
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:216-216
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(浏览器 PNA 阻断导致登录失败): 浏览器报错:从 http://223.109.142.84:3000 访问 http://127.0.0.1:8000 被拦截,提示
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:221-221
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(浏览器 PNA 阻断导致登录失败): The request client is not a secure context and the resource is in more-private address space loopback
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:222-222
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(浏览器 PNA 阻断导致登录失败): 前端构建时注入 NEXT_PUBLIC_API_BASE_URL=http://127.0.0.1:8000,线上浏览器会把 127.0.0.1 解释为“访问者本机回环地址”,触发 PNA 安全策略阻断。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:224-224
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(浏览器 PNA 阻断导致登录失败): 新增前端 API 基址运行时解析(web/src/lib/api.ts):; 浏览器端若发现配置为 loopback(127.0.0.1/localhost),且当前页面不在 loopback 主机,则自动改写为当前页面主机 + 原端口(默认 8000)。; 认证请求统一走运行时 API 基址(web/src/components/auth-provider.tsx)。; WS 连接统一走运行时 API 基址(web/src/components/ws-provider.tsx)。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:226-229
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(浏览器 PNA 阻断导致登录失败): 首页 Ping 与 API Base 展示改为运行时解析值(web/src/app/page.tsx)。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:230-230
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(浏览器 PNA 阻断导致登录失败): cd web && npx eslint src/lib/api.ts src/components/auth-provider.tsx src/components/ws-provider.tsx src/app/page.tsx 通过。; cd web && npx tsc --noEmit 通过。
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:232-233
    • recalls: 0
    • status: staged
  • Candidate: 追加修复(需求创建 500): 需求管理页面创建需求失败,接口 POST /api/v1/requirements 返回 500 Internal Server Error
    • confidence: 0.00
    • evidence: memory/2026-04-12.md:238-238
    • recalls: 0
    • status: staged

REM Sleep

Reflections

  • Theme: 追加 kept surfacing across 57 memories.
    • confidence: 0.83
    • evidence: memory/2026-04-12.md:35-36, memory/2026-04-12.md:38-40, memory/2026-04-12.md:44-46
    • note: reflection

Possible Lasting Truths

  • No strong candidate truths surfaced.