68 lines
6.6 KiB
Markdown
68 lines
6.6 KiB
Markdown
# 变更日志
|
||
|
||
## 2026-05-14
|
||
|
||
- [新增] 管理员权限接入 LLDAP `lldap_admin` 组:`isLldapAdmin()` 通过 LDAP 查询组成员决定管理权限,不再硬编码 `username === 'admin'`;将用户加入该组即可获得 OA 管理权限
|
||
- [优化] `/api/auth/me` 响应增加 `isAdmin` 字段,前端复用判断权限
|
||
- [修复] 部署后 Cloudflare 缓存旧 HTML 引用已删除 chunk 导致 Application Error:middleware + nginx 双层 `Cache-Control: no-cache` 防缓存,部署脚本 `docker compose restart` 确保容器重启
|
||
- [修复] deploy-ai.sh 对无 Dockerfile 站点(OA)容器不重启,Next.js 进程仍使用旧 `.next`:`docker compose up -d` 后追加 `docker compose restart`
|
||
- [新增] `nginx-proxy-ai/conf.d/oa-ai.conf` 纳入版本控制,新服务器可直接部署
|
||
- [优化] 统一顶栏 Header 组件:提取 `Header.tsx`(服务端)+ `HeaderUI.tsx`(客户端复用),三处页面(首页/用户管理/个人信息)共用同一顶栏,退出按钮、displayName、返回链接风格完全一致
|
||
- [优化] 个人信息页"修改密码"改为折叠按钮,点击后展开表单;新增"确认新密码"字段 + 两次输入一致性校验
|
||
- [优化] 门户首页欢迎语和右上角个人信息优先显示 displayName(显示名),回退 username
|
||
- [优化] 门户退出按钮改为 SVG 门+箭头图标,暗色/亮色模式均清晰可见,hover 高亮
|
||
- [优化] 创建用户弹窗(未填邮箱时)新增显示用户名和显示名,"复制密码"改为"复制信息",复制内容与邮件一致(含用户名、密码、登录地址、安全提示)
|
||
- [修复] deploy-ai.sh 中 OA 的 localhost→域名 sed 替换在 macOS BSD sed 下静默失败,导致生产环境 OA 导航链接指向 localhost:改用 `sed $SED_I_BACKUP`,同时 page.tsx 新增 `siteUrl()` 自动根据 `NODE_ENV` 构造域名
|
||
- [修复] OA 容器缺少 SMTP 环境变量,创建用户填邮箱时邮件发送静默失败:docker-compose.yml 添加 SMTP_HOST/PORT/USER/PASS/FROM
|
||
- [修复] OA 创建用户报 401:`LDAP_ADMIN_PASS` 回退默认值与服务器 LLDAP 实际密码不匹配 → 改为 `docker exec lldap printenv` 动态获取
|
||
- [修复] assets/issue 缺少 LDAP_URL/LDAP_BASE_DN,容器内回退 localhost 不可达 → docker-compose.yml 添加
|
||
- [修复] assets/issue 缺少 COOKIE_DOMAIN,JWT_SECRET 不一致,跨站点免登录失效 → 统一硬编码 JWT_SECRET + COOKIE_DOMAIN
|
||
- [修复] assets/issue 新用户 SSO 免登录自动创建:`getCurrentUser()` 增加 `INSERT OR IGNORE` 逻辑
|
||
- [修复] assets/issue Docker 镜像原生模块 musl/glibc 不兼容导致登录 API 500 → Dockerfile 改为 `npm install` 在 COPY standalone 之后 + `npm rebuild better-sqlite3` + 删除 musl 变体
|
||
- [修复] deploy-ai.sh `--build` 在无 Dockerfile 站点(OA)失败导致容器未重启 → 改为检测 Dockerfile 存在才加 `--build`
|
||
- [部署] deploy-ai.sh 新增构建后清理 musl 残留 + 根据 Dockerfile 存在与否自动决定是否 `--build`
|
||
- [调整] 所有站点 docker-compose.yml 统一 JWT_SECRET=oa-shared-jwt-secret-tlyq-2026、COOKIE_DOMAIN=.tlyq.ai
|
||
|
||
## 2026-05-12
|
||
|
||
- [新增] 修改密码增加复杂度要求:至少 8 位,大写/小写/数字/特殊字符 4 选 3,前端实时显示密码强度指示器
|
||
- [修复] OA 容器只挂载单个 .db 文件导致 SQLite WAL 不共享,权限管理中已删除用户仍可见:改为挂载整个数据目录,WAL 文件实时同步
|
||
- [新增] 创建用户支持邮件发送密码:新增邮箱输入框(选填),填写后通过 nodemailer 将用户名和密码发送至指定邮箱,未填写则弹窗显示(原流程)
|
||
- [新增] `src/lib/email.ts` 邮件发送工具(163 企业邮箱 SMTP,HTML + 纯文本双版本)
|
||
- [调整] 用户管理页标签重命名:「用户管理」→「删除用户」,「角色管理」→「权限管理」
|
||
- [调整] 邮件提示修改密码只能通过 OA 统一门户,不能在子站点修改
|
||
- [部署] OA 站点部署至 txjp 服务器,绑定域名 oa.tlyq.ai
|
||
- [部署] Cloudflare Origin Certificate 部署(覆盖 *.tlyq.ai,15 年有效期)
|
||
- [修复] OA 用户管理/角色管理加载缓慢:容器缺少 assets/issue 数据库卷挂载,LLDAP 缺少 sqlite3
|
||
- [修复] OA 容器重启后 nginx DNS 缓存旧 IP 导致 502:重启 nginx 解决
|
||
- [修复] www-ai 容器未启动导致 nginx 重载失败,连锁影响 OA 配置不生效
|
||
- [调整] 所有站点 nginx 改为运行时 DNS 解析(resolver 127.0.0.11),容器离线不再阻塞 nginx 重载
|
||
- [调整] OA API 路径改用环境变量(ASSETS_DB_PATH / ISSUE_DB_PATH),生产使用 Docker volume 路径
|
||
- [调整] sso.tlyq.ai 301 重定向至 oa.tlyq.ai
|
||
- [调整] assets/issue/oa JWT 密钥统一为 oa-shared-jwt-secret-tlyq-2026
|
||
- [调整] assets/issue docker-compose 移除 AUTHELIA_URL,添加 LDAP/COOKIE/INTERNAL_API_KEY 环境变量
|
||
- [调整] LLDAP admin 密码同步为 3Vm!Y!@RCiPs
|
||
|
||
## 2026-05-11
|
||
|
||
- [新增] OA 统一门户项目创建:Next.js 框架、LLDAP 认证、共享 JWT 跨站点免登录
|
||
- [新增] 门户首页:6 站点卡片聚合导航(资产管理/工单跟踪/官网/云平台/Token工厂/代码仓库)
|
||
- [新增] 登录/退出功能:直连 LLDAP 认证,签发 tlyq_session 共享 JWT
|
||
- [新增] 个人信息页:账户信息展示 + 会话有效期 + 修改密码(docker exec 调 lldap_set_password)
|
||
- [新增] 用户管理(admin 专属):创建用户/用户列表/角色管理三 tab
|
||
- [新增] 创建用户自动生成 12 位复杂密码,弹窗显示 + 一键复制
|
||
- [新增] 创建用户自动同步至 assets-ai/issue-ai,支持角色预设
|
||
- [新增] 创建用户角色下拉从各站点实时获取可用角色列表
|
||
- [新增] 用户列表含删除功能(LLDAP + 各站点 SQLite 同步删除)
|
||
- [新增] 角色管理:按站点修改用户角色,待保存机制 + 批量提交 + 确认弹窗
|
||
- [新增] 深色/浅色主题切换(CSS 变量 + localStorage 持久化,同 assets/issue 风格)
|
||
- [新增] 统一顶栏:主题按钮 + 用户头像 + 个人信息链接 + 图标退出
|
||
- [新增] 站点卡片 hover 域名提示 + 动画效果
|
||
- [新增] CLAUDE.md / README.md / CHANGELOG.md
|
||
- [调整] 登录逻辑 v2.1:LLDAP 优先认证 + 本地密码缓存回退 + localadmin 应急用户
|
||
- [调整] LLDAP 删除用户后,assets/issue 实时检测并踢出已登录用户
|
||
- [调整] 会话有效期显示精确到秒
|
||
- [优化] 用户管理页与首页顶栏样式统一(主题按钮/头像/退出图标)
|
||
- [优化] 密码特殊字符通过 base64 编码传输,避免 shell 转义问题
|
||
- [优化] 站点卡片统一高度,移动端适配
|