Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ OpinetClient를 native async 하나로 통합했다. 모든 조회·디버그에
- `opinet-api.md` 초기 명세서 작성. 공식 사이트 기준 5개 API 검증, 시도코드/필드 의미 정정.

### Changed
- Playwright 공개 화면 수집기의 기본 `timeout_ms`를 30초에서 60초로 늘렸다. 지연된
화면 응답을 기다리는 제한만 조정하며, 추가 요청·자동 재시도·접근 제한 우회는 하지 않는다.
- Playwright 지역별 화면 수집기의 기본 반복 주기를 8시간으로 조정하고, 하나의 반복 작업이 최근 24시간에 최대 3회만 실행되도록 제한.
- Windows/PowerShell 환경에서 `rg` 실행이 권한 문제로 실패할 때의 우회 명령(`git ls-files`, `Get-ChildItem -Recurse -File`, `Select-String`)을 문서화.
- 문서의 파일 위치 표기를 프로젝트 루트 기준 상대 경로로 고정하고, Python 내부 문서(docstring/주석)는 한글로 작성한다는 규칙을 추가.
3 changes: 3 additions & 0 deletions docs/browser-collection.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@ HTTP 오류·접근 거부·CAPTCHA 응답은 빈 결과로 바꾸지 않고 실
현재 문서와 응답이 모두 오피넷 HTTPS의 정확한 `/searRgSelect.do` 경로와 같은 query인지
확인한 뒤 그 HTML에서 차단 여부를 검사한다. 대기 시간은 collector의 `timeout_ms`를 따른다.
외부 주소·다른 화면으로의 이동과 일반 네트워크 오류는 복구 대상으로 취급하지 않는다.
기본 `timeout_ms`는 60초다. 이는 지연된 화면 갱신을 기다리는 상한일 뿐, 추가 요청이나
차단·CAPTCHA 응답에 대한 자동 재시도를 뜻하지 않는다. 더 짧거나 긴 제한이 필요한 호출자는
생성자 인자로 명시할 수 있다.

## 반복 수집과 부하 분산

Expand Down
2 changes: 2 additions & 0 deletions docs/implementation-status.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
운영 Chromium에서 검색 화면의 자동 이동 직후 이전 응답 본문이 없어지는 오류를
확인했다. 같은 출처·검색 문서의 현재 HTML만 대체 검사하도록 보완했으며,
차단 화면과 외부 이동, 관련 없는 네트워크 오류는 계속 실패로 처리한다.
운영 수집에서 일시적으로 지연된 화면 응답을 기다릴 수 있도록 collector의 기본
`timeout_ms`는 60초로 둔다. 이 변경은 요청 재시도나 접근 제한 우회를 추가하지 않는다.

공식 open API와 분리된 `opinet.experimental.OpinetBrowserCollector`를 추가했습니다.
Playwright로 지역별 공개 화면의 시도·시군구·읍면동 선택값을 읽고, 화면 조회 시
Expand Down
2 changes: 1 addition & 1 deletion src/opinet/experimental/browser.py
Original file line number Diff line number Diff line change
Expand Up @@ -760,7 +760,7 @@ def __init__(
url: str = "https://www.opinet.co.kr/searRgSelect.do",
headless: bool = True,
browser_channel: str | None = None,
timeout_ms: int = 30_000,
timeout_ms: int = 60_000,
query_level: BrowserQueryLevel = "sigungu",
throttle: OpinetBrowserThrottle | None = None,
rng: random.Random | None = None,
Expand Down
2 changes: 2 additions & 0 deletions tests/test_experimental_browser.py
Original file line number Diff line number Diff line change
Expand Up @@ -407,6 +407,8 @@ def test_browser_throttle_delays_when_daily_run_budget_is_reached():


def test_browser_collector_rejects_non_opinet_url():
assert OpinetBrowserCollector().timeout_ms == 60_000
assert OpinetBrowserCollector(timeout_ms=30_000).timeout_ms == 30_000
with pytest.raises(ValueError):
OpinetBrowserCollector(url="https://example.com/collector")
with pytest.raises(ValueError):
Expand Down
Loading