          table_name           |        column_name         |          data_type          | is_nullable |                        column_default                        
-------------------------------+----------------------------+-----------------------------+-------------+--------------------------------------------------------------
 bolt_details                  | id                         | integer                     | NO          | nextval('bolt_details_id_seq'::regclass)
 bolt_details                  | material_id                | integer                     | YES         | 
 bolt_details                  | file_id                    | integer                     | YES         | 
 bolt_details                  | bolt_type                  | character varying           | YES         | 
 bolt_details                  | thread_type                | character varying           | YES         | 
 bolt_details                  | diameter                   | character varying           | YES         | 
 bolt_details                  | length                     | character varying           | YES         | 
 bolt_details                  | material_standard          | character varying           | YES         | 
 bolt_details                  | material_grade             | character varying           | YES         | 
 bolt_details                  | coating_type               | character varying           | YES         | 
 bolt_details                  | pressure_rating            | character varying           | YES         | 
 bolt_details                  | includes_nut               | boolean                     | YES         | 
 bolt_details                  | includes_washer            | boolean                     | YES         | 
 bolt_details                  | nut_type                   | character varying           | YES         | 
 bolt_details                  | washer_type                | character varying           | YES         | 
 bolt_details                  | classification_confidence  | double precision            | YES         | 
 bolt_details                  | additional_info            | jsonb                       | YES         | 
 bolt_details                  | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 bolt_details                  | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 confirmed_purchase_items      | id                         | integer                     | NO          | nextval('confirmed_purchase_items_id_seq'::regclass)
 confirmed_purchase_items      | confirmation_id            | integer                     | YES         | 
 confirmed_purchase_items      | item_code                  | character varying           | NO          | 
 confirmed_purchase_items      | category                   | character varying           | NO          | 
 confirmed_purchase_items      | specification              | text                        | YES         | 
 confirmed_purchase_items      | size                       | character varying           | YES         | 
 confirmed_purchase_items      | material                   | character varying           | YES         | 
 confirmed_purchase_items      | bom_quantity               | numeric                     | NO          | 0
 confirmed_purchase_items      | calculated_qty             | numeric                     | NO          | 0
 confirmed_purchase_items      | unit                       | character varying           | NO          | 'EA'::character varying
 confirmed_purchase_items      | safety_factor              | numeric                     | NO          | 1.0
 confirmed_purchase_items      | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 files                         | id                         | integer                     | NO          | nextval('files_id_seq'::regclass)
 files                         | project_id                 | integer                     | YES         | 
 files                         | filename                   | character varying           | NO          | 
 files                         | original_filename          | character varying           | NO          | 
 files                         | file_path                  | character varying           | NO          | 
 files                         | revision                   | character varying           | YES         | 'Rev.0'::character varying
 files                         | upload_date                | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 files                         | uploaded_by                | character varying           | YES         | 
 files                         | file_type                  | character varying           | YES         | 
 files                         | file_size                  | integer                     | YES         | 
 files                         | is_active                  | boolean                     | YES         | true
 files                         | purchase_confirmed         | boolean                     | YES         | false
 files                         | confirmed_at               | timestamp without time zone | YES         | 
 files                         | confirmed_by               | character varying           | YES         | 
 files                         | job_no                     | character varying           | YES         | 
 files                         | bom_name                   | character varying           | YES         | 
 files                         | description                | text                        | YES         | 
 files                         | parsed_count               | integer                     | YES         | 0
 fitting_details               | id                         | integer                     | NO          | nextval('fitting_details_id_seq'::regclass)
 fitting_details               | material_id                | integer                     | YES         | 
 fitting_details               | file_id                    | integer                     | YES         | 
 fitting_details               | fitting_type               | character varying           | YES         | 
 fitting_details               | fitting_subtype            | character varying           | YES         | 
 fitting_details               | connection_method          | character varying           | YES         | 
 fitting_details               | connection_code            | character varying           | YES         | 
 fitting_details               | pressure_rating            | character varying           | YES         | 
 fitting_details               | max_pressure               | character varying           | YES         | 
 fitting_details               | manufacturing_method       | character varying           | YES         | 
 fitting_details               | material_standard          | character varying           | YES         | 
 fitting_details               | material_grade             | character varying           | YES         | 
 fitting_details               | material_type              | character varying           | YES         | 
 fitting_details               | main_size                  | character varying           | YES         | 
 fitting_details               | reduced_size               | character varying           | YES         | 
 fitting_details               | length_mm                  | numeric                     | YES         | 
 fitting_details               | schedule                   | character varying           | YES         | 
 fitting_details               | classification_confidence  | double precision            | YES         | 
 fitting_details               | additional_info            | jsonb                       | YES         | 
 fitting_details               | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 fitting_details               | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 flange_details                | id                         | integer                     | NO          | nextval('flange_details_id_seq'::regclass)
 flange_details                | material_id                | integer                     | YES         | 
 flange_details                | file_id                    | integer                     | YES         | 
 flange_details                | flange_type                | character varying           | YES         | 
 flange_details                | facing_type                | character varying           | YES         | 
 flange_details                | pressure_rating            | character varying           | YES         | 
 flange_details                | material_standard          | character varying           | YES         | 
 flange_details                | material_grade             | character varying           | YES         | 
 flange_details                | size_inches                | character varying           | YES         | 
 flange_details                | bolt_hole_count            | integer                     | YES         | 
 flange_details                | bolt_hole_size             | character varying           | YES         | 
 flange_details                | classification_confidence  | double precision            | YES         | 
 flange_details                | additional_info            | jsonb                       | YES         | 
 flange_details                | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 flange_details                | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 gasket_details                | id                         | integer                     | NO          | nextval('gasket_details_id_seq'::regclass)
 gasket_details                | material_id                | integer                     | YES         | 
 gasket_details                | file_id                    | integer                     | YES         | 
 gasket_details                | gasket_type                | character varying           | YES         | 
 gasket_details                | gasket_subtype             | character varying           | YES         | 
 gasket_details                | material_type              | character varying           | YES         | 
 gasket_details                | filler_material            | character varying           | YES         | 
 gasket_details                | size_inches                | character varying           | YES         | 
 gasket_details                | pressure_rating            | character varying           | YES         | 
 gasket_details                | thickness                  | character varying           | YES         | 
 gasket_details                | temperature_range          | character varying           | YES         | 
 gasket_details                | fire_safe                  | boolean                     | YES         | 
 gasket_details                | classification_confidence  | double precision            | YES         | 
 gasket_details                | additional_info            | jsonb                       | YES         | 
 gasket_details                | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 gasket_details                | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 instrument_details            | id                         | integer                     | NO          | nextval('instrument_details_id_seq'::regclass)
 instrument_details            | material_id                | integer                     | YES         | 
 instrument_details            | file_id                    | integer                     | YES         | 
 instrument_details            | instrument_type            | character varying           | YES         | 
 instrument_details            | instrument_subtype         | character varying           | YES         | 
 instrument_details            | measurement_type           | character varying           | YES         | 
 instrument_details            | measurement_range          | character varying           | YES         | 
 instrument_details            | accuracy                   | character varying           | YES         | 
 instrument_details            | connection_type            | character varying           | YES         | 
 instrument_details            | connection_size            | character varying           | YES         | 
 instrument_details            | body_material              | character varying           | YES         | 
 instrument_details            | wetted_parts_material      | character varying           | YES         | 
 instrument_details            | electrical_rating          | character varying           | YES         | 
 instrument_details            | output_signal              | character varying           | YES         | 
 instrument_details            | classification_confidence  | double precision            | YES         | 
 instrument_details            | additional_info            | jsonb                       | YES         | 
 instrument_details            | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 instrument_details            | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 jobs                          | job_no                     | character varying           | NO          | 
 jobs                          | job_name                   | character varying           | NO          | 
 jobs                          | client_name                | character varying           | NO          | 
 jobs                          | end_user                   | character varying           | YES         | 
 jobs                          | epc_company                | character varying           | YES         | 
 jobs                          | project_site               | character varying           | YES         | 
 jobs                          | contract_date              | date                        | YES         | 
 jobs                          | delivery_date              | date                        | YES         | 
 jobs                          | delivery_terms             | character varying           | YES         | 
 jobs                          | status                     | character varying           | YES         | '진행중'::character varying
 jobs                          | delivery_completed_date    | date                        | YES         | 
 jobs                          | project_closed_date        | date                        | YES         | 
 jobs                          | description                | text                        | YES         | 
 jobs                          | created_by                 | character varying           | YES         | 
 jobs                          | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 jobs                          | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 jobs                          | is_active                  | boolean                     | YES         | true
 jobs                          | updated_by                 | character varying           | YES         | 
 jobs                          | assigned_to                | character varying           | YES         | 
 jobs                          | project_type               | character varying           | NO          | '냉동기'::character varying
 login_logs                    | log_id                     | integer                     | NO          | nextval('login_logs_log_id_seq'::regclass)
 login_logs                    | user_id                    | integer                     | YES         | 
 login_logs                    | login_time                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 login_logs                    | ip_address                 | character varying           | YES         | 
 login_logs                    | user_agent                 | text                        | YES         | 
 login_logs                    | login_status               | character varying           | YES         | 
 login_logs                    | failure_reason             | character varying           | YES         | 
 login_logs                    | session_duration           | integer                     | YES         | 
 login_logs                    | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 material_categories           | id                         | integer                     | NO          | nextval('material_categories_id_seq'::regclass)
 material_categories           | standard_id                | integer                     | YES         | 
 material_categories           | category_code              | character varying           | NO          | 
 material_categories           | category_name              | character varying           | NO          | 
 material_categories           | description                | text                        | YES         | 
 material_categories           | is_active                  | boolean                     | YES         | true
 material_categories           | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 material_categories           | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 material_comparison_details   | id                         | integer                     | NO          | nextval('material_comparison_details_id_seq'::regclass)
 material_comparison_details   | comparison_id              | integer                     | NO          | 
 material_comparison_details   | material_hash              | character varying           | NO          | 
 material_comparison_details   | change_type                | character varying           | NO          | 
 material_comparison_details   | description                | text                        | NO          | 
 material_comparison_details   | size_spec                  | character varying           | YES         | 
 material_comparison_details   | material_grade             | character varying           | YES         | 
 material_comparison_details   | previous_quantity          | numeric                     | YES         | 0
 material_comparison_details   | current_quantity           | numeric                     | YES         | 0
 material_comparison_details   | quantity_diff              | numeric                     | YES         | 0
 material_comparison_details   | additional_purchase_needed | numeric                     | YES         | 0
 material_comparison_details   | classified_category        | character varying           | YES         | 
 material_comparison_details   | classification_confidence  | numeric                     | YES         | 
 material_comparison_details   | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 material_grades               | id                         | integer                     | NO          | nextval('material_grades_id_seq'::regclass)
 material_grades               | specification_id           | integer                     | YES         | 
 material_grades               | grade_code                 | character varying           | NO          | 
 material_grades               | grade_name                 | character varying           | YES         | 
 material_grades               | composition                | character varying           | YES         | 
 material_grades               | applications               | character varying           | YES         | 
 material_grades               | temp_max                   | character varying           | YES         | 
 material_grades               | temp_range                 | character varying           | YES         | 
 material_grades               | yield_strength             | character varying           | YES         | 
 material_grades               | tensile_strength           | character varying           | YES         | 
 material_grades               | corrosion_resistance       | character varying           | YES         | 
 material_grades               | stabilizer                 | character varying           | YES         | 
 material_grades               | base_grade                 | character varying           | YES         | 
 material_grades               | is_active                  | boolean                     | YES         | true
 material_grades               | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 material_grades               | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 material_patterns             | id                         | integer                     | NO          | nextval('material_patterns_id_seq'::regclass)
 material_patterns             | specification_id           | integer                     | YES         | 
 material_patterns             | pattern                    | text                        | NO          | 
 material_patterns             | description                | character varying           | YES         | 
 material_patterns             | priority                   | integer                     | YES         | 1
 material_patterns             | is_active                  | boolean                     | YES         | true
 material_patterns             | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 material_patterns             | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 material_purchase_mapping     | id                         | integer                     | NO          | nextval('material_purchase_mapping_id_seq'::regclass)
 material_purchase_mapping     | material_id                | integer                     | NO          | 
 material_purchase_mapping     | purchase_item_id           | integer                     | NO          | 
 material_purchase_mapping     | quantity_ratio             | numeric                     | YES         | 1.0
 material_purchase_mapping     | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 material_purchase_tracking    | id                         | integer                     | NO          | nextval('material_purchase_tracking_id_seq'::regclass)
 material_purchase_tracking    | material_hash              | character varying           | NO          | 
 material_purchase_tracking    | original_description       | text                        | NO          | 
 material_purchase_tracking    | size_spec                  | character varying           | YES         | 
 material_purchase_tracking    | material_grade             | character varying           | YES         | 
 material_purchase_tracking    | bom_quantity               | numeric                     | NO          | 
 material_purchase_tracking    | confirmed_quantity         | numeric                     | YES         | 
 material_purchase_tracking    | purchase_quantity          | numeric                     | YES         | 
 material_purchase_tracking    | status                     | character varying           | YES         | 'pending'::character varying
 material_purchase_tracking    | confirmed_by               | character varying           | YES         | 
 material_purchase_tracking    | confirmed_at               | timestamp without time zone | YES         | 
 material_purchase_tracking    | ordered_by                 | character varying           | YES         | 
 material_purchase_tracking    | ordered_at                 | timestamp without time zone | YES         | 
 material_purchase_tracking    | approved_by                | character varying           | YES         | 
 material_purchase_tracking    | approved_at                | timestamp without time zone | YES         | 
 material_purchase_tracking    | job_no                     | character varying           | YES         | 
 material_purchase_tracking    | revision                   | character varying           | YES         | 
 material_purchase_tracking    | file_id                    | integer                     | YES         | 
 material_purchase_tracking    | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 material_purchase_tracking    | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 material_revisions_comparison | id                         | integer                     | NO          | nextval('material_revisions_comparison_id_seq'::regclass)
 material_revisions_comparison | job_no                     | character varying           | NO          | 
 material_revisions_comparison | current_revision           | character varying           | NO          | 
 material_revisions_comparison | previous_revision          | character varying           | NO          | 
 material_revisions_comparison | current_file_id            | integer                     | NO          | 
 material_revisions_comparison | previous_file_id           | integer                     | NO          | 
 material_revisions_comparison | total_current_items        | integer                     | YES         | 0
 material_revisions_comparison | total_previous_items       | integer                     | YES         | 0
 material_revisions_comparison | new_items_count            | integer                     | YES         | 0
 material_revisions_comparison | modified_items_count       | integer                     | YES         | 0
 material_revisions_comparison | removed_items_count        | integer                     | YES         | 0
 material_revisions_comparison | unchanged_items_count      | integer                     | YES         | 0
 material_revisions_comparison | comparison_details         | jsonb                       | YES         | 
 material_revisions_comparison | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 material_revisions_comparison | created_by                 | character varying           | YES         | 
 material_specifications       | id                         | integer                     | NO          | nextval('material_specifications_id_seq'::regclass)
 material_specifications       | category_id                | integer                     | YES         | 
 material_specifications       | spec_code                  | character varying           | NO          | 
 material_specifications       | spec_name                  | character varying           | NO          | 
 material_specifications       | description                | text                        | YES         | 
 material_specifications       | material_type              | character varying           | YES         | 
 material_specifications       | manufacturing              | character varying           | YES         | 
 material_specifications       | pressure_rating            | character varying           | YES         | 
 material_specifications       | is_active                  | boolean                     | YES         | true
 material_specifications       | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 material_specifications       | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 material_standards            | id                         | integer                     | NO          | nextval('material_standards_id_seq'::regclass)
 material_standards            | standard_code              | character varying           | NO          | 
 material_standards            | standard_name              | character varying           | NO          | 
 material_standards            | description                | text                        | YES         | 
 material_standards            | country                    | character varying           | YES         | 
 material_standards            | is_active                  | boolean                     | YES         | true
 material_standards            | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 material_standards            | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 material_tubing_mapping       | id                         | integer                     | NO          | nextval('material_tubing_mapping_id_seq'::regclass)
 material_tubing_mapping       | material_id                | integer                     | YES         | 
 material_tubing_mapping       | tubing_product_id          | integer                     | YES         | 
 material_tubing_mapping       | confidence_score           | numeric                     | YES         | 
 material_tubing_mapping       | mapping_method             | character varying           | YES         | 
 material_tubing_mapping       | mapped_by                  | character varying           | YES         | 
 material_tubing_mapping       | mapped_at                  | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 material_tubing_mapping       | required_length_m          | numeric                     | YES         | 
 material_tubing_mapping       | calculated_quantity        | numeric                     | YES         | 
 material_tubing_mapping       | is_verified                | boolean                     | YES         | false
 material_tubing_mapping       | verified_by                | character varying           | YES         | 
 material_tubing_mapping       | verified_at                | timestamp without time zone | YES         | 
 material_tubing_mapping       | notes                      | text                        | YES         | 
 material_tubing_mapping       | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 materials                     | id                         | integer                     | NO          | nextval('materials_id_seq'::regclass)
 materials                     | file_id                    | integer                     | YES         | 
 materials                     | line_number                | integer                     | YES         | 
 materials                     | original_description       | text                        | NO          | 
 materials                     | classified_category        | character varying           | YES         | 
 materials                     | classified_subcategory     | character varying           | YES         | 
 materials                     | material_grade             | character varying           | YES         | 
 materials                     | schedule                   | character varying           | YES         | 
 materials                     | size_spec                  | character varying           | YES         | 
 materials                     | quantity                   | numeric                     | NO          | 
 materials                     | unit                       | character varying           | NO          | 
 materials                     | drawing_name               | character varying           | YES         | 
 materials                     | area_code                  | character varying           | YES         | 
 materials                     | line_no                    | character varying           | YES         | 
 materials                     | classification_confidence  | numeric                     | YES         | 
 materials                     | classification_details     | jsonb                       | YES         | 
 materials                     | is_verified                | boolean                     | YES         | false
 materials                     | verified_by                | character varying           | YES         | 
 materials                     | verified_at                | timestamp without time zone | YES         | 
 materials                     | drawing_reference          | character varying           | YES         | 
 materials                     | notes                      | text                        | YES         | 
 materials                     | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 materials                     | main_nom                   | character varying           | YES         | 
 materials                     | red_nom                    | character varying           | YES         | 
 materials                     | full_material_grade        | text                        | YES         | 
 materials                     | row_number                 | integer                     | YES         | 
 materials                     | length                     | numeric                     | YES         | 
 materials                     | purchase_confirmed         | boolean                     | YES         | false
 materials                     | confirmed_quantity         | numeric                     | YES         | 
 materials                     | purchase_status            | character varying           | YES         | 
 materials                     | purchase_confirmed_by      | character varying           | YES         | 
 materials                     | purchase_confirmed_at      | timestamp without time zone | YES         | 
 materials                     | revision_status            | character varying           | YES         | 
 materials                     | material_hash              | character varying           | YES         | 
 materials                     | normalized_description     | text                        | YES         | 
 materials                     | brand                      | character varying           | YES         | 
 materials                     | user_requirement           | text                        | YES         | 
 materials                     | is_active                  | boolean                     | YES         | true
 materials                     | total_length               | numeric                     | YES         | 
 permissions                   | permission_id              | integer                     | NO          | nextval('permissions_permission_id_seq'::regclass)
 permissions                   | permission_name            | character varying           | NO          | 
 permissions                   | description                | text                        | YES         | 
 permissions                   | module                     | character varying           | YES         | 
 permissions                   | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 pipe_details                  | id                         | integer                     | NO          | nextval('pipe_details_id_seq'::regclass)
 pipe_details                  | material_id                | integer                     | YES         | 
 pipe_details                  | file_id                    | integer                     | YES         | 
 pipe_details                  | outer_diameter             | character varying           | YES         | 
 pipe_details                  | schedule                   | character varying           | YES         | 
 pipe_details                  | material_spec              | character varying           | YES         | 
 pipe_details                  | manufacturing_method       | character varying           | YES         | 
 pipe_details                  | end_preparation            | character varying           | YES         | 
 pipe_details                  | length_mm                  | numeric                     | YES         | 
 pipe_details                  | classification_confidence  | double precision            | YES         | 
 pipe_details                  | additional_info            | jsonb                       | YES         | 
 pipe_details                  | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 pipe_details                  | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 pipe_end_preparations         | id                         | integer                     | NO          | nextval('pipe_end_preparations_id_seq'::regclass)
 pipe_end_preparations         | material_id                | integer                     | NO          | 
 pipe_end_preparations         | file_id                    | integer                     | NO          | 
 pipe_end_preparations         | end_preparation_type       | character varying           | YES         | 'PBE'::character varying
 pipe_end_preparations         | end_preparation_code       | character varying           | YES         | 
 pipe_end_preparations         | machining_required         | boolean                     | YES         | false
 pipe_end_preparations         | cutting_note               | text                        | YES         | 
 pipe_end_preparations         | original_description       | text                        | NO          | 
 pipe_end_preparations         | clean_description          | text                        | NO          | 
 pipe_end_preparations         | confidence                 | double precision            | YES         | 0.0
 pipe_end_preparations         | matched_pattern            | character varying           | YES         | 
 pipe_end_preparations         | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 pipe_end_preparations         | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 projects                      | id                         | integer                     | NO          | nextval('projects_id_seq'::regclass)
 projects                      | official_project_code      | character varying           | YES         | 
 projects                      | project_name               | character varying           | NO          | 
 projects                      | client_name                | character varying           | YES         | 
 projects                      | design_project_code        | character varying           | YES         | 
 projects                      | design_project_name        | character varying           | YES         | 
 projects                      | is_code_matched            | boolean                     | YES         | false
 projects                      | matched_by                 | character varying           | YES         | 
 projects                      | matched_at                 | timestamp without time zone | YES         | 
 projects                      | status                     | character varying           | YES         | 'active'::character varying
 projects                      | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 projects                      | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 projects                      | description                | text                        | YES         | 
 projects                      | notes                      | text                        | YES         | 
 purchase_confirmations        | id                         | integer                     | NO          | nextval('purchase_confirmations_id_seq'::regclass)
 purchase_confirmations        | job_no                     | character varying           | NO          | 
 purchase_confirmations        | file_id                    | integer                     | YES         | 
 purchase_confirmations        | bom_name                   | character varying           | NO          | 
 purchase_confirmations        | revision                   | character varying           | NO          | 'Rev.0'::character varying
 purchase_confirmations        | confirmed_at               | timestamp without time zone | NO          | 
 purchase_confirmations        | confirmed_by               | character varying           | NO          | 
 purchase_confirmations        | is_active                  | boolean                     | NO          | true
 purchase_confirmations        | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 purchase_confirmations        | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 purchase_items                | id                         | integer                     | NO          | nextval('purchase_items_id_seq'::regclass)
 purchase_items                | item_code                  | character varying           | NO          | 
 purchase_items                | category                   | character varying           | NO          | 
 purchase_items                | specification              | text                        | NO          | 
 purchase_items                | material_spec              | character varying           | YES         | 
 purchase_items                | size_spec                  | character varying           | YES         | 
 purchase_items                | unit                       | character varying           | NO          | 
 purchase_items                | bom_quantity               | numeric                     | NO          | 
 purchase_items                | safety_factor              | numeric                     | YES         | 1.10
 purchase_items                | minimum_order_qty          | numeric                     | YES         | 0
 purchase_items                | order_unit_qty             | numeric                     | YES         | 1
 purchase_items                | calculated_qty             | numeric                     | YES         | 
 purchase_items                | cutting_loss               | numeric                     | YES         | 0
 purchase_items                | standard_length            | numeric                     | YES         | 
 purchase_items                | pipes_count                | integer                     | YES         | 
 purchase_items                | waste_length               | numeric                     | YES         | 
 purchase_items                | detailed_spec              | jsonb                       | YES         | 
 purchase_items                | preferred_supplier         | character varying           | YES         | 
 purchase_items                | last_unit_price            | numeric                     | YES         | 
 purchase_items                | currency                   | character varying           | YES         | 'KRW'::character varying
 purchase_items                | lead_time_days             | integer                     | YES         | 30
 purchase_items                | job_no                     | character varying           | NO          | 
 purchase_items                | revision                   | character varying           | YES         | 'Rev.0'::character varying
 purchase_items                | file_id                    | integer                     | YES         | 
 purchase_items                | is_active                  | boolean                     | YES         | true
 purchase_items                | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 purchase_items                | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 purchase_items                | created_by                 | character varying           | YES         | 
 purchase_items                | updated_by                 | character varying           | YES         | 
 purchase_items                | approved_by                | character varying           | YES         | 
 purchase_items                | approved_at                | timestamp without time zone | YES         | 
 purchase_request_items        | item_id                    | integer                     | NO          | nextval('purchase_request_items_item_id_seq'::regclass)
 purchase_request_items        | request_id                 | integer                     | YES         | 
 purchase_request_items        | material_id                | integer                     | YES         | 
 purchase_request_items        | description                | text                        | NO          | 
 purchase_request_items        | category                   | character varying           | YES         | 
 purchase_request_items        | subcategory                | character varying           | YES         | 
 purchase_request_items        | material_grade             | character varying           | YES         | 
 purchase_request_items        | size_spec                  | character varying           | YES         | 
 purchase_request_items        | quantity                   | numeric                     | NO          | 
 purchase_request_items        | unit                       | character varying           | NO          | 
 purchase_request_items        | drawing_name               | character varying           | YES         | 
 purchase_request_items        | notes                      | text                        | YES         | 
 purchase_request_items        | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 purchase_requests             | request_id                 | integer                     | NO          | nextval('purchase_requests_request_id_seq'::regclass)
 purchase_requests             | request_no                 | character varying           | NO          | 
 purchase_requests             | job_no                     | character varying           | NO          | 
 purchase_requests             | project_name               | character varying           | YES         | 
 purchase_requests             | requested_by               | integer                     | YES         | 
 purchase_requests             | requested_by_username      | character varying           | YES         | 
 purchase_requests             | request_date               | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 purchase_requests             | status                     | character varying           | YES         | 'pending'::character varying
 purchase_requests             | total_items                | integer                     | YES         | 0
 purchase_requests             | notes                      | text                        | YES         | 
 purchase_requests             | approved_by                | integer                     | YES         | 
 purchase_requests             | approved_by_username       | character varying           | YES         | 
 purchase_requests             | approved_at                | timestamp without time zone | YES         | 
 purchase_requests             | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 purchase_requests             | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 purchase_requests             | file_id                    | integer                     | YES         | 
 requirement_types             | id                         | integer                     | NO          | nextval('requirement_types_id_seq'::regclass)
 requirement_types             | type_code                  | character varying           | NO          | 
 requirement_types             | type_name                  | character varying           | NO          | 
 requirement_types             | category                   | character varying           | NO          | 
 requirement_types             | description                | text                        | YES         | 
 requirement_types             | is_active                  | boolean                     | YES         | true
 requirement_types             | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 role_permissions              | role_permission_id         | integer                     | NO          | nextval('role_permissions_role_permission_id_seq'::regclass)
 role_permissions              | role                       | character varying           | NO          | 
 role_permissions              | permission_id              | integer                     | YES         | 
 role_permissions              | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 special_material_details      | id                         | integer                     | NO          | nextval('special_material_details_id_seq'::regclass)
 special_material_details      | material_id                | integer                     | YES         | 
 special_material_details      | file_id                    | integer                     | YES         | 
 special_material_details      | special_type               | character varying           | YES         | 
 special_material_details      | special_subtype            | character varying           | YES         | 
 special_material_details      | material_standard          | character varying           | YES         | 
 special_material_details      | material_grade             | character varying           | YES         | 
 special_material_details      | specifications             | text                        | YES         | 
 special_material_details      | dimensions                 | character varying           | YES         | 
 special_material_details      | weight_kg                  | numeric                     | YES         | 
 special_material_details      | classification_confidence  | numeric                     | YES         | 
 special_material_details      | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 special_material_details      | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 special_material_grades       | id                         | integer                     | NO          | nextval('special_material_grades_id_seq'::regclass)
 special_material_grades       | material_id                | integer                     | YES         | 
 special_material_grades       | grade_code                 | character varying           | NO          | 
 special_material_grades       | composition                | character varying           | YES         | 
 special_material_grades       | applications               | character varying           | YES         | 
 special_material_grades       | temp_max                   | character varying           | YES         | 
 special_material_grades       | strength                   | character varying           | YES         | 
 special_material_grades       | purity                     | character varying           | YES         | 
 special_material_grades       | corrosion                  | character varying           | YES         | 
 special_material_grades       | is_active                  | boolean                     | YES         | true
 special_material_grades       | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 special_material_grades       | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 special_material_patterns     | id                         | integer                     | NO          | nextval('special_material_patterns_id_seq'::regclass)
 special_material_patterns     | material_id                | integer                     | YES         | 
 special_material_patterns     | pattern                    | text                        | NO          | 
 special_material_patterns     | description                | character varying           | YES         | 
 special_material_patterns     | priority                   | integer                     | YES         | 1
 special_material_patterns     | is_active                  | boolean                     | YES         | true
 special_material_patterns     | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 special_material_patterns     | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 special_materials             | id                         | integer                     | NO          | nextval('special_materials_id_seq'::regclass)
 special_materials             | material_type              | character varying           | NO          | 
 special_materials             | material_name              | character varying           | NO          | 
 special_materials             | description                | text                        | YES         | 
 special_materials             | composition                | character varying           | YES         | 
 special_materials             | applications               | text                        | YES         | 
 special_materials             | temp_max                   | character varying           | YES         | 
 special_materials             | manufacturing              | character varying           | YES         | 
 special_materials             | is_active                  | boolean                     | YES         | true
 special_materials             | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 special_materials             | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 support_details               | id                         | integer                     | NO          | nextval('support_details_id_seq'::regclass)
 support_details               | material_id                | integer                     | YES         | 
 support_details               | file_id                    | integer                     | YES         | 
 support_details               | support_type               | character varying           | YES         | 
 support_details               | support_subtype            | character varying           | YES         | 
 support_details               | load_rating                | character varying           | YES         | 
 support_details               | load_capacity              | character varying           | YES         | 
 support_details               | material_standard          | character varying           | YES         | 
 support_details               | material_grade             | character varying           | YES         | 
 support_details               | pipe_size                  | character varying           | YES         | 
 support_details               | length_mm                  | numeric                     | YES         | 
 support_details               | width_mm                   | numeric                     | YES         | 
 support_details               | height_mm                  | numeric                     | YES         | 
 support_details               | classification_confidence  | numeric                     | YES         | 
 support_details               | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 support_details               | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 tubing_categories             | id                         | integer                     | NO          | nextval('tubing_categories_id_seq'::regclass)
 tubing_categories             | category_code              | character varying           | NO          | 
 tubing_categories             | category_name              | character varying           | NO          | 
 tubing_categories             | description                | text                        | YES         | 
 tubing_categories             | is_active                  | boolean                     | YES         | true
 tubing_categories             | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 tubing_categories             | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 tubing_manufacturers          | id                         | integer                     | NO          | nextval('tubing_manufacturers_id_seq'::regclass)
 tubing_manufacturers          | manufacturer_code          | character varying           | NO          | 
 tubing_manufacturers          | manufacturer_name          | character varying           | NO          | 
 tubing_manufacturers          | country                    | character varying           | YES         | 
 tubing_manufacturers          | website                    | character varying           | YES         | 
 tubing_manufacturers          | contact_info               | jsonb                       | YES         | 
 tubing_manufacturers          | quality_certs              | jsonb                       | YES         | 
 tubing_manufacturers          | is_active                  | boolean                     | YES         | true
 tubing_manufacturers          | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 tubing_manufacturers          | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 tubing_products               | id                         | integer                     | NO          | nextval('tubing_products_id_seq'::regclass)
 tubing_products               | specification_id           | integer                     | YES         | 
 tubing_products               | manufacturer_id            | integer                     | YES         | 
 tubing_products               | manufacturer_part_number   | character varying           | NO          | 
 tubing_products               | manufacturer_product_name  | character varying           | YES         | 
 tubing_products               | list_price                 | numeric                     | YES         | 
 tubing_products               | currency                   | character varying           | YES         | 'KRW'::character varying
 tubing_products               | lead_time_days             | integer                     | YES         | 
 tubing_products               | minimum_order_qty          | numeric                     | YES         | 
 tubing_products               | standard_packaging_qty     | numeric                     | YES         | 
 tubing_products               | availability_status        | character varying           | YES         | 
 tubing_products               | last_price_update          | date                        | YES         | 
 tubing_products               | datasheet_url              | character varying           | YES         | 
 tubing_products               | catalog_page               | character varying           | YES         | 
 tubing_products               | notes                      | text                        | YES         | 
 tubing_products               | is_active                  | boolean                     | YES         | true
 tubing_products               | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 tubing_products               | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 tubing_specifications         | id                         | integer                     | NO          | nextval('tubing_specifications_id_seq'::regclass)
 tubing_specifications         | category_id                | integer                     | YES         | 
 tubing_specifications         | spec_code                  | character varying           | NO          | 
 tubing_specifications         | spec_name                  | character varying           | NO          | 
 tubing_specifications         | outer_diameter_mm          | numeric                     | YES         | 
 tubing_specifications         | wall_thickness_mm          | numeric                     | YES         | 
 tubing_specifications         | inner_diameter_mm          | numeric                     | YES         | 
 tubing_specifications         | material_grade             | character varying           | YES         | 
 tubing_specifications         | material_standard          | character varying           | YES         | 
 tubing_specifications         | max_pressure_bar           | numeric                     | YES         | 
 tubing_specifications         | max_temperature_c          | numeric                     | YES         | 
 tubing_specifications         | min_temperature_c          | numeric                     | YES         | 
 tubing_specifications         | standard_length_m          | numeric                     | YES         | 
 tubing_specifications         | bend_radius_min_mm         | numeric                     | YES         | 
 tubing_specifications         | surface_finish             | character varying           | YES         | 
 tubing_specifications         | hardness                   | character varying           | YES         | 
 tubing_specifications         | notes                      | text                        | YES         | 
 tubing_specifications         | is_active                  | boolean                     | YES         | true
 tubing_specifications         | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 tubing_specifications         | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 user_activity_logs            | id                         | integer                     | NO          | nextval('user_activity_logs_id_seq'::regclass)
 user_activity_logs            | user_id                    | integer                     | YES         | 
 user_activity_logs            | username                   | character varying           | NO          | 
 user_activity_logs            | activity_type              | character varying           | NO          | 
 user_activity_logs            | activity_description       | text                        | YES         | 
 user_activity_logs            | target_id                  | integer                     | YES         | 
 user_activity_logs            | target_type                | character varying           | YES         | 
 user_activity_logs            | ip_address                 | character varying           | YES         | 
 user_activity_logs            | user_agent                 | text                        | YES         | 
 user_activity_logs            | metadata                   | jsonb                       | YES         | 
 user_activity_logs            | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 user_requirements             | id                         | integer                     | NO          | nextval('user_requirements_id_seq'::regclass)
 user_requirements             | file_id                    | integer                     | NO          | 
 user_requirements             | material_id                | integer                     | YES         | 
 user_requirements             | requirement_type           | character varying           | NO          | 
 user_requirements             | requirement_title          | character varying           | NO          | 
 user_requirements             | requirement_description    | text                        | YES         | 
 user_requirements             | requirement_spec           | text                        | YES         | 
 user_requirements             | status                     | character varying           | YES         | 'PENDING'::character varying
 user_requirements             | priority                   | character varying           | YES         | 'NORMAL'::character varying
 user_requirements             | assigned_to                | character varying           | YES         | 
 user_requirements             | due_date                   | date                        | YES         | 
 user_requirements             | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 user_requirements             | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 user_sessions                 | session_id                 | integer                     | NO          | nextval('user_sessions_session_id_seq'::regclass)
 user_sessions                 | user_id                    | integer                     | YES         | 
 user_sessions                 | refresh_token              | character varying           | NO          | 
 user_sessions                 | expires_at                 | timestamp without time zone | NO          | 
 user_sessions                 | ip_address                 | character varying           | YES         | 
 user_sessions                 | user_agent                 | text                        | YES         | 
 user_sessions                 | is_active                  | boolean                     | YES         | true
 user_sessions                 | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 user_sessions                 | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 users                         | user_id                    | integer                     | NO          | nextval('users_user_id_seq'::regclass)
 users                         | username                   | character varying           | NO          | 
 users                         | password                   | character varying           | NO          | 
 users                         | name                       | character varying           | NO          | 
 users                         | email                      | character varying           | YES         | 
 users                         | role                       | character varying           | YES         | 'user'::character varying
 users                         | access_level               | character varying           | YES         | 'worker'::character varying
 users                         | is_active                  | boolean                     | YES         | true
 users                         | failed_login_attempts      | integer                     | YES         | 0
 users                         | locked_until               | timestamp without time zone | YES         | 
 users                         | department                 | character varying           | YES         | 
 users                         | position                   | character varying           | YES         | 
 users                         | phone                      | character varying           | YES         | 
 users                         | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 users                         | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 users                         | last_login_at              | timestamp without time zone | YES         | 
 users                         | status                     | character varying           | YES         | 'active'::character varying
 valve_details                 | id                         | integer                     | NO          | nextval('valve_details_id_seq'::regclass)
 valve_details                 | material_id                | integer                     | YES         | 
 valve_details                 | file_id                    | integer                     | YES         | 
 valve_details                 | valve_type                 | character varying           | YES         | 
 valve_details                 | valve_subtype              | character varying           | YES         | 
 valve_details                 | actuator_type              | character varying           | YES         | 
 valve_details                 | connection_method          | character varying           | YES         | 
 valve_details                 | pressure_rating            | character varying           | YES         | 
 valve_details                 | pressure_class             | character varying           | YES         | 
 valve_details                 | body_material              | character varying           | YES         | 
 valve_details                 | trim_material              | character varying           | YES         | 
 valve_details                 | size_inches                | character varying           | YES         | 
 valve_details                 | fire_safe                  | boolean                     | YES         | 
 valve_details                 | low_temp_service           | boolean                     | YES         | 
 valve_details                 | special_features           | jsonb                       | YES         | 
 valve_details                 | classification_confidence  | double precision            | YES         | 
 valve_details                 | additional_info            | jsonb                       | YES         | 
 valve_details                 | created_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
 valve_details                 | updated_at                 | timestamp without time zone | YES         | CURRENT_TIMESTAMP
(616 rows)

