← 전체 기능

프로젝트 지식v0.3.0에서 사용 가능

영향 지도

AI가 파일을 고치면 영향 지도가 관련 코드, 문서, 다시 돌릴 검사를 보여 준다. 결과는 pin, exec, link, mention 순서라서 바뀐 경로를 고정하거나 실행하는 게이트가 먼저 나온다. 지도는 HEAD와 입력에 묶여 있고, oah는 낡은 지도를 몰래 쓰지 않는다.

필요한 상황

“이 파일을 바꾸면 무엇을 다시 확인해야 하나?” 답이 없으면 작은 변경도 깨진 검사나 낡은 문서를 남기고, 어떤 검사를 다시 돌려야 하는지 아무도 모른다.

동작 방식

  1. oah impact <path>나 oah impact --changed-since origin/main을 실행한다. preflight, packet new, review도 먼저 지도를 새로 고친다.
  2. 정해진 규칙으로 pin > exec > link > mention 순서로 매긴다. pin과 exec 행은 CHECK나 EXPECT가 그 경로를 고정하거나 실행하는 원장의 게이트를 짚고, link 행은 그 경로를 적은 코드, 테스트, 워크플로, 위키 문서에서, mention 행은 이름이 같은 것, 함께 바뀐 파일, graphify가 있을 때의 그래프 이웃에서 나온다.
  3. 기본으로 들어 있는 SQL 플러그인이 마이그레이션에서 테이블, 뷰, 루틴, 트리거, 인덱스, GRANT를 읽고 코드와 이어 db_table:, db_routine:, db_grant: 항목으로 만든다.
  4. 지도는 워크트리마다 저장되고 HEAD, 스테이징된 색인, 지도가 읽는 파일, 게이트 원장, 설정, 도구 버전에 묶인다. 하나라도 바뀌면 낡은 지도가 되고, oah는 새로 만들거나 OAH_IMPACT_STALE로 거절한다.
  5. 질의 전에 원격의 기본 브랜치를 읽기 전용으로 가져와 지도를 하나 더 두고, 출력은 두 지도에 커밋 SHA를 붙인다.

예제

파일 하나나 브랜치의 변경이 무엇에 영향을 주는지 묻는다(개념 문서).

oah impact src/app.py
oah impact --changed-since origin/main

요구 사항

  • git 저장소. 첫 지도는 oah init이 만든다.
  • graphify는 선택이며 mention 이웃만 더한다.
  • 선택형 post-commit과 post-merge 훅이 명령 사이에도 지도를 최신으로 유지한다.

한계와 복구

  • --offline이거나 가져오기에 실패하면 마지막으로 가져온 기본 브랜치 커밋을 쓰고 낡았다고 표시한다.
  • SQL이 없는 프로젝트는 db-impact: unavailable이라고 밝힌다.
  • OAH_IMPACT_STALE이 나오면 메시지의 원인을 고치고 oah impact refresh를 실행한 뒤 다시 시도한다.
  • 반영할 때 기본 브랜치를 가져오거나 다시 평가하지 못하면 OAH_LAND_IMPACT_STALE이다. URL이나 절대 경로인 원격을 쓴다.
  • Jev로 영향 결과를 재정렬하는 기능은 아직 계획이며 제공 중인 기능이 아니다.

원문 문서

관련 기능