Commit Graph
15 Commits
Author SHA1 Message Date
Stev_Wang f5a8afe835 refactor(web): 侧栏与页面模块名由角色权限改为角色管理
ci / 质量门禁 (push) Canceled after 0s
背景:角色权限只描述模块的一部分能力,侧栏同级均为模块级命名(用户与组织 / 客户 / 行业树);角色页实际覆盖角色 CRUD、权限点、数据范围、特殊权限与 SoD。

改动:
- 侧栏、面包屑、页面标题统一为「角色管理」,页面内权限点 / 数据范围 / 特殊权限分区名不变;
- 用户详情与超管授予弹窗中的模块引用同步改为「角色管理」;
- 开发计划页面清单与 A2 实施报告同步;
- 更新导航与面包屑单测、A2 e2e 标题断言。

验证:format:check / lint / typecheck / test 全绿;5173 实测侧栏、面包屑、页标题均为「角色管理」。
2026-11-03 14:03:13 +08:00
Stev_Wang a3419cf5da refactor(web): 收敛角色页权限点目录入口
ci / 质量门禁 (push) Canceled after 0s
背景:列表页页头「权限点目录」与详情面板「查看权限点目录」和编辑器权限点 Tab 信息重复,抽屉只读、无搜索、无操作,且页头出现两个并列动作。

改动:
- 移除列表页页头目录按钮与 PermissionCatalogDrawer 组件及对应样式;
- 详情面板删除「查看权限点目录」入口,保留「已选 n / 30」信息;
- 权限查看统一走编辑器「权限点」Tab(只读用户也可进入查看);
- 同步 A2 实施报告与设计说明。

验证:pnpm format:check / lint / typecheck / test 全绿;5173 实测页头仅保留「新建角色」,详情面板无目录入口。
2026-11-03 13:56:35 +08:00
Stev_Wang 7824bc7b32 fix(dev): 明确启动不重置数据库并新增安全 db:init
ci / 质量门禁 (push) Canceled after 0s
背景:开发机每次重启后被反馈需要重新用默认密码登录并强改,排查确认仓库启动链路(dev.sh / pnpm dev / API / worker / db:seed)均不重置密码;只有 db:reset / migrate reset / 重建数据卷会恢复种子密码。A2 收尾时为干净截图执行过 db:reset,是最近一次重置的直接原因。

改动:
- 新增 pnpm db:init = prisma migrate deploy + 幂等 seed,作为首次/迁移后的安全初始化;不重置数据、不覆盖已有密码。
- README / dev.sh / AGENTS 命令契约 / SEED.md / A1·A2 实施报告明确:日常启动不需要 DB 命令,db:reset 仅用于清库。
- 实测:对已改密的 admin 执行 db:init 后 password_hash 与 must_change_password 均未变化。

验证:pnpm format:check / pnpm lint 通过;db:init 实际执行通过。
2026-11-03 13:37:34 +08:00
Stev_Wang 7fb458f62f docs(plan): 回写 A2 完成状态并记录 H1 权限门决策
ci / 质量门禁 (push) Canceled after 0s
背景:A2 角色权限与数据范围已完成,需回写计划状态、实施报告与架构决策记录。

改动:
- 新增 docs/adr/ADR-001-权限点目录与六类数据范围.md 及 ADR 索引,记录 H1 权限门六项决策。
- 新增 A2 实施报告(范围、交付、门禁、遗留、回滚、下一步)。
- 更新开发计划 §5.2 / §6.3 / 文档状态,并同步根 README 文档索引。
2026-11-03 12:27:15 +08:00
Stev_Wang a1e28daec5 docs(routing): 新增前端路由与目录规范并收敛计划路由
ci / 质量门禁 (push) Canceled after 0s
背景:
- 前端路由缺少统一规范:导航模块 key 与 URL 首段不一致,页面目录未镜像
  路由,04 规范中的历史路由示例与实际实现不符;
- 用户确认「平台」更名为「管理中心」,路由统一为 /<模块>/<功能>。

改动:
- 新增 11-前端路由与目录规范:模块与基础路径表、路径语法(复数 kebab-case、
  /new、:id、层级与 query 状态)、pages/<模块>/<功能>/ 目录映射、路由注册、
  旧链重定向、新增页面检查清单;
- 04 §8 的 API-27 改为模块化路由并链接 11;工程规范索引与 AGENTS §9 登记 11;
- 开发计划:平台更名管理中心,附录 C 页面清单收敛为模块化路由,§7.1 / §8.3
  同步,版本记录补「路由规范回写」;
- A1 实施报告路由说明更新为 /system/users(旧 /users* 重定向)。

