curo1305
ba48d625dd
feat(14-04): add analysis API routes and typed schemas
- POST /analysis/connections/{id}/estimate: scope estimate without bytes (T-14-04)
- POST /analysis/connections/{id}/jobs: enqueue job, returns job_id (ANALYZE-01)
- GET /analysis/jobs, GET /analysis/jobs/{id}: job status list and detail
- POST /analysis/jobs/{id}/cancel: batch cancel (queued items immediate; running cooperative)
- POST /analysis/jobs/{id}/items/{item_id}/cancel|skip|retry: per-item controls (ANALYZE-05)
- AnalysisEstimateRequest/Out, AnalysisEnqueueRequest/Out, AnalysisJobOut: typed schemas
- AnalysisJobOut: both simple (waiting/working/done/skipped/failed) and per-stage counts
- All routes use get_regular_user — admin blocked (T-14-01)
- Response schemas exclude credentials_enc, object_key, raw provider URLs (T-14-02)
- 14/14 test_cloud_analysis_api.py pass; 7 new analysis security tests pass (33/33 total)
2026-06-23 15:50:37 +02:00
..
2026-06-22 09:35:36 +02:00
2026-05-22 08:53:28 +02:00
2026-06-18 23:10:30 +02:00
2026-06-04 23:19:40 +02:00
2026-06-06 00:02:27 +02:00
2026-06-12 15:50:38 +02:00
2026-06-04 19:14:48 +02:00
2026-06-04 19:10:05 +02:00
2026-05-23 13:42:37 +02:00
2026-06-04 23:15:49 +02:00
2026-06-06 00:11:41 +02:00
2026-06-06 22:12:57 +02:00
2026-06-06 17:21:14 +02:00
2026-06-06 23:03:48 +02:00
2026-05-22 19:52:36 +02:00
2026-06-08 16:35:26 +02:00
2026-06-04 19:14:48 +02:00
2026-06-23 14:56:29 +02:00
2026-06-23 14:56:29 +02:00
2026-06-23 08:17:24 +02:00
2026-06-22 19:17:13 +02:00
2026-06-23 15:24:13 +02:00
2026-06-18 22:34:23 +02:00
2026-06-22 08:29:41 +02:00
2026-06-22 19:58:00 +02:00
2026-06-22 18:01:15 +02:00
2026-06-22 17:57:55 +02:00
2026-06-23 15:50:37 +02:00
2026-05-28 20:58:40 +02:00
2026-06-22 08:26:35 +02:00
2026-06-20 12:35:35 +02:00
2026-05-31 12:04:21 +02:00
2026-06-04 23:08:16 +02:00
2026-06-06 22:12:57 +02:00
2026-05-22 08:53:28 +02:00
2026-05-28 17:10:52 +02:00
2026-05-22 09:53:39 +02:00
2026-05-28 17:10:52 +02:00
2026-06-03 18:47:49 +02:00
2026-06-20 10:55:23 +02:00
2026-06-22 12:03:06 +02:00
2026-06-01 15:43:01 +02:00
2026-06-04 18:27:49 +02:00
2026-06-06 22:12:57 +02:00
2026-05-31 15:21:02 +02:00
2026-05-23 20:32:55 +02:00
2026-05-31 15:04:53 +02:00
2026-05-30 18:56:58 +02:00
2026-06-06 17:13:50 +02:00
2026-06-05 19:15:01 +02:00
2026-05-23 20:15:44 +02:00
2026-05-31 12:04:21 +02:00
2026-06-22 08:11:06 +02:00