feat(pending): app_name field and date-sharded pending storage

- Add optional app_name to PendingSubmission and prepare_submit_job,
  passed through PrepareSubmitJobRequest for user-provided tracking.
- Rewrite PendingStore to shard records by UTC date under
  data/pending_jobs/YYYY-MM-DD.json instead of a single monolithic
  pending_jobs.json.
- Legacy single-file pending_jobs.json remains readable; first save()
  migrates it and renames the old file to avoid double reads.
- Tests cover date sharding, multi-date list, legacy read, legacy
  migration, and app_name round-trip.
This commit is contained in:
Claude
2026-06-26 14:36:24 +08:00
parent c44e9bcc55
commit da9ba657f3
7 changed files with 163 additions and 35 deletions
+2
View File
@@ -68,6 +68,7 @@ def prepare_submit_job(
executor_memory: str = "4G",
executor_cores: int = 2,
num_executors: int = 2,
app_name: str | None = None,
) -> dict[str, object]:
"""Snapshot connection params and persist a PendingSubmission. Does NOT submit."""
logger.debug(
@@ -109,6 +110,7 @@ def prepare_submit_job(
pending_id = _new_pending_id()
pending = PendingSubmission(
pending_id=pending_id,
app_name=app_name,
connection=connection,
master=conn.master,
deploy_mode=conn.deploy_mode,