feat: improve resume optimization and import reliability

This commit is contained in:
hyp
2026-08-10 11:26:47 +08:00
parent 1c762fd092
commit d8db0d8792
35 changed files with 1861 additions and 661 deletions
+38
View File
@@ -56,8 +56,10 @@ class Settings:
embedding_batch_size: int = 32
openai_timeout_seconds: float = 30.0
openai_max_retries: int = 2
resume_import_timeout_seconds: float = 45.0
light_opt_rate_limit: int = 20
light_opt_rate_window_seconds: float = 3600.0
light_entry_timeout_seconds: float = 50.0
structured_output_retries: int = 1
structured_output_mode: str = "json_schema"
fallback_to_rules: bool = True
@@ -65,6 +67,12 @@ class Settings:
intent_model: str | None = None
knowledge_admin_token: str | None = field(default=None, repr=False)
database_url: str | None = field(default=None, repr=False)
database_pool_size: int = 10
database_max_overflow: int = 10
database_pool_timeout_seconds: float = 5.0
database_statement_timeout_ms: int = 10_000
database_lock_timeout_ms: int = 3_000
database_idle_transaction_timeout_ms: int = 15_000
offerpai_auth_base_url: str = "https://test.offerpai.com.cn"
offerpai_auth_timeout_seconds: float = 8.0
offerpai_auth_required: bool = True
@@ -140,6 +148,11 @@ def load_settings(env_file: str | Path | None = None) -> Settings:
openai_max_retries=_as_int(
"OPENAI_MAX_RETRIES", os.getenv("OPENAI_MAX_RETRIES"), 2
),
resume_import_timeout_seconds=_as_float(
"RESUME_AGENT_IMPORT_TIMEOUT_SECONDS",
os.getenv("RESUME_AGENT_IMPORT_TIMEOUT_SECONDS"),
45.0,
),
light_opt_rate_limit=_as_int(
"RESUME_AGENT_LIGHT_OPT_RATE_LIMIT",
os.getenv("RESUME_AGENT_LIGHT_OPT_RATE_LIMIT"),
@@ -150,6 +163,11 @@ def load_settings(env_file: str | Path | None = None) -> Settings:
os.getenv("RESUME_AGENT_LIGHT_OPT_RATE_WINDOW_SECONDS"),
3600.0,
),
light_entry_timeout_seconds=_as_float(
"RESUME_AGENT_LIGHT_ENTRY_TIMEOUT_SECONDS",
os.getenv("RESUME_AGENT_LIGHT_ENTRY_TIMEOUT_SECONDS"),
50.0,
),
structured_output_retries=_as_int(
"OPENAI_STRUCTURED_OUTPUT_RETRIES",
os.getenv("OPENAI_STRUCTURED_OUTPUT_RETRIES"),
@@ -163,6 +181,26 @@ def load_settings(env_file: str | Path | None = None) -> Settings:
intent_model=os.getenv("RESUME_AGENT_INTENT_MODEL", "").strip() or None,
knowledge_admin_token=os.getenv("KNOWLEDGE_ADMIN_TOKEN") or None,
database_url=os.getenv("DATABASE_URL") or None,
database_pool_size=_as_int(
"DATABASE_POOL_SIZE", os.getenv("DATABASE_POOL_SIZE"), 10
),
database_max_overflow=_as_int(
"DATABASE_MAX_OVERFLOW", os.getenv("DATABASE_MAX_OVERFLOW"), 10
),
database_pool_timeout_seconds=_as_float(
"DATABASE_POOL_TIMEOUT_SECONDS", os.getenv("DATABASE_POOL_TIMEOUT_SECONDS"), 5.0
),
database_statement_timeout_ms=_as_int(
"DATABASE_STATEMENT_TIMEOUT_MS", os.getenv("DATABASE_STATEMENT_TIMEOUT_MS"), 10_000
),
database_lock_timeout_ms=_as_int(
"DATABASE_LOCK_TIMEOUT_MS", os.getenv("DATABASE_LOCK_TIMEOUT_MS"), 3_000
),
database_idle_transaction_timeout_ms=_as_int(
"DATABASE_IDLE_TRANSACTION_TIMEOUT_MS",
os.getenv("DATABASE_IDLE_TRANSACTION_TIMEOUT_MS"),
15_000,
),
offerpai_auth_base_url=os.getenv(
"OFFERPAI_AUTH_BASE_URL", "https://test.offerpai.com.cn"
).rstrip("/"),