影响面:
- 仅文档与规范,不改变功能范围、权限点与后端接口;后续批次按 11 执行。

回滚方式:
- 回滚本提交即恢复原附录 C 与 04 §8 描述;代码不受影响。

验证证据:
- pnpm format:check 通过;路由与代码行为见相邻的 web 重构提交。
2026-11-03 10:30:55 +08:00
Stev_Wang f11d6759fb docs(plan): 回写 A1 阶段完成状态
ci / 质量门禁 (push) Canceled after 0s
背景:
- A1 身份认证与用户管理已完成并推送(4d9eb98),开发计划需与执行状态同步。

改动:
- 顶部状态更新为 A0 / A1 已完成、A2 待启动;
- 批次总览 A1 标记为已完成,并补充 A1 进度与验证证据;
- 6.2 A1 WBS 增加状态列并标注完成,补充实施报告链接与遗留;
- 版本记录新增「V0.1(进度回写 A1)」。

影响面:
- 仅计划文档的进度回写,不改变范围、EPD、质量门禁与验收口径。

回滚方式:
- 回滚本提交即恢复「A1 待启动」的表述,无代码与数据影响。

验证证据:
- pnpm format:check 通过;
- 进度数据对应 A1 实施记录:shared 95 / api 60 / web 55,test:int 7,A1 e2e 6/6。
2026-11-03 07:40:13 +08:00
Stev_Wang 4d9eb980af feat(identity): 完成 A1 身份认证与用户管理全栈落地
ci / 质量门禁 (push) Canceled after 0s
背景:
- 开发计划 A1 批次要求登录/刷新/登出、用户生命周期、路由与按钮权限、
  权限三态用例;视觉已选定方案 B(主从分栏 + 分屏登录)。

改动:
- packages/shared:新增 identity 契约(User/Me/Login/Refresh/Department/Role)
  与 user:view 权限点;写接口 strict 校验。
- apps/api:新增 identity 模块与 Prisma expand 迁移(departments/users/roles/
  user_roles/role_permissions/refresh_tokens);Argon2id、JWT access+refresh
  旋转与 jti 吊销、登录失败锁定、首登强改、守卫链、/me、@Audit 上下文、幂等种子。
- apps/web:按方案 B 落地 /users、/users/new、/users/:id、分屏登录与 403;
  usePermission/<Can>、路由守卫、401 单飞刷新、停用会话兜底、Semi + token。
- e2e:新增 A1-QA-01 六类端到端用例(A1_E2E 门控)。
- openapi 与前端生成类型同步;.env.example 登记认证变量;实施报告入库。

影响面:
- 新增运行时依赖 @nestjs/jwt、argon2(计划 A1-BE-02 已批准,版本精确锁定)。
- 迁移为 expand,不改既有表;本地需 prisma migrate 后重新 seed。
- 平台导航「用户与组织」由 /platform/users 调整为 /users。

回滚方式:
- 代码整体回滚本提交;迁移为 expand,回滚代码不需删表;
- 本地如需彻底回退按实施报告 §6 处理。

