feat(ai-file): raise the per-file limit to 30MB on every environment
첨부 스펙이 20MB -> 30MB 로 변경됐다. 채팅 첨부(max_file_size_bytes)는 이미 dev/stg/prod 가 30MB 였고, 남아 있던 나머지를 맞춘다.
- agent_knowledge_max_file_size_bytes: local/dev/stg/prod 20971520 -> 31457280. 배경지식도 첨부와 같은 파일당 상한을 쓴다. env_model 기본값도 30MB.
- config_local 의 max_file_size_bytes 도 30MB. 로컬만 20MB 로 남으면 로컬에서 거부되는 파일이 dev 에선 통과해 동작이 갈린다.
- 사용자 노출 문구 AI-7403 / AI-7411 을 30MB 로 정정.
- 내부 예외 문구에 박혀 있던 "exceeds 20MB" 5곳(storage 4, parser 1)을 size_exceeded_message(max_bytes) 로 대체. 상한을 설정값에서 읽으므로 다음 스펙 변경 때 또 뒤처지지 않고, storage 는 호출부가 넘긴 max_bytes 를 그대로 써서 첨부/배경지식 각각의 상한을 정확히 표기한다.
- 상한 하드코딩 테스트를 설정값 기반으로 바꾸고, 30MB 를 못 박는 테스트를 첨부·배경지식 양쪽에 추가.
dev 의 agent_knowledge_es_managed_externally 도 true 로 함께 올린다. 개발환경 ES 롤오버 alias 구성이 끝나 앱이 인덱스를 만들지 않고 검증만 하면 된다.
배경지식 30MB 는 파싱 피크가 파일 크기에 비례해 올라간다. dev/stg/prod 는 agent_knowledge_inflight_count=1 로 동시 스테이징이 1건이지만, 30MB xlsx/pptx 로 메모리 재측정이 필요하다.
Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com