Commit Graph
36 Commits
Author SHA1 Message Date
Stev_Wang 4f8f7c587d fix(api): 允许 localhost 开发源访问 API
ci / 质量门禁 (push) Canceled after 0s
背景:
- 开发环境从 http://localhost:5173 打开页面时,用户与组织页报
  「成员加载失败 / Failed to fetch」;
- 复现确认:API 的 WEB_ORIGIN 仅含 http://127.0.0.1:5173,
  浏览器以 localhost 为 Origin 的预检响应缺少 Access-Control-Allow-Origin,
  请求被浏览器拦截。

改动:
- config/env.ts 的 WEB_ORIGIN 默认值同时包含 127.0.0.1 与 localhost;
- .env.example 同步为逗号分隔的两个开发源。

影响面:
- 仅开发环境 CORS 白名单,生产仍由部署环境变量显式配置;
- 其他来源仍需按 WEB_ORIGIN 显式加入。

回滚方式:
- 回滚本提交并重启 API,即恢复仅允许 127.0.0.1:5173。

验证证据:
- OPTIONS /api/v1/users 对两个 Origin 均返回对应 Access-Control-Allow-Origin;
- 浏览器从 localhost / 127.0.0.1 发起 /me 均返回 401(网络可达,不再 Failed to fetch);
- pnpm --filter @lingxi/api typecheck / test(10 files / 60 tests)通过。
2026-11-03 09:36:16 +08:00
Stev_Wang 340a8ed176 style(login): 精简登录页宣传区并放大输入框图标间距
ci / 质量门禁 (push) Canceled after 0s
背景:
- 登录页左栏四张比例缩略图在真实页面中观感偏廉价;
- 输入框前缀图标与占位文字间距仅 8px,视觉上偏挤。

改动:
- 左栏移除 9:16 / 1:1 / 16:9 / 4:3 素材缩略及相关数据与样式,保留品牌、定位与三条能力;
- 登录卡片输入框前缀图标改为左 10px / 右 14px,后缀图标左 12px / 右 8px,图标与提示文字拉开距离;
- 清理 login-content 与 pages.css 中不再使用的素材墙代码。

影响面:
- 仅登录页视觉,不影响登录逻辑、接口与权限。

回滚方式:
- 回滚本提交即恢复原素材墙与输入框间距。

验证证据:
- pnpm --filter @lingxi/web lint / typecheck / test 通过(15 files / 55 tests);
- pnpm --filter @lingxi/web build 通过;
- 1440×900 与 1280×900 截图核对,无溢出、图标与文字间距正常。
2026-11-03 07:46:47 +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 46959fd5fc chore(dev): 增加开发机一键启动脚本 dev.sh
ci / 质量门禁 (push) Canceled after 0s
背景:
- 开发机上前端/后端/worker 需要分别启动,端口被旧进程占用时排查成本高;
  PostgreSQL / Redis 已按约定提前以 Docker 启动,脚本不再负责。

改动:
- 新增 ./dev.sh:后台启动 api(3000)/web(5173)/worker,启动前自动检测并结束
  端口占用进程(--no-kill 可改为直接失败),等待健康检查后返回。
- 提供 start/stop/restart/status/logs/clean 子命令;stop 按进程组结束并兜底
  释放端口;支持 --api-only/--web-only/--no-worker/--follow。
- 自动加载仓库根 .env.local/.env 并导出给子进程(worker 读取 REDIS_URL 需要)。
- .dev/ 纳入 gitignore;README 本地开发章节补充脚本用法。

影响面:
- 仅新增开发工具与文档,不影响构建、运行时与 CI;`pnpm dev` 保持原行为。

回滚方式:
- 回滚本提交即可,无数据与配置变更。

验证证据:
- bash -n 通过;
- ./dev.sh start / status / stop / restart / clean / --follow 实测;
- 占用 3000/5173 的假服务被自动结束并成功启动;
- --no-kill、--api-only、--no-worker 行为符合预期。
2026-11-03 07:31:50 +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 dd01b89214 docs(docs): 调整分支策略为仅 main 直推
ci / 质量门禁 (push) Canceled after 0s
背景:用户确认仓库只保留 main,不再创建任何远程分支或走 PR 合并。

改动:
- 01-Git规范 V1.1:仅 main 直推,禁止非 main 分支推送、force push 与 Merge commit;
- AGENTS V1.1:变更流程改为直接提交并推送 main;
- 07-CodeReview:PR 模板改为提交说明,合并流程改为推送与推送后观察;
- 03/06/工程规范 README 同步去除 PR 措辞;
- CI 仅保留 push main 与 workflow_dispatch 触发。

影响面:仅流程与文档,无代码/数据/接口变更。
回滚方式:git revert 本提交即可恢复旧流程。
验证:format:check、lint、typecheck 全绿(10/10)。
2026-11-02 17:40:01 +08:00
wang259797 046dad463e Merge pull request 'docs(plan): 补全开发计划与项目索引' (#1) from docs/dev-plan-v0.1 into main
ci / 质量门禁 (push) Canceled after 0s
Reviewed-on: #1
2026-11-02 09:31:13 +00: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
wang259797 0f54f87c87 Merge pull request 'feat(ci): 搭建 A0 工程骨架与契约基线' (#2) from feat/ci-a0-foundation into main
ci / 质量门禁 (push) Canceled after 0s
Reviewed-on: #2
2026-11-02 09:27:48 +00:00
Stev_Wang 63d8889bee build(api): 提交 OpenAPI 契约快照
ci / 质量门禁 (pull_request) Canceled after 0s
ci / 质量门禁 (push) Canceled after 0s
固化 A0 基线契约(OpenAPI 3.1,含 ErrorCode/ErrorResponse 与 x-error-codes),供 openapi:diff 做破坏性变更检测。
2026-11-02 17:22:32 +08:00
Stev_Wang 98a5343e53 docs(docs): 补充 A0 实施报告与本地开发说明
记录 A0 完成范围、门禁实测、环境适配与待确认事项;README 补充本地启动、演示登录及 A0 状态。
2026-11-02 17:22:13 +08:00
Stev_Wang 1876c56008 test(ci): 增加 Playwright 冒烟用例
覆盖登录进入工作台、403/404 错误页、模块切换与面包屑联动,并接入 CI 产物归档。
2026-11-02 17:21:55 +08:00
Stev_Wang 073d210a92 feat(web): 搭建 Web 壳层与 UI 包基线
React 19 + Vite 6 + Router 7 + TanStack Query + Zustand;Semi 二次封装与 Remix 图标统一出口;顶部模块 + 左侧功能菜单布局、Cloud Blue 主题、登录页与 401/403/404/500 页面;请求层含 token 注入、单飞刷新与统一错误提示。
2026-11-02 17:21:16 +08:00
Stev_Wang 23067edb8f feat(api): 搭建 API 与 Worker 骨架及契约基线
NestJS 11 + Fastify 统一错误体与 trace_id,/health 真实探活 DB/Redis,OpenAPI 3.1 契约含 20 个错误码;shared 包提供错误码、权限点、ULID、分页与通用 schema;worker 完成队列进程骨架。
2026-11-02 17:20:46 +08:00
Stev_Wang 09dbb27b66 build(db): 初始化本地依赖与 Prisma 基线
提供 PG18/Redis7.4/S3 本地 compose、环境变量样例与 Prisma 首版迁移;建立 outbox_events、idempotency_keys、system_configs 三张平台骨架表及幂等种子。MinIO 镜像不可得,本地以 S3Mock 替代。
2026-11-02 17:20:32 +08:00
Stev_Wang b3a2a843bb build(ci): 建立单仓工具链与质量门禁
统一 pnpm 10 + Node 24.15.0 + Turborepo 单仓,落地 ESLint 9 flat、Prettier、commitlint、husky 与 Gitea CI,作为后续批次的一致门禁。
2026-11-02 17:20:17 +08:00
Stev_Wang 75cedbe97b docs: 明确 Git 提交信息与 PR 标题使用中文
原 GIT-05 要求 subject 用英文祈使句,与团队实际书写习惯不符(已有提交均为
中文),且缺少中英混排与术语约定,容易写出 Chinglish、自造术语或中英标点混乱。

本次改动:
- GIT-05 改为「提交信息一律使用中文」,type / scope 保留英文小写,规定祈使句、
  字数(≤50 汉字 / 整行 ≤72 字符)与不加句末标点;
- 新增 GIT-21~GIT-23:中英文间加空格、使用全角标点与反引号、术语沿用 PRD 术语表、
  禁止 Chinglish 与无信息缩写;
- 新增 §2.2 commitlint 配置要点:中文必须关闭 subject-case、拦截中文句号,
  否则钩子校验实际无效;
- 同步 03(commit-msg 钩子说明)、07(PR-01 标题用中文)与 AGENTS §7 / §9 / 附录。

影响面:仅文档,无代码影响。新规则对后续提交生效,已推送的历史提交不改写
(GIT-15 禁止改写 main 历史)。
回滚方式:git revert 本提交。
2026-11-02 15:12:56 +08:00
Stev_Wang c50ee7b57a docs(repo): rewrite README to current product baseline
原 README 仍指向 PRD V0.3 与已废弃的「四大模块」。改为三主线 + 一底座,
补齐文档索引、目标目录结构与本地开发入口。

影响面:仅文档,无代码影响。回滚方式:git revert 本提交。
2026-11-02 15:09:51 +08:00
Stev_Wang 00ae12435e docs(specs): add AGENTS.md and engineering guidelines
项目尚无统一工程规范,AI 助手与研发各自发挥导致返工风险。建立
总纲 + 细则两层结构:AGENTS.md 只写硬约束与索引(14 条红线、技术栈
基线、仓库结构、命令契约),细则拆为 10 份文档覆盖 Git、代码风格、
格式化、API 与路由、数据库、测试与 CI、Review、日志、密钥、资产命名。

影响面:仅文档。约束力从本轮起对新建代码生效;与现状冲突处以文档为准。
回滚方式:git revert 本提交。
2026-11-02 15:09:51 +08:00
Stev_Wang d062d79465 docs(proposal): add project initiation proposal V0.1
补入立项阶段的背景论证与投入测算,作为 PRD 的上游背景材料;
本文只用于追溯决策,不约束实现。

影响面:仅文档,无代码影响。回滚方式:git revert 本提交。
2026-11-02 15:09:51 +08:00
Stev_Wang f23ed1e6f8 docs(arch): add technical architecture V0.4
代码开建前缺少技术事实来源。补入技术架构 V0.4:全栈 TypeScript 选型、
模块化单体与 8 个业务模块、数据模型与隔离策略、接口与异步任务协议、
11 条 ADR,需求基线对齐 PRD V1.6。

影响面:仅文档,无代码影响。回滚方式:git revert 本提交。
2026-11-02 15:09:51 +08:00
Stev_Wang a9b579c7fa docs(prd): add PRD V1.6 for deterministic image pipeline
需求基线从 PRD V0.3 升级到 V1.6:图片线由「AI 生成」改为确定性流水线
(PSD 套版 + 抠图 + 多规格合成),新增 R-29/R-30 与 Q-30~Q-32,
并补齐行业包、要素卡、视频逐镜、平台管理等章节。

影响面:仅文档,无代码影响。回滚方式:git revert 本提交。
2026-11-02 15:09:51 +08:00
Stev_Wang 6f644c053b chore(repo): ignore local reference project directories
参考项目仅用于本地对照查阅,入库会污染仓库并带来版权风险。除既有的
参考项目/ 外,补齐 项目参考/ 目录。

影响面:无。回滚方式:git revert 本提交。
2026-11-02 15:09:51 +08:00
lmsll 131e285939 docs: 新增 PRD V0.3(行业=业务属性、行业/客户模块拆分、信息模块、视频方向与视频预览下载) 2026-10-31 00:39:05 +08:00
lmsll cd3d42057f docs: 新增 PRD V0.2(编辑模块+录入、图片预览勾选、资产升 P0、管理预览、图片制作流程图) 2026-10-30 17:59:59 +08:00
lmsll 5f5ed7cd09 docs: 新增 PRD V0.1(脚本生成/素材生产/创作/管理四模块) 2026-10-30 17:26:44 +08:00
Stev_Wang 4d6bf20714 chore: 新增标准 .gitignore 2026-10-30 15:49:39 +08:00
siy e1d3c99f26 docs: 更新 skills(移除口播,新增电商-达人口播/展示 skill) 2026-10-30 15:47:49 +08:00
siy 7b16de6c23 docs: 添加口播 skills 文档 2026-10-30 15:44:32 +08:00
Stev_Wang 5faf6fde2d chore: 重置仓库,仅保留 docs 目录与 README(切换新赛道) 2026-10-30 15:30:00 +08:00