nesting modülü onay, maliyetlendirme, malzeme rezervasyonu, dışa aktarma ve sonuç içe aktarma, parça çekme, özetler ve SVG ile DXF çıktısıyla yerleşim işlerini; ayrıca yerleşim parçalarını, artıkları ve bir KPI okumasını sunar. 27 uç noktanın tamamı /api/v1/nesting altındadır. İş anlamı için Nesting modülü sayfasına bakın.
Grup olguları¶
| Öğe | Değer | Kaynak |
|---|---|---|
| Temel yol | /api/v1/nesting |
src/cluster_erp/core/module_base.py:37-38, src/cluster_erp/modules/nesting/module.py:49 |
| Yönlendiriciler | 4 dosyada 4 yönlendirici nesnesi; Uç nokta özeti bölümünde listelenir | src/cluster_erp/modules/nesting/module.py:32 |
| Uç noktalar | 27; register_routes ile bağlanan yönlendiricilerin yol dekoratörleri ve add_api_route çağrılarından sayıldı |
src/cluster_erp/modules/nesting/kpi/routes.py, src/cluster_erp/modules/nesting/nesting_jobs/routes.py, src/cluster_erp/modules/nesting/nesting_parts/routes.py ... |
| Kimlik doğrulama | Bearer başlığı veya oturum çerezi, get_current_user ile çözülür; bkz. Kimlik doğrulama ve başlıklar |
src/cluster_erp/modules/auth/guards.py:85-167 |
| Yetki koruması | 27 yolun 27 tanesi require_permission bildirir |
src/cluster_erp/modules/auth/guards.py:205-240 |
| Uygulama yetkilendirme kapısı | bağlanan her yönlendiricide require_app("nesting") |
src/cluster_erp/modules/nesting/module.py:55 |
| Hata biçimi | JSON gövdesi {"error": {...}}; bkz. Hatalar |
src/cluster_erp/server/error_handler.py:33-46 |
Uç nokta özeti¶
Alt modül klasörü başına bir satır. Yönlendirici öneki temel yola eklenir.
| Alt modül | Yönlendiriciler | Uç noktalar | Yönlendirici kaynağı |
|---|---|---|---|
kpi |
router (/nesting-jobs) |
1 | src/cluster_erp/modules/nesting/kpi/routes.py:13 |
nesting_jobs |
router (/nesting-jobs) |
15 | src/cluster_erp/modules/nesting/nesting_jobs/routes.py:30 |
nesting_parts |
router (/nesting-parts) |
6 | src/cluster_erp/modules/nesting/nesting_parts/routes.py:25 |
nesting_remnants |
router (/nesting-remnants) |
5 | src/cluster_erp/modules/nesting/nesting_remnants/routes.py:27 |
Yerleşim KPI uç noktaları¶
/nesting-jobs/kpi altında tek bir KPI okuması.
| Yöntem | Yol | İşleyici | Yetki | İstek | Sorgu | Yanıt | Durum | Kaynak |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/nesting/nesting-jobs/kpi |
get_nesting_kpi |
nesting_job.read |
yok | period_start, period_end, granularity, material_grade |
NestingKpiResponse |
200 (varsayılan) | src/cluster_erp/modules/nesting/kpi/routes.py:16 |
Yerleşim işleri uç noktaları¶
İş kayıtları, onaylama, maliyet hesaplama, malzeme rezerve etme, dışa aktarma, sonuç içe aktarma, siparişlerden parça çekme, özet, SVG ve DXF.
| Yöntem | Yol | İşleyici | Yetki | İstek | Sorgu | Yanıt | Durum | Kaynak |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/nesting/nesting-jobs/ |
list_nesting_jobs |
nesting_job.read |
yok | search, status, material_grade, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_jobs/routes.py:121 |
GET |
/api/v1/nesting/nesting-jobs/{job_id} |
get_nesting_job |
nesting_job.read |
yok | yok | NestingJobRead |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_jobs/routes.py:147 |
POST |
/api/v1/nesting/nesting-jobs/ |
create_nesting_job |
nesting_job.create |
NestingJobCreate |
yok | NestingJobRead |
201 |
src/cluster_erp/modules/nesting/nesting_jobs/routes.py:161 |
PUT |
/api/v1/nesting/nesting-jobs/{job_id} |
update_nesting_job |
nesting_job.update |
NestingJobUpdate |
yok | NestingJobRead |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_jobs/routes.py:173 |
DELETE |
/api/v1/nesting/nesting-jobs/{job_id} |
delete_nesting_job |
nesting_job.delete |
yok | yok | yok | 204 |
src/cluster_erp/modules/nesting/nesting_jobs/routes.py:188 |
POST |
/api/v1/nesting/nesting-jobs/bulk-delete |
bulk_delete_nesting_jobs |
nesting_job.bulk_delete |
BulkDeleteRequest |
yok | BulkDeleteResponse |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_jobs/routes.py:201 |
POST |
/api/v1/nesting/nesting-jobs/{job_id}/approve |
approve_nesting_job |
nesting_job.approve |
yok | yok | NestingJobRead |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_jobs/routes.py:213 |
POST |
/api/v1/nesting/nesting-jobs/{job_id}/calculate-costs |
calculate_costs |
nesting_job.update |
yok | yok | NestingJobRead |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_jobs/routes.py:227 |
POST |
/api/v1/nesting/nesting-jobs/{job_id}/reserve-material |
reserve_material |
nesting_job.update |
yok | yok | NestingJobRead |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_jobs/routes.py:239 |
POST |
/api/v1/nesting/nesting-jobs/{job_id}/export |
export_nesting_job |
nesting_job.read |
yok | yok | dict[str, Any] |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_jobs/routes.py:251 |
POST |
/api/v1/nesting/nesting-jobs/{job_id}/import-result |
import_nesting_result |
nesting_job.run |
NestingImportResult |
yok | NestingJobRead |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_jobs/routes.py:267 |
POST |
/api/v1/nesting/nesting-jobs/{job_id}/pull-parts |
pull_parts_from_orders |
nesting_job.update |
yok | yok | list[NestingPartRead] |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_jobs/routes.py:284 |
GET |
/api/v1/nesting/nesting-jobs/{job_id}/summary |
get_nesting_summary |
nesting_job.read |
yok | yok | dict |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_jobs/routes.py:296 |
GET |
/api/v1/nesting/nesting-jobs/{job_id}/svg |
get_nesting_svg |
nesting_job.read |
yok | sheet_index |
PlainTextResponse |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_jobs/routes.py:307 |
GET |
/api/v1/nesting/nesting-jobs/{job_id}/dxf |
get_nesting_dxf |
nesting_job.read |
yok | yok | Response |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_jobs/routes.py:364 |
Yerleşim parçaları uç noktaları¶
Yerleşim parçası kayıtları.
| Yöntem | Yol | İşleyici | Yetki | İstek | Sorgu | Yanıt | Durum | Kaynak |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/nesting/nesting-parts/ |
list_nesting_parts |
nesting_part.read |
yok | nesting_job_id, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_parts/routes.py:28 |
GET |
/api/v1/nesting/nesting-parts/{part_id} |
get_nesting_part |
nesting_part.read |
yok | yok | NestingPartRead |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_parts/routes.py:50 |
POST |
/api/v1/nesting/nesting-parts/ |
create_nesting_part |
nesting_part.create |
NestingPartCreate |
yok | NestingPartRead |
201 |
src/cluster_erp/modules/nesting/nesting_parts/routes.py:64 |
PUT |
/api/v1/nesting/nesting-parts/{part_id} |
update_nesting_part |
nesting_part.update |
NestingPartUpdate |
yok | NestingPartRead |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_parts/routes.py:76 |
DELETE |
/api/v1/nesting/nesting-parts/{part_id} |
delete_nesting_part |
nesting_part.delete |
yok | yok | yok | 204 |
src/cluster_erp/modules/nesting/nesting_parts/routes.py:91 |
POST |
/api/v1/nesting/nesting-parts/bulk-delete |
bulk_delete_nesting_parts |
nesting_part.bulk_delete |
BulkDeleteRequest |
yok | BulkDeleteResponse |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_parts/routes.py:104 |
Artıklar uç noktaları¶
Artık kayıtları, kullanılabilir artıklar ve hurdaya ayırma.
| Yöntem | Yol | İşleyici | Yetki | İstek | Sorgu | Yanıt | Durum | Kaynak |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/nesting/nesting-remnants/ |
list_nesting_remnants |
nesting_remnant.read |
yok | nesting_job_id, status, material_grade, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_remnants/routes.py:30 |
GET |
/api/v1/nesting/nesting-remnants/available |
get_available_remnants |
nesting_remnant.read |
yok | material_grade, thickness_mm, min_width, min_height, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_remnants/routes.py:56 |
GET |
/api/v1/nesting/nesting-remnants/{remnant_id} |
get_nesting_remnant |
nesting_remnant.read |
yok | yok | NestingRemnantRead |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_remnants/routes.py:84 |
PUT |
/api/v1/nesting/nesting-remnants/{remnant_id} |
update_nesting_remnant |
nesting_remnant.update |
NestingRemnantUpdate |
yok | NestingRemnantRead |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_remnants/routes.py:98 |
POST |
/api/v1/nesting/nesting-remnants/{remnant_id}/scrap |
scrap_nesting_remnant |
nesting_remnant.update |
NestingRemnantScrap |
yok | NestingRemnantRead |
200 (varsayılan) | src/cluster_erp/modules/nesting/nesting_remnants/routes.py:113 |
Hata kodları¶
Tablo, src/cluster_erp/modules/nesting/ altındaki kodun attığı hata kodlarını listeler. Kodlar, AppError(...) çağrıları, src/cluster_erp/core/errors.py içindeki fabrikalar (not_found, conflict, protected, permission_denied, privilege_escalation, check_version) ve HTTPException(...) için yapılan bir sözdizimi ağacı taramasıyla bulundu. 400 durumu AppError varsayılanıdır (src/cluster_erp/core/errors.py:23). Koruma hataları (401, 403), yetkilendirme kodları ve doğrulama hataları (422) her yol için geçerlidir ve Hatalar sayfasında listelenir.
| Kod | HTTP durumu | Atıldığı yer | İlk konum |
|---|---|---|---|
CONCURRENCY_VERSION_CONFLICT |
409 |
nesting_jobs, nesting_parts, nesting_remnants |
src/cluster_erp/modules/nesting/nesting_jobs/services.py:200 |
NESTING_ALREADY_APPROVED |
400 |
nesting_jobs |
src/cluster_erp/modules/nesting/nesting_jobs/services.py:327 |
NESTING_COST_MISSING_UNIT_PRICE |
400 |
nesting_jobs |
src/cluster_erp/modules/nesting/nesting_jobs/services.py:589 |
NESTING_IMPORT_FAILED |
400 |
integration |
src/cluster_erp/modules/nesting/integration/services.py:345 |
NESTING_IMPORT_INVALID_PARTS |
400 |
integration |
src/cluster_erp/modules/nesting/integration/services.py:91 |
NESTING_INVALID_STATUS |
400 |
integration, nesting_jobs, nesting_parts |
src/cluster_erp/modules/nesting/integration/services.py:179 |
NESTING_LOW_UTILIZATION |
400 |
nesting_jobs |
src/cluster_erp/modules/nesting/nesting_jobs/services.py:337 |
NESTING_MATERIAL_ALREADY_CONSUMED |
400 |
nesting_jobs |
src/cluster_erp/modules/nesting/nesting_jobs/services.py:476 |
NESTING_MATERIAL_ALREADY_RESERVED |
400 |
nesting_jobs |
src/cluster_erp/modules/nesting/nesting_jobs/services.py:410 |
NESTING_MATERIAL_NOT_RESERVED |
400 |
nesting_jobs |
src/cluster_erp/modules/nesting/nesting_jobs/services.py:482 |
NESTING_NOT_COMPLETED |
400 |
nesting_jobs |
src/cluster_erp/modules/nesting/nesting_jobs/services.py:321 |
NESTING_NO_PARTS |
400 |
nesting_jobs |
src/cluster_erp/modules/nesting/nesting_jobs/services.py:692 |
NESTING_ORDER_MATERIAL_MISMATCH |
400 |
nesting_jobs |
src/cluster_erp/modules/nesting/nesting_jobs/services.py:731 |
NESTING_PART_TOO_LARGE |
400 |
nesting_parts |
src/cluster_erp/modules/nesting/nesting_parts/services.py:100 |
NESTING_REMNANT_INVALID_STATUS |
400 |
nesting_remnants |
src/cluster_erp/modules/nesting/nesting_remnants/services.py:189 |
RESOURCE_CONFLICT |
400 |
nesting_parts |
src/cluster_erp/modules/nesting/nesting_parts/services.py:89 |
RESOURCE_NOT_FOUND |
404 |
integration, nesting_jobs, nesting_parts, nesting_remnants |
src/cluster_erp/modules/nesting/integration/services.py:119 |
Yayımlanan olaylar¶
Tablo, src/cluster_erp/modules/nesting/ altındaki kodun EventBus.emit çağrısına doğrudan verdiği sözleşme sınıflarını listeler; sözdizimi ağacı taramasıyla bulundu. Önce bir değişkene kurulan olaylar sayılmaz. Sözleşmeler Sözleşmeler başvurusu sayfasında anlatılır.
| Sözleşme | Konum sayısı | İlk konum |
|---|---|---|
NestingApproved |
1 | src/cluster_erp/modules/nesting/nesting_jobs/services.py:353 |
NestingCompleted |
1 | src/cluster_erp/modules/nesting/integration/services.py:352 |
NestingCostCalculated |
1 | src/cluster_erp/modules/nesting/nesting_jobs/services.py:661 |
NestingMaterialConsumed |
1 | src/cluster_erp/modules/nesting/nesting_jobs/services.py:544 |
NestingMaterialReserved |
1 | src/cluster_erp/modules/nesting/nesting_jobs/services.py:458 |
NestingRemnantConsumed |
1 | src/cluster_erp/modules/nesting/nesting_remnants/services.py:236 |
NestingRemnantCreated |
1 | src/cluster_erp/modules/nesting/nesting_remnants/services.py:166 |
NestingRemnantScrapped |
1 | src/cluster_erp/modules/nesting/nesting_remnants/services.py:272 |
NestingScrapRecorded |
1 | src/cluster_erp/modules/nesting/nesting_jobs/services.py:380 |
İlgili sayfalar¶
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.