## 1. 质量门禁配置 - [x] 1.1 添加 `eslint`、`@eslint/js`、`typescript-eslint`、`eslint-plugin-react-hooks`、`eslint-plugin-react-refresh` 和 `prettier` 开发依赖并更新 lockfile - [x] 1.2 在 `package.json` 新增 `lint`、`format`、`format:check`、`check`、`verify` 脚本 - [x] 1.3 配置 ESLint 检查 TypeScript、React、脚本和测试代码,并启用 React Hooks 规则 - [x] 1.4 配置 ESLint 禁止 `src/web` 导入 `src/server` 后端运行时实现 - [x] 1.5 配置 Prettier 和忽略规则,确保排除 `openspec/`、`dist/`、`.build/`、`node_modules/`、`bun.lock` 和临时构建产物 ## 2. 开发期配置一致性 - [x] 2.1 调整全栈开发脚本,使 Vite proxy 端口从文档化的后端端口配置派生 - [x] 2.2 调整或确认运行配置校验,覆盖默认值、CLI 优先级、无效端口和端口边界行为 - [x] 2.3 补充运行配置测试,覆盖默认端口、`PORT` 覆盖、CLI 优先级、无效端口和端口边界 ## 3. HTTP 运行时契约 - [x] 3.1 为 `/health` 和 `/api/demo` 实现 `GET` 与 `HEAD` 语义,并对不支持 method 返回 JSON 405 和 `Allow` header - [x] 3.2 统一 API 404 和 405 错误响应结构,确保包含 `error` 和 `status` 字段 - [x] 3.3 为生产 HTML、JSON 和静态资源响应添加低风险安全 headers - [x] 3.4 明确生产 HTML、静态资源和未知静态资源的缓存与 404 行为 - [x] 3.5 补充 HTTP handler 单元测试,覆盖 method、HEAD、JSON 错误、缓存 headers、安全 headers 和未知静态资源 ## 4. 构建与 Smoke 验证 - [x] 4.1 调整生产构建脚本,按稳定顺序生成嵌入静态资源清单 - [x] 4.2 增强 executable smoke test,验证 production runtime mode、未知 API、未知静态资源、SPA fallback、缓存 headers 和低风险安全 headers - [x] 4.3 确保 `verify` 先运行 `check`,再基于当前源码执行生产构建和 smoke test ## 5. 文档与最终验证 - [x] 5.1 更新 README,说明 `check`、`verify`、lint、format、构建中间产物、运行配置和验证边界 - [x] 5.2 运行 `bun run check` 并修复发现的问题 - [x] 5.3 运行 `bun run verify` 并修复发现的问题 - [x] 5.4 修正 `openspec/config.yaml` 中 `tasks` artifact 规则键名并确认 OpenSpec CLI 不再告警