验证证据:
- pnpm format:check / lint / typecheck 通过;
- pnpm test:shared 95 / api 60 / web 55;
- pnpm test:int:7 个(真实 PG/Redis);
- A1_E2E=1 playwright test e2e/a1-identity.spec.ts:6/6;
- 报告:docs/开发计划/灵犀_A1身份认证与用户管理_实施报告_V0.1.md
2026-11-03 00:03:33 +08:00
Stev_Wang f0d218bd99 docs(plan): 标注 A0 阶段完成状态
ci / 质量门禁 (push) Canceled after 0s
背景:A0 工程骨架与契约基线已完成并通过全部门禁。
改动:开发计划状态改为执行中;M0 批次总览增加状态列并标注 A0 已完成;
A0 WBS 增加状态列与完成说明;回写执行证据与环境/范围偏差。
影响面:仅 M0 进度标注,不改变范围与验收口径。
回滚方式:还原本文件至上一提交。
验证:format:check 通过;A0 门禁与本地 CI 全绿见 A0 实施报告。
2026-11-02 20:27:22 +08:00
Stev_Wang 2f200fc9d9 docs(infra): 接入公网 RustFS 对象存储
ci / 质量门禁 (push) Canceled after 0s
背景:项目方提供公网 RustFS(https://oss.xinsenidea.com,桶 lingxi-dev)。
改动:.env.example 填入 endpoint / 桶名占位;README 与 A0 报告记录
对象存储接入方式与验证结果;真实密钥仅保存在本地 .env / .env.local。
影响面:环境变量样例与文档,无运行时代码变更。
回滚方式:还原 .env.example 与文档即可。
验证:list buckets、HEAD bucket、PUT/GET/DELETE 探针对象均成功;
format:check、lint、typecheck、test 全绿。
2026-11-02 18:32:38 +08:00
Stev_Wang 5628e158c0 fix(infra): 移除本地 S3 容器并改用 check:dev
ci / 质量门禁 (push) Canceled after 0s
背景:本地 PG/Redis 已按要求复用 docker-postgres-1 / docker-redis-1;
S3 容器按用户要求删除,后续接入公网自建 RustFS。

改动:
- 删除 infra/docker-compose.dev.yaml、infra/compose.dev.yaml
- 移除 compose:up / compose:down 脚本,改用 check:dev 预检本机 PG/Redis
- 新增 scripts/check-dev-deps.mjs;.env.example 的 S3_* 改为待填
- README / AGENTS / A0 报告同步本地依赖与对象存储说明

影响面:本地开发依赖与 CI 本地脚本、环境变量样例、文档。
回滚方式:恢复被删除的两个 compose 文件与 package.json 脚本即可。
验证:format:check、lint、pnpm ci:local(含 e2e 4/4)全部通过,用时 106.3s。
2026-11-02 18:26:24 +08:00
Stev_Wang 620cb93a46 fix(infra): 本地 PG/Redis 复用已有 Docker 服务
ci / 质量门禁 (push) Canceled after 0s
背景:此前误将宿主端口冲突当作新建 compose 服务的理由,实际应按技术架构使用本机已有 PostgreSQL/Redis。

改动:
- 删除 lingxi-pg / lingxi-redis 容器及数据卷,不再另起数据库;
- DATABASE_URL 改回 127.0.0.1:5432/lingxi,REDIS_URL 改回 127.0.0.1:6379;
- 在已有 docker-postgres-1 中创建 lingxi 库并执行迁移/seed;
- compose 仅保留无法拉取镜像的 S3 兼容服务;
- README、A0 报告同步依赖来源。

影响面:仅本地开发依赖与文档;代码/接口/数据模型不变。
回滚方式:git revert 本提交,并按旧 compose 重新初始化(不推荐)。
验证:migrate deploy、db:seed、test:int、pnpm ci:local(85.9s)全部通过。
2026-11-02 18:21:09 +08:00
Stev_Wang 68b5ca20f4 ci(ci): 支持本地 CI 并调整开发库凭据
ci / 质量门禁 (push) Canceled after 0s
背景:Gitea 暂未部署 Actions runner,远程 CI 会停留在 queued;本地开发库按约定改用 lingxi / postgres / postgres。

改动:
- 新增 pnpm ci:local,按 CI 工作流顺序执行 compose、格式、Lint、类型、单测、构建、迁移种子、集成、OpenAPI 与 e2e;
- 新增 scripts/e2e.mjs 管理 vite preview 生命周期,e2e 改为单 worker 避免退出挂起;
- openapi:export 生成后自动 Prettier,保持工作区干净;
- compose、.env.example、CI services 数据库凭据统一为 postgres/postgres,库名 lingxi;
- README、AGENTS、A0 报告同步本地 CI 与数据库说明。

影响面:仅本地开发与 CI 执行方式,无业务代码/接口/数据模型变更;本地库已重建为 lingxi/postgres。
回滚方式:git revert 本提交;数据库需按回滚后的 compose 凭据重新初始化。
验证:pnpm ci:local 全绿(158s),format:check、lint、typecheck、openapi:diff 通过。
2026-11-02 18:14:08 +08:00
Stev_Wang e35637cfd7 docs(plan): 更新 A0 报告交付状态
ci / 质量门禁 (push) Canceled after 0s
背景:仓库已改为仅 main 直推,短分支已全部删除。

改动:A0 报告头部由历史实施分支改为最终交付方式。
影响面:仅文档。
回滚方式:git revert 本提交。
验证:format:check 通过。
2026-11-02 17:40:54 +08:00
Stev_Wang 043f0d9962 docs(plan): 补全开发计划与项目索引
ci / 质量门禁 (pull_request) Canceled after 0s
引入 M0–M4 开发计划(含 A0 WBS、门禁与七管理模块专项),并在 README、AGENTS 同步文档索引;保留 A0 已完成状态。
2026-11-02 17:29:59 +08:00
Stev_Wang 98a5343e53 docs(docs): 补充 A0 实施报告与本地开发说明
记录 A0 完成范围、门禁实测、环境适配与待确认事项;README 补充本地启动、演示登录及 A0 状态。
2026-11-02 17:22:13 +08:00