DocumentImportLimits.java
package com.taxonomy.provenance.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/** Single source of truth for document upload, expansion, and LLM input limits. */
@Component
@ConfigurationProperties(prefix = "taxonomy.limits.document")
public class DocumentImportLimits {
private long maxUploadBytes = 50L * 1024 * 1024;
private int maxPdfPages = 500;
private int maxExtractedCharacters = 1_000_000;
private int maxCandidates = 2_000;
private int maxLlmCharacters = 200_000;
private long maxDocxEntryBytes = 64L * 1024 * 1024;
private long maxDocxTextBytes = 128L * 1024 * 1024;
private double minDocxInflateRatio = 0.01d;
public long getMaxUploadBytes() { return maxUploadBytes; }
public void setMaxUploadBytes(long maxUploadBytes) { this.maxUploadBytes = maxUploadBytes; }
public int getMaxPdfPages() { return maxPdfPages; }
public void setMaxPdfPages(int maxPdfPages) { this.maxPdfPages = maxPdfPages; }
public int getMaxExtractedCharacters() { return maxExtractedCharacters; }
public void setMaxExtractedCharacters(int maxExtractedCharacters) {
this.maxExtractedCharacters = maxExtractedCharacters;
}
public int getMaxCandidates() { return maxCandidates; }
public void setMaxCandidates(int maxCandidates) { this.maxCandidates = maxCandidates; }
public int getMaxLlmCharacters() { return maxLlmCharacters; }
public void setMaxLlmCharacters(int maxLlmCharacters) { this.maxLlmCharacters = maxLlmCharacters; }
public long getMaxDocxEntryBytes() { return maxDocxEntryBytes; }
public void setMaxDocxEntryBytes(long maxDocxEntryBytes) { this.maxDocxEntryBytes = maxDocxEntryBytes; }
public long getMaxDocxTextBytes() { return maxDocxTextBytes; }
public void setMaxDocxTextBytes(long maxDocxTextBytes) { this.maxDocxTextBytes = maxDocxTextBytes; }
public double getMinDocxInflateRatio() { return minDocxInflateRatio; }
public void setMinDocxInflateRatio(double minDocxInflateRatio) {
this.minDocxInflateRatio = minDocxInflateRatio;
}
}