Files
zclaw_openfang/plans/bright-cuddling-wand.md
iven d0c6319fc1
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
feat: 添加ESLint和Prettier配置并优化代码结构
style: 格式化代码文件并修复样式问题

docs: 新增部署文档和系统要求文档

test: 更新测试截图和覆盖率报告

refactor: 重构SchedulerPanel加载状态逻辑

ci: 添加lint和format脚本到package.json

build: 更新依赖项并添加开发工具

chore: 添加验证报告和上线审查计划
2026-03-26 08:02:23 +08:00

252 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ZCLAW 项目上线前全面审查计划
## 背景
ZCLAW 系统开发已进入收尾阶段,需要执行全面的最终审查以确保上线发布质量。本计划基于对代码库的深度探索,识别出关键问题和改进方向。
## 当前状态摘要
| 审查维度 | 当前状态 | 目标状态 | 风险等级 |
|---------|---------|---------|---------|
| 功能完整性 | 核心功能完成5个功能开发中 | 全部完成 | 🟡 中 |
| 测试覆盖率 | ~60% | 80% | 🔴 高 |
| 代码规范 | 无 ESLint/Prettier | 配置并执行 | 🔴 高 |
| 类型安全 | 106处 `any` 类型 | 最小化使用 | 🟡 中 |
| 部署文档 | 缺失 | 完整 | 🟡 中 |
| CI/CD | 完全缺失 | Gitea Actions 配置 | 🔴 高 |
---
## 审查任务清单
### 阶段 1功能完整性审查
#### 1.1 核心功能验证
- [ ] 运行 E2E 测试套件:`cd desktop && pnpm test:e2e`
- [ ] 验证 11 个 Hand 配置文件完整性
- [ ] 验证 68 个技能定义文件
- [ ] 检查 19 个 Store 初始化状态
#### 1.2 边缘情况测试
- [ ] 聊天系统:空消息、超长消息、特殊字符、网络断开
- [ ] Hands 系统:无效 ID、缺少参数、依赖未满足、超时处理
- [ ] 配置系统:无效 TOML、环境变量缺失、路径不存在
#### 1.3 开发中功能 (必须完成)
以下 5 个开发中功能**必须在上线前完成**
- [ ] 批量调度功能 (`AutomationPanel.tsx:365`)
- [ ] 工作流创建向导 (`AutomationPanel.tsx:416`)
- [ ] Cron 调度管理 (`AutomationPanel.tsx:444`)
- [ ] 课堂导出功能 (`ClassroomPreviewer.tsx:353`)
- [ ] 课堂预览功能 (`PipelineResultPreview.tsx:223`)
---
### 阶段 2代码质量审查
#### 2.1 配置 ESLint + Prettier
**关键文件:**
- `g:/ZClaw_openfang/desktop/eslint.config.js` (新建)
- `g:/ZClaw_openfang/desktop/prettier.config.js` (新建)
**执行步骤:**
```bash
cd desktop
pnpm add -D eslint typescript-eslint eslint-plugin-react eslint-plugin-react-hooks prettier prettier-plugin-tailwindcss
# 创建配置文件后执行
pnpm eslint src/ --fix
pnpm prettier --write "src/**/*.{ts,tsx,css}"
```
#### 2.2 清理 `any` 类型
**高优先级文件:**
| 文件 | `any` 次数 | 路径 |
|------|-----------|------|
| gateway-client.ts | 31 | `desktop/src/lib/gateway-client.ts` |
| gateway-api.ts | 26 | `desktop/src/lib/gateway-api.ts` |
| gatewayStore.ts | 10 | `desktop/src/store/gatewayStore.ts` |
| PropertyPanel.tsx | 13 | `desktop/src/components/WorkflowBuilder/PropertyPanel.tsx` |
**修复方案:** 使用 `unknown` + 类型守卫替代 `any`
#### 2.3 静态分析
```bash
# TypeScript 检查
cd desktop && pnpm tsc --noEmit
# Rust 检查
cd desktop/src-tauri && cargo clippy -- -D warnings
```
---
### 阶段 3测试验证
#### 3.1 提升测试覆盖率 (60% → 80%)
**需补充测试的文件:**
| 文件 | 路径 |
|------|------|
| gateway-client.test.ts | `desktop/tests/lib/` |
| kernel-client.test.ts | `desktop/tests/lib/` |
| chatStore.test.ts | `desktop/tests/store/` |
**执行步骤:**
```bash
cd desktop
pnpm vitest run --coverage
# 查看 coverage/lcov-report/index.html 识别低覆盖文件
```
#### 3.2 性能测试
| 指标 | 目标值 |
|------|--------|
| 应用启动时间 | < 3s |
| 首屏渲染 | < 1s |
| 消息发送延迟 | < 100ms |
| 流式首字节 | < 500ms |
| 内存占用 | < 500MB |
#### 3.3 安全测试
- [ ] 搜索敏感数据泄露`grep -rn "console.log.*token\|console.log.*key"`
- [ ] 检查硬编码密钥
- [ ] 验证 API Key 存储使用 OS keyring
- [ ] 检查 WebSocket 认证逻辑
---
### 阶段 4部署准备
#### 4.1 创建部署文档
**需创建的文档:**
- `docs/deployment/README.md` - 部署概述
- `docs/deployment/windows.md` - Windows 安装指南
- `docs/deployment/requirements.md` - 系统要求
#### 4.2 配置 Gitea CI/CD
**关键文件:**
- `g:/ZClaw_openfang/.gitea/workflows/ci.yml` (新建)
- `g:/ZClaw_openfang/.gitea/workflows/release.yml` (新建)
**Gitea Actions CI 流程:**
```yaml
# .gitea/workflows/ci.yml
name: CI
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: cd desktop && pnpm install
- run: cd desktop && pnpm tsc --noEmit
- run: cd desktop && pnpm eslint src/
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: cd desktop && pnpm install
- run: cd desktop && pnpm test:coverage
build:
runs-on: windows-latest
needs: [lint, test]
steps:
- uses: actions/checkout@v4
- run: cd desktop && pnpm install
- run: cd desktop && pnpm tauri:build
```
**配置步骤:**
1. Gitea 仓库设置中启用 Actions
2. 配置 RunnerWindows 用于构建
3. 创建 workflow 文件
#### 4.3 代码签名配置
> **决策:不需要代码签名**(应用不分发到公共渠道)
---
### 阶段 5文档与合规
#### 5.1 文档完整性
| 文档 | 状态 | 操作 |
|------|------|------|
| 用户手册 | 存在 | 更新版本号 |
| 开发文档 | 存在 | 无需更新 |
| 故障排查 | 完整 | 无需更新 |
| 部署文档 | 缺失 | 需创建 |
| 变更日志 | 缺失 | 需创建 |
#### 5.2 合规性检查
- [ ] 创建隐私政策
- [ ] 创建用户协议
- [ ] 第三方依赖声明
- [ ] 确认开源许可证合规
---
### 阶段 6上线准备
#### 6.1 应急预案
- 服务启动失败 检查端口占用重启服务
- WebSocket 断开 自动重连已实现
- LLM API 限流 降级到备用模型
- 数据库损坏 从备份恢复
#### 6.2 监控配置
- 应用启动时间监控
- API 响应时间监控
- 错误率监控
#### 6.3 备份策略
- 用户配置每次修改时备份
- 会话数据每小时备份
- 记忆向量每小时备份
---
## 执行优先级
| 优先级 | 任务 | 预估时间 |
|--------|------|---------|
| P0 | 完成 5 个开发中功能 | 3 |
| P0 | E2E 测试验证 | 0.5 |
| P0 | ESLint/Prettier 配置 | 0.5 |
| P0 | 高优先级 `any` 类型清理 | 1 |
| P1 | 测试覆盖率提升 | 2 |
| P1 | 部署文档编写 | 1 |
| P1 | Gitea CI/CD 配置 | 1 |
| P2 | 安全测试 | 1 |
| P2 | 性能测试 | 0.5 |
**总预估10-11 天**
---
## 验证方法
1. **功能验证**运行 `pnpm test:e2e`确保 74 E2E 测试全部通过
2. **代码质量**运行 `pnpm tsc --noEmit` `pnpm eslint src/`无错误
3. **测试覆盖**运行 `pnpm test:coverage`覆盖率 80%
4. **构建验证**运行 `pnpm tauri:build`生成可安装的 NSIS
---
## 关键文件路径
| 类别 | 文件路径 |
|------|---------|
| 核心客户端 | `desktop/src/lib/gateway-client.ts` |
| API 定义 | `desktop/src/lib/gateway-api.ts` |
| Tauri 后端 | `desktop/src-tauri/src/lib.rs` |
| 测试配置 | `desktop/vitest.config.ts` |
| E2E 测试 | `desktop/tests/e2e/specs/` |
| 故障排查文档 | `docs/knowledge-base/troubleshooting.md` |