Skip to content

Commit dca8b6e

Browse files
committed
chore: tighten maintenance and import safeguards
1 parent 8b0191e commit dca8b6e

20 files changed

Lines changed: 157 additions & 905 deletions

File tree

.gitignore

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
# Python
22
__pycache__/
3-
.trae/
43
*.py[cod]
54
*$py.class
65
*.so
@@ -51,29 +50,16 @@ config\\keys*.toml
5150
temp/
5251
tmp/
5352
*.tmp
53+
*.bak
54+
*.mdbak
5455
output/
5556
results/
5657

57-
5858
# OS
5959
projects/
6060
.DS_Store
6161
Thumbs.db
62-
.projects/CVE-2025-46725/
63-
.projects/CVE-2025-47789/
64-
.projects/CVE-2025-48683/
65-
.projects/CVE-2025-54381/
66-
.projects/CVE-2021-21985/
67-
.projects/CVE-2021-21985/
68-
projects/CVE-2021-21985/
69-
projects/CVE-2024-7099/
70-
projects/CVE-2025-54802/
71-
projects/CVE-2022-22817/
72-
projects/CVE-2024-10940/
73-
projects/CVE-2025-47789/
74-
projects/CVE-2025-46725/
75-
projects/CVE-2024-8412/
76-
projects/CVE*
62+
.projects/
7763
*.zip
7864
projects/*.zip
7965
projects/C_Qi

api/README.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
uvicorn api.server:app --host 127.0.0.1 --port 8000 --reload
3535
```
3636

37-
默认情况下,API 只绑定 `127.0.0.1`,项目导入只允许 `imports/` 目录下的源路径,并拒绝请求体中的构建命令。需要开放远程访问或构建命令时,请显式设置对应的 `API_*` 环境变量,并建议同时设置 `API_AUTH_TOKEN`
37+
默认情况下,API 只绑定 `127.0.0.1`,项目导入只允许 `imports/` 目录下的源路径,并拒绝请求体中的构建命令。需要开放远程访问或构建命令时,请显式设置对应的 `API_*` 环境变量,并建议同时设置 `API_AUTH_TOKEN`API 运行配置中,`API_*` 环境变量优先于 `config/keys.toml``[settings]` 默认值。
3838

3939
### API文档
4040

@@ -106,8 +106,11 @@ eventSource.onmessage = (event) => {
106106
## 测试
107107

108108
```bash
109-
# 测试SSE流式输出
110-
python test/test_sse_stream.py
109+
# 手工测试SSE流式输出(需要先启动 API 服务和可分析案例)
110+
python scripts/smoke_sse_stream.py
111+
112+
# 手工测试 CodeQL LSP 语法检查(需要本机 CodeQL/LSP 环境)
113+
python scripts/smoke_lsp_syntax.py
111114

112115
# 使用curl测试
113116
curl -N http://localhost:8000/api/analysis/{task_id}/stream

api/config.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
from __future__ import annotations
44

5-
import os
65
from pathlib import Path
76
from typing import List
87

@@ -110,22 +109,23 @@ def _load_keys_toml_settings() -> dict:
110109

111110

112111
def _create_config() -> APIConfig:
113-
"""创建配置实例,优先从 keys.toml 读取"""
114-
# 1. 从 keys.toml 读取 settings
112+
"""创建配置实例,API_* 环境变量优先,keys.toml 作为默认补充。"""
115113
toml_settings = _load_keys_toml_settings()
116-
117-
# 2. 构建配置字典(keys.toml 优先,环境变量次之)
118-
config_dict = {}
119-
120-
# Docker 构建配置
121-
if 'use_docker_for_cpp' in toml_settings:
122-
config_dict['use_docker_for_cpp'] = toml_settings['use_docker_for_cpp']
123-
124-
if 'docker_builder_image' in toml_settings:
125-
config_dict['docker_builder_image'] = toml_settings['docker_builder_image']
126-
127-
# 3. 创建配置实例(Pydantic 会自动处理环境变量覆盖)
128-
return APIConfig(**config_dict)
114+
env_config = APIConfig()
115+
116+
values = {}
117+
for key in (
118+
"prefer_local_cpp_build",
119+
"local_build_prepare_timeout",
120+
"use_docker_for_cpp",
121+
"docker_builder_image",
122+
):
123+
if key in toml_settings and key not in env_config.model_fields_set:
124+
values[key] = toml_settings[key]
125+
126+
if not values:
127+
return env_config
128+
return env_config.model_copy(update=values)
129129

130130

131131
# 全局配置实例

openspec/changes/refactor-package-architecture/design.md renamed to openspec/changes/archive/2026-06-02-refactor-package-architecture/design.md

File renamed without changes.

openspec/changes/refactor-package-architecture/proposal.md renamed to openspec/changes/archive/2026-06-02-refactor-package-architecture/proposal.md

File renamed without changes.

openspec/changes/refactor-package-architecture/specs/api/spec.md renamed to openspec/changes/archive/2026-06-02-refactor-package-architecture/specs/api/spec.md

File renamed without changes.

openspec/changes/refactor-package-architecture/specs/architecture/spec.md renamed to openspec/changes/archive/2026-06-02-refactor-package-architecture/specs/architecture/spec.md

File renamed without changes.

openspec/changes/refactor-package-architecture/specs/cli/spec.md renamed to openspec/changes/archive/2026-06-02-refactor-package-architecture/specs/cli/spec.md

File renamed without changes.

openspec/changes/refactor-package-architecture/tasks.md renamed to openspec/changes/archive/2026-06-02-refactor-package-architecture/tasks.md

File renamed without changes.

openspec/specs/api/spec.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,18 @@ shared validation, and user-facing error handling.
66
## Requirements
77
### Requirement: Shared Workflow Validation
88
The API SHALL use the same project import, analysis request validation, and
9-
error reporting rules as the CLI workflow services.
9+
error reporting rules as the CLI workflow services by delegating overlapping
10+
workflow behavior to shared application services instead of route-local helpers.
1011

1112
#### Scenario: Unsafe import path
1213
- **WHEN** an API request tries to import a source path outside the configured
1314
import root without explicit opt-in
1415
- **THEN** the API rejects the request with the same policy reason used by the
1516
CLI/service validation layer
17+
18+
#### Scenario: Shared analysis validation
19+
- **WHEN** an API request starts an analysis task for an invalid or unsafe case
20+
identifier
21+
- **THEN** the API returns the service-layer validation error mapped to the
22+
appropriate HTTP status code
23+
- **AND** equivalent CLI validation paths remain covered by regression tests

0 commit comments

Comments
 (0)