Columns
| Column | Type | Size | Nulls | Auto | Default | Children | Parents | Comments | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| id | serial | 10 | √ | nextval('pipeline_jobs_id_seq'::regclass) |
|
|
{“what”:“Unique integer identifier for each pipeline job.”,“why”:“Without it, jobs cannot be referenced or updated individually.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T04:17:29.898654932+00:00”} |
||||||||||||||||
| keyword | text | 2147483647 | null |
|
|
{“what”:“The search keyword or topic phrase that the job will produce content for.”,“why”:“Without it, the job has no subject to generate content about.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T04:17:29.920274569+00:00”} |
|||||||||||||||||
| content_type | text | 2147483647 | 'how_to'::text |
|
|
{“what”:“Content format type, e.g., ‘how_to’, ‘listicle’, ‘guide’.”,“why”:“Without it, the output format is unknown, so the generation template cannot be chosen.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T04:17:29.931987812+00:00”} |
|||||||||||||||||
| tone | text | 2147483647 | 'educational'::text |
|
|
{“what”:“Writing tone for the content, e.g., ‘educational’, ‘casual’, ‘professional’.”,“why”:“Without it, the style of the generated article is unspecified, affecting audience fit.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T04:17:29.963787404+00:00”} |
|||||||||||||||||
| target_word_count | int4 | 10 | √ | 2000 |
|
|
{“what”:“Desired length of the final article in words.”,“why”:“Without it, the generation process has no length target, leading to inconsistent output sizes.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T04:17:29.980847394+00:00”} |
||||||||||||||||
| current_step | text | 2147483647 | 'keyword_submitted'::text |
|
|
{“what”:“Current stage in the pipeline, e.g., ‘keyword_submitted’, ‘outline_created’, ‘draft_written’.”,“why”:“Without it, the job’s progress is unknown, so resuming or error recovery is impossible.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T04:17:30.006730047+00:00”} |
|||||||||||||||||
| revision_count | int4 | 10 | √ | 0 |
|
|
{“what”:“Number of revision cycles the job has undergone.”,“why”:“Without it, there is no limit or history of how many times the content was revised.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T04:17:30.047172342+00:00”} |
||||||||||||||||
| error | text | 2147483647 | √ | null |
|
|
{“what”:“Error message if the job failed, otherwise NULL.”,“why”:“Without it, failed jobs have no diagnostic information for debugging.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T04:17:30.121266864+00:00”} |
||||||||||||||||
| created_at | timestamptz | 35,6 | √ | now() |
|
|
{“what”:“Timestamp when the job was created, in UTC.”,“why”:“Without it, job age and ordering cannot be determined.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T04:17:30.162693670+00:00”} |
||||||||||||||||
| updated_at | timestamptz | 35,6 | √ | now() |
|
|
{“what”:“Timestamp of the last update to the job, in UTC.”,“why”:“Without it, stale jobs cannot be identified for cleanup or monitoring.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T04:17:30.199402264+00:00”} |
||||||||||||||||
| news_pack_id | int4 | 10 | √ | null |
|
|
{“what”:“Foreign key to a news pack, if this job is part of a batch.”,“why”:“Without it, jobs cannot be grouped into a news pack for coordinated processing.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T04:17:30.244521789+00:00”} |
Indexes
| Constraint Name | Type | Sort | Column(s) |
|---|---|---|---|
| pipeline_jobs_pkey | Primary key | Asc | id |
| idx_jobs_status | Performance | Asc | current_step |
Check Constraints
| Constraint Name | Constraint |
|---|---|
| pipeline_jobs_current_step_check | (current_step = ANY (ARRAY['keyword_submitted'::text, 'serp_researched'::text, 'content_extracted'::text, 'brief_created'::text, 'draft_generated'::text, 'quality_scored'::text, 'revision_complete'::text, 'published'::text, 'failed'::text])) |