I think this one was for the quote description field - but we got it wrong so we need to seatch and find the correct field......
This commit is contained in:
@@ -134,6 +134,55 @@ def update_job_description(session: requests.Session, job_uuid: str, payload: di
|
||||
raise RuntimeError(f"Job description update failed: HTTP {response.status_code} :: {response.text[:1000]}")
|
||||
|
||||
|
||||
def extract_company_name(job: Dict[str, Any]) -> str:
|
||||
related = job.get("related")
|
||||
if isinstance(related, dict):
|
||||
company = related.get("company")
|
||||
if isinstance(company, dict):
|
||||
company_name = clean_text(company.get("name"))
|
||||
if company_name:
|
||||
return company_name
|
||||
company = job.get("company")
|
||||
if isinstance(company, dict):
|
||||
company_name = clean_text(company.get("name"))
|
||||
if company_name:
|
||||
return company_name
|
||||
return first_text(job.get("company_name"), job.get("customer_name"))
|
||||
|
||||
|
||||
def upsert_job_metadata(conn: sqlite3.Connection, *, job_uuid: str, job: Dict[str, Any], source: str) -> None:
|
||||
job_uuid = clean_text(job_uuid or job.get("uuid"))
|
||||
if not job_uuid:
|
||||
return
|
||||
now = utc_now()
|
||||
conn.execute(
|
||||
"""
|
||||
INSERT INTO job_metadata (
|
||||
job_uuid, generated_job_id, job_address, company_name, raw_json,
|
||||
first_seen_at, last_seen_at, source
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
||||
ON CONFLICT(job_uuid) DO UPDATE SET
|
||||
generated_job_id = excluded.generated_job_id,
|
||||
job_address = excluded.job_address,
|
||||
company_name = excluded.company_name,
|
||||
raw_json = excluded.raw_json,
|
||||
last_seen_at = excluded.last_seen_at,
|
||||
source = excluded.source
|
||||
""",
|
||||
(
|
||||
job_uuid,
|
||||
clean_text(job.get("generated_job_id")),
|
||||
format_job_address(job),
|
||||
extract_company_name(job),
|
||||
json.dumps(job, ensure_ascii=False, sort_keys=True),
|
||||
now,
|
||||
now,
|
||||
source,
|
||||
),
|
||||
)
|
||||
conn.commit()
|
||||
|
||||
|
||||
def create_job_material(session: requests.Session, payload: dict) -> str:
|
||||
response = session.post(f"{BASE_URL}/jobmaterial.json", json=payload, timeout=REQUEST_TIMEOUT)
|
||||
if not response.ok:
|
||||
@@ -187,6 +236,21 @@ def get_conn(db_path: Path = POLL_DB_PATH) -> sqlite3.Connection:
|
||||
|
||||
|
||||
def init_apply_tables(conn: sqlite3.Connection) -> None:
|
||||
conn.execute(
|
||||
"""
|
||||
CREATE TABLE IF NOT EXISTS job_metadata (
|
||||
job_uuid TEXT PRIMARY KEY,
|
||||
generated_job_id TEXT,
|
||||
job_address TEXT,
|
||||
company_name TEXT,
|
||||
raw_json TEXT NOT NULL,
|
||||
first_seen_at TEXT NOT NULL,
|
||||
last_seen_at TEXT NOT NULL,
|
||||
source TEXT NOT NULL
|
||||
)
|
||||
"""
|
||||
)
|
||||
conn.execute("CREATE INDEX IF NOT EXISTS idx_job_metadata_generated_job_id ON job_metadata(generated_job_id)")
|
||||
conn.execute(
|
||||
"""
|
||||
CREATE TABLE IF NOT EXISTS quote_template_apply_runs (
|
||||
@@ -467,6 +531,8 @@ def main() -> int:
|
||||
|
||||
quote_description_source = clean_text(quote["description"])
|
||||
job_details = retrieve_job(session, job_uuid) if quote_description_source else {}
|
||||
if job_details:
|
||||
upsert_job_metadata(conn, job_uuid=job_uuid, job=job_details, source=mode)
|
||||
job_update_payload = build_job_update_payload(quote_description_source, job_details)
|
||||
job_update_record_payload = {
|
||||
"endpoint": f"/job/{job_uuid}.json",
|
||||
|
||||
Reference in New Issue
Block a user