# ana-code-test **Repository Path**: xiaoxuyu/ana-code-test ## Basic Information - **Project Name**: ana-code-test - **Description**: codex生成的结合opencode的代码变更分析域平台 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-01 - **Last Updated**: 2026-04-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 中国星网代码变更影响域分析平台 一个可直接运行的 Python Web 项目,用于在网页中提交 Git 仓库、分支和两个 commit, 后台调用 `opencode run` 生成正式的代码变更影响域分析报告,并输出可在线查看和下载的 HTML 网页版报告。 系统不依赖数据库,用户、角色和并发配置全部通过 YAML 配置文件热更新。 ## 技术栈 - FastAPI - Jinja2 模板 - 本地文件存储 - YAML 配置用户 - `opencode run --format json` - `pytest` 自动化测试 - Playwright 浏览器模拟测试 ## 已实现能力 - 登录鉴权,用户来自 `config/users.yaml` - 管理员界面新增/修改/删除用户,支持角色热配置 - 管理员查看全部任务,开发/普通账号仅查看本人任务 - 同一账号只允许单点登录,后登录会挤下前一个会话 - 同一用户同一时间只允许运行一个任务,且受全局并发上限保护 - 实时展示当前执行任务数,并发上限可在界面热配置 - 任务提交表单支持结构化“补充分析要求”输入,且除补充分析要求外其余字段均为必填 - 后台异步调用 `opencode run` - 任务列表和详情页可实时查看运行时长、最后活动时间和总耗时 - 每个任务独立工作目录,便于高并发下隔离仓库下载 - 仅生成 HTML 正式报告,支持内嵌预览、在线打开和下载 - 报告重点覆盖接口影响、字段契约变化、回归测试矩阵和上下游联测建议 - 管理员可一键清理历史任务缓存,仅删除临时仓库代码并保留报告与日志 - 管理员可查看和下载 `opencode` 事件日志与 stderr 运行日志 - 审计日志记录登录、提交、下载、任务执行结果 - 中国星网蓝色主题界面 ## 快速启动 ```bash python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload ``` 浏览器访问:`http://127.0.0.1:8000` 执行自动化测试: ```bash python3 -m playwright install chromium python3 -m pytest -q ``` ## 默认账号 - 用户名:`admin` - 密码:`admin123` 上线前请务必修改: ```bash python3 scripts/create_user.py --username admin --display-name 中国星网管理员 --role admin ``` ## 配置说明 `config/settings.yaml` - `secret_key`: 会话签名密钥,上线前必须替换,不允许保留默认值 - `opencode_bin`: `opencode` 可执行文件路径 - `opencode_model`: 可选,指定模型 - `opencode_agent`: 可选,指定 agent - `max_concurrent_jobs`: 最大并发任务数,界面最高支持配置到 8 - `storage_root`: 任务输出目录 - `log_file`: 审计日志文件 ## 目录说明 - `app/`: 后端代码 - `templates/`: 页面模板 - `static/`: 样式资源 - `storage/jobs/`: 任务目录、报告文件、opencode 原始事件 - `storage/logs/`: 审计日志 ## 运行说明 1. 登录系统。 2. 管理员可在“用户与权限”页面新增用户、配置角色和修改最大并发数。 3. 填写仓库地址、分支、老 commit、新 commit、仓库账号和仓库密码,这些字段均为必填。 4. 如有特别诉求,可按固定模板填写“补充分析要求”,重点描述业务背景、重点接口、重点字段、联测对象和补充说明。 4. 如有特别诉求,可自由填写“补充分析要求”,系统会把这些说明直接作为本次任务的定制提示词一并传给 `opencode run`。 5. 提交后系统会在后台执行 `opencode run --format json --dir ""`。 6. 当实时执行任务达到并发上限时,系统会禁止继续提交。 7. 管理员可在任务中心一键清理历史任务缓存,只删除 `workspace` 下的临时仓库代码。 8. 任务完成后可在详情页直接预览 HTML 报告,或打开独立网页版、下载 HTML 文件。 ## 生产部署建议 生产环境建议不要使用 `--reload`,启动方式改为: ```bash uvicorn app.main:app --host 0.0.0.0 --port 8000 ``` 上线前建议至少检查以下项目: 1. `config/settings.yaml` 中的 `secret_key` 已替换为随机高强度密钥。 2. `opencode_bin` 路径在目标服务器可执行,且对应账号具备仓库访问能力。 3. `config/users.yaml` 已删除默认口令,并保留至少一个管理员账号。 4. `max_concurrent_jobs` 按模型额度和机器资源设置,建议先从 `2-4` 起步压测。 5. 使用 `GET /healthz` 检查当前配置告警和运行态摘要,再开始对外开放。 6. 建议将 `storage/` 挂载到稳定磁盘,避免重启后日志与报告丢失。 ## 安全说明 - 仓库密码不会写入日志。 - 系统对仓库保持只读分析,不允许修改、删除仓库代码。 - 模型内部输出为结构化 Markdown 再转换为 HTML,最终用户侧只暴露 HTML 报告,不包含对话记录。 - 系统只负责调度 `opencode`,不自行计算代码影响。