tr-yangin 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tr_yangin-0.1.0/CHANGELOG.md +25 -0
- tr_yangin-0.1.0/CITATION.cff +20 -0
- tr_yangin-0.1.0/LICENSE +21 -0
- tr_yangin-0.1.0/MANIFEST.in +9 -0
- tr_yangin-0.1.0/PKG-INFO +307 -0
- tr_yangin-0.1.0/README.md +270 -0
- tr_yangin-0.1.0/examples/quickstart.py +78 -0
- tr_yangin-0.1.0/pyproject.toml +110 -0
- tr_yangin-0.1.0/setup.cfg +4 -0
- tr_yangin-0.1.0/src/tr_yangin/__init__.py +74 -0
- tr_yangin-0.1.0/src/tr_yangin/__main__.py +7 -0
- tr_yangin-0.1.0/src/tr_yangin/_version.py +1 -0
- tr_yangin-0.1.0/src/tr_yangin/assess.py +1109 -0
- tr_yangin-0.1.0/src/tr_yangin/calc.py +228 -0
- tr_yangin-0.1.0/src/tr_yangin/cli.py +235 -0
- tr_yangin-0.1.0/src/tr_yangin/data/ornek_bina.json +58 -0
- tr_yangin-0.1.0/src/tr_yangin/data/yonetmelik.json +161 -0
- tr_yangin-0.1.0/src/tr_yangin/errors.py +17 -0
- tr_yangin-0.1.0/src/tr_yangin/models.py +273 -0
- tr_yangin-0.1.0/src/tr_yangin/py.typed +0 -0
- tr_yangin-0.1.0/src/tr_yangin/report.py +190 -0
- tr_yangin-0.1.0/src/tr_yangin/tables.py +183 -0
- tr_yangin-0.1.0/src/tr_yangin.egg-info/PKG-INFO +307 -0
- tr_yangin-0.1.0/src/tr_yangin.egg-info/SOURCES.txt +31 -0
- tr_yangin-0.1.0/src/tr_yangin.egg-info/dependency_links.txt +1 -0
- tr_yangin-0.1.0/src/tr_yangin.egg-info/entry_points.txt +2 -0
- tr_yangin-0.1.0/src/tr_yangin.egg-info/requires.txt +6 -0
- tr_yangin-0.1.0/src/tr_yangin.egg-info/top_level.txt +1 -0
- tr_yangin-0.1.0/tests/conftest.py +28 -0
- tr_yangin-0.1.0/tests/test_assess.py +487 -0
- tr_yangin-0.1.0/tests/test_calc.py +205 -0
- tr_yangin-0.1.0/tests/test_models_tables.py +243 -0
- tr_yangin-0.1.0/tests/test_report_cli.py +156 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
## [Unreleased]
|
|
6
|
+
|
|
7
|
+
## [0.1.0] - 2026-11-09
|
|
8
|
+
### Added
|
|
9
|
+
- `assess()` early-design check of a building/storey description against the
|
|
10
|
+
*Binaların Yangından Korunması Hakkında Yönetmelik* (BKK 2007/12937, consolidated
|
|
11
|
+
text as amended up to CK 10026, 30/6/2025), producing a Turkish `Report` with
|
|
12
|
+
article references (text, Markdown, JSON).
|
|
13
|
+
- Checks: use classes and high-rise definition (Madde 4, 8-18); occupant load from
|
|
14
|
+
Ek-5/A (Madde 32); number of exits (Madde 39, 32(8), 48, 50, 52); exit, stair,
|
|
15
|
+
door and corridor widths from 50 cm units and Ek-5/B capacities (Madde 33, 47, 49);
|
|
16
|
+
travel distances and dead ends (Ek-5/B, Madde 48(2), 50(3)); escape stair count,
|
|
17
|
+
protected stairs, fire safety lobbies, pressurisation and emergency lifts
|
|
18
|
+
(Madde 34, 38-48, 63, 89); sprinkler (Madde 96), automatic detection (Madde 75,
|
|
19
|
+
Ek-7, with the Danıştay annulment noted), call points (Madde 75(2)), standpipes and
|
|
20
|
+
hose reels (Madde 94) and fire-brigade inlets (Madde 97).
|
|
21
|
+
- Calculation helpers `occupant_count`, `min_exit_count`, `exit_widths`,
|
|
22
|
+
`max_travel_distance`, `max_dead_end`, `min_exit_separation`, `is_high_rise`.
|
|
23
|
+
- All numeric values in one packaged JSON file, overridable with `load_tables()`.
|
|
24
|
+
- `tr-yangin` command line tool (`rapor`, `ornek`, `kullanici-yuku`, `genislik`,
|
|
25
|
+
`uzaklik`, `tablolar`) with Turkish help and output.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: "If you use this software, please cite it as below."
|
|
3
|
+
authors:
|
|
4
|
+
- family-names: "Eminoğlu"
|
|
5
|
+
given-names: "Yusuf"
|
|
6
|
+
email: "geospacephilo@gmail.com"
|
|
7
|
+
orcid: "https://orcid.org/0009-0005-6000-2934"
|
|
8
|
+
title: "tr-yangin"
|
|
9
|
+
version: "0.1.0"
|
|
10
|
+
date-released: "2026-11-09"
|
|
11
|
+
license: "MIT"
|
|
12
|
+
repository-code: "https://github.com/YusufEminoglu/tr_yangin_sdk"
|
|
13
|
+
url: "https://pypi.org/project/tr-yangin/"
|
|
14
|
+
abstract: "Early-design fire-safety checks under the Turkish Regulation on the Fire Protection of Buildings (Binaların Yangından Korunması Hakkında Yönetmelik): occupant load, exits, escape widths, travel distances, stairs, and sprinkler and detection triggers, with a structured Turkish compliance report referencing the articles."
|
|
15
|
+
keywords:
|
|
16
|
+
- fire safety
|
|
17
|
+
- building regulations
|
|
18
|
+
- egress
|
|
19
|
+
- occupant load
|
|
20
|
+
- Turkey
|
tr_yangin-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Yusuf Eminoğlu
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
tr_yangin-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: tr-yangin
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Early-design fire-safety checks under the Turkish fire protection regulation (Binaların Yangından Korunması Hakkında Yönetmelik): occupant load, exits, escape widths, travel distances, stairs, sprinkler and detection triggers, with a Turkish compliance report.
|
|
5
|
+
Author-email: Yusuf Eminoğlu <geospacephilo@gmail.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/YusufEminoglu/tr_yangin_sdk
|
|
8
|
+
Project-URL: Repository, https://github.com/YusufEminoglu/tr_yangin_sdk
|
|
9
|
+
Project-URL: Issues, https://github.com/YusufEminoglu/tr_yangin_sdk/issues
|
|
10
|
+
Project-URL: Changelog, https://github.com/YusufEminoglu/tr_yangin_sdk/blob/main/CHANGELOG.md
|
|
11
|
+
Keywords: fire-safety,fire-protection,building-regulations,egress,occupant-load,travel-distance,turkey,yangin,yangin-yonetmeligi,kacis-yolu,architecture,urban-planning,compliance
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Operating System :: OS Independent
|
|
20
|
+
Classifier: Environment :: Console
|
|
21
|
+
Classifier: Natural Language :: Turkish
|
|
22
|
+
Classifier: Topic :: Scientific/Engineering
|
|
23
|
+
Classifier: Topic :: Utilities
|
|
24
|
+
Classifier: Intended Audience :: Science/Research
|
|
25
|
+
Classifier: Intended Audience :: Developers
|
|
26
|
+
Classifier: Intended Audience :: Other Audience
|
|
27
|
+
Classifier: Typing :: Typed
|
|
28
|
+
Requires-Python: >=3.9
|
|
29
|
+
Description-Content-Type: text/markdown
|
|
30
|
+
License-File: LICENSE
|
|
31
|
+
Provides-Extra: dev
|
|
32
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
33
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
|
34
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
35
|
+
Requires-Dist: mypy>=1.0.0; extra == "dev"
|
|
36
|
+
Dynamic: license-file
|
|
37
|
+
|
|
38
|
+
# tr-yangin
|
|
39
|
+
|
|
40
|
+
[](https://pypi.org/project/tr-yangin/)
|
|
41
|
+
[](https://pypi.org/project/tr-yangin/)
|
|
42
|
+
[](https://github.com/YusufEminoglu/tr_yangin_sdk/actions/workflows/ci.yml)
|
|
43
|
+
[](https://github.com/YusufEminoglu/tr_yangin_sdk/blob/main/LICENSE)
|
|
44
|
+
|
|
45
|
+
**English summary.** `tr-yangin` runs early-design fire-safety checks under the
|
|
46
|
+
Turkish *Regulation on the Fire Protection of Buildings* (Binaların Yangından
|
|
47
|
+
Korunması Hakkında Yönetmelik, BKK 2007/12937, consolidated text as amended up to
|
|
48
|
+
30/6/2025): occupant load, number and width of exits, travel distances, stair
|
|
49
|
+
types, and the height/use triggers for protected stairs, fire lobbies,
|
|
50
|
+
pressurisation, sprinklers and fire detection. A building/storey description goes
|
|
51
|
+
in, a structured Turkish compliance report with article references comes out (text,
|
|
52
|
+
Markdown or JSON, also via a CLI). It is a preliminary design aid and does not
|
|
53
|
+
replace fire-brigade (itfaiye) approval.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
**Binaların Yangından Korunması Hakkında Yönetmelik'e göre erken tasarım kontrolleri.**
|
|
58
|
+
|
|
59
|
+
`tr-yangin`, mimari ve kentsel tasarımın ilk aşamasında bir bina veya kat
|
|
60
|
+
tanımını alır ve Yönetmelik'in kaçış ve aktif korunma hükümlerine göre madde
|
|
61
|
+
numaralı, yapılandırılmış bir Türkçe uygunluk raporu üretir:
|
|
62
|
+
|
|
63
|
+
- **Bina sınıfı ve yükseklik:** kullanım sınıfları (Madde 8-18), *bina yüksekliği*,
|
|
64
|
+
*yapı yüksekliği* ve *yüksek bina* tanımları (Madde 4).
|
|
65
|
+
- **Kullanıcı yükü:** Ek-5/A katsayılarıyla mekân ve kat kişi sayısı (Madde 32(1)).
|
|
66
|
+
- **Çıkış sayısı:** Madde 39 (50 / 500 / 1000 kişi eşikleri; yüksek tehlikede 25),
|
|
67
|
+
Madde 32(8), 48, 50, 52 istisnaları.
|
|
68
|
+
- **Kaçış genişlikleri:** 50 cm birim genişlik ve Ek-5/B birim kapasiteleriyle
|
|
69
|
+
kapı, merdiven, koridor/rampa toplam genişlikleri; 80 / 100 / 150 / 200 cm ve
|
|
70
|
+
yüksek binada 120 cm alt sınırları (Madde 32-33, 47, 49).
|
|
71
|
+
- **Kaçış uzaklıkları:** tek yön / iki yön, yağmurlamalı / yağmurlamasız ve
|
|
72
|
+
çıkmaz koridor sınırları (Ek-5/B), konut daire içi (Madde 48(2)) ve otel odası
|
|
73
|
+
(Madde 50(3)) sınırları.
|
|
74
|
+
- **Merdivenler:** gerekli kaçış merdiveni sayısı, korunumlu merdiven, yangın
|
|
75
|
+
güvenlik holü, basınçlandırma, acil durum asansörü, dengelenmiş ve dış açık
|
|
76
|
+
merdiven yasakları (Madde 34, 38-48, 63, 89).
|
|
77
|
+
- **Aktif sistemler:** yağmurlama (Madde 96), otomatik algılama (Madde 75, Ek-7),
|
|
78
|
+
yangın uyarı butonları (Madde 75(2)), itfaiye su alma hattı ve yangın dolapları
|
|
79
|
+
(Madde 94), itfaiye su verme bağlantısı (Madde 97).
|
|
80
|
+
|
|
81
|
+
Bütün sayısal değerler **tek bir JSON veri dosyasında** durur ve kullanıcı
|
|
82
|
+
tarafından kısmen geçersiz kılınabilir. Paketin çalışması için yalnızca Python
|
|
83
|
+
standart kütüphanesi yeterlidir.
|
|
84
|
+
|
|
85
|
+
> **Uyarı.** Bu paket bir **ön tasarım yardımcısıdır**. İtfaiye onayının, yangın
|
|
86
|
+
> danışmanının veya proje müellifinin incelemesinin ve ilgili idarenin kararının
|
|
87
|
+
> yerine geçmez. Yönetmelik metninin güncel hâlini ve yerel itfaiye uygulamalarını
|
|
88
|
+
> mutlaka kontrol edin.
|
|
89
|
+
|
|
90
|
+
## Kurulum
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
pip install tr-yangin
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Python 3.9 veya üstü gerekir. Bağımlılık yoktur.
|
|
97
|
+
|
|
98
|
+
## Hızlı başlangıç (komut satırı)
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
tr-yangin ornek -o bina.json # örnek bina tanımı
|
|
102
|
+
tr-yangin rapor bina.json # Türkçe metin raporu
|
|
103
|
+
tr-yangin rapor bina.json --bicim md -o rapor.md
|
|
104
|
+
tr-yangin rapor bina.json --bicim json --siki # uygunsuzlukta çıkış kodu 1
|
|
105
|
+
|
|
106
|
+
tr-yangin kullanici-yuku --kullanim ofis --alan 1200 # 120 kişi
|
|
107
|
+
tr-yangin genislik --kisi 300 --sinif buro # gerekli genişlikler
|
|
108
|
+
tr-yangin uzaklik --sinif buro --iki-yon --yagmurlama # 75 m
|
|
109
|
+
tr-yangin tablolar # sınıf ve Ek-5/A anahtarları
|
|
110
|
+
tr-yangin --tablolar benim_tablom.json rapor bina.json # tablo geçersiz kılma
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Bina tanımı (Türkçe veya İngilizce anahtarlar kabul edilir):
|
|
114
|
+
|
|
115
|
+
```json
|
|
116
|
+
{
|
|
117
|
+
"ad": "Örnek büro binası",
|
|
118
|
+
"kullanim_sinifi": "buro",
|
|
119
|
+
"bina_yuksekligi_m": 18.6,
|
|
120
|
+
"yapi_yuksekligi_m": 22.4,
|
|
121
|
+
"yanmaz_yapim": true,
|
|
122
|
+
"katlar": [
|
|
123
|
+
{
|
|
124
|
+
"kat": 1,
|
|
125
|
+
"mekanlar": [
|
|
126
|
+
{"ad": "Açık ofis", "kullanim": "ofis", "alan_m2": 520},
|
|
127
|
+
{"ad": "Toplantı salonu", "kullanim": "toplanti_salonu", "alan_m2": 60}
|
|
128
|
+
],
|
|
129
|
+
"cikis_sayisi": 2, "merdiven_sayisi": 2, "merdiven_genisligi_m": 1.2,
|
|
130
|
+
"kapi_genisligi_m": 0.9, "koridor_genisligi_m": 1.4,
|
|
131
|
+
"kacis_uzakligi_m": 41, "iki_yonlu": true, "cikmaz_koridor_m": 9
|
|
132
|
+
}
|
|
133
|
+
]
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Rapordan bir kesit:
|
|
138
|
+
|
|
139
|
+
```text
|
|
140
|
+
KULLANICI YÜKÜ
|
|
141
|
+
--------------
|
|
142
|
+
[BİLGİ] [1. kat] Kat kullanıcı yükü 92 kişi. Açık ofis: 520 m² brüt / 10 m²/kişi = 52 kişi (Ek-5/A satır 11); Toplantı salonu: 60 m² net / 1.5 m²/kişi = 40 kişi (Ek-5/A satır 1)
|
|
143
|
+
|
|
144
|
+
ÇIKIŞ SAYISI VE KAÇIŞ GENİŞLİKLERİ
|
|
145
|
+
----------------------------------
|
|
146
|
+
[UYGUN DEĞİL] [1. kat] Çıkış kapısı temiz genişliği (yükseklik en az 200 cm); en az genişlik: 92 kişilik kat için 100 cm (Madde 33(1) kişi bandı).
|
|
147
|
+
gereken: ≥ 1.00 m | mevcut: 0.90 m | dayanak: Madde 33(1), (5)(b); Madde 47(1)
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Durumlar: `UYGUN`, `UYGUN DEĞİL`, `GEREKLİ`, `GEREKLİ DEĞİL`, `BİLGİ`, `VERİ YOK`
|
|
151
|
+
(eksik veri bir uygunsuzluk sayılmaz, ayrıca raporlanır).
|
|
152
|
+
|
|
153
|
+
## Hızlı başlangıç (Python)
|
|
154
|
+
|
|
155
|
+
```python
|
|
156
|
+
from tr_yangin import Building, Storey, Space, assess, occupant_count, exit_widths
|
|
157
|
+
|
|
158
|
+
occupant_count("ofis", 1200) # 120 (Ek-5/A: 10 m²/kişi, brüt)
|
|
159
|
+
w = exit_widths(300, "buro") # Madde 33(1), Ek-5/B
|
|
160
|
+
w.stair_total_m, w.min_single_exit_m # (2.5, 1.0) -> 300/60 x 0.50 m
|
|
161
|
+
|
|
162
|
+
bina = Building(
|
|
163
|
+
use_class="buro", building_height_m=18.6, structure_height_m=22.4,
|
|
164
|
+
noncombustible_construction=True,
|
|
165
|
+
storeys=[
|
|
166
|
+
Storey(level=0, spaces=[Space(use="ofis", area_m2=600)], exits=2,
|
|
167
|
+
door_width_m=1.0, travel_distance_m=30, two_way=True),
|
|
168
|
+
Storey(level=1, spaces=[Space(use="ofis", area_m2=600)], exits=2, stairs=2,
|
|
169
|
+
stair_width_m=1.2, travel_distance_m=41, two_way=True),
|
|
170
|
+
],
|
|
171
|
+
)
|
|
172
|
+
rapor = assess(bina)
|
|
173
|
+
print(rapor.to_text()) # veya to_markdown(), to_json(), to_dict()
|
|
174
|
+
rapor.ok, len(rapor.failures), [f.reference for f in rapor.requirements]
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Daha uzun bir örnek için `examples/quickstart.py` dosyasına bakın.
|
|
178
|
+
|
|
179
|
+
## API özeti
|
|
180
|
+
|
|
181
|
+
| Nesne | Açıklama |
|
|
182
|
+
|---|---|
|
|
183
|
+
| `assess(bina, tables=None) -> Report` | Bütün kontrolleri çalıştırır. `bina` bir `Building` veya sözlük olabilir. |
|
|
184
|
+
| `Building`, `Storey`, `Space` | Girdi modeli; `Building.from_dict` Türkçe anahtarları da kabul eder. |
|
|
185
|
+
| `Report` | `findings`, `failures`, `requirements`, `ok`, `counts()`, `to_text()`, `to_markdown()`, `to_json()`, `to_dict()`. |
|
|
186
|
+
| `Finding`, `Status` | Bir bulgu: konu, kat, durum, açıklama, gereken, mevcut, dayanak (madde). |
|
|
187
|
+
| `occupant_count(kullanim, alan, beyan=None)` | Ek-5/A kullanıcı yükü (yukarı yuvarlanır; beyan büyükse o esas). |
|
|
188
|
+
| `min_exit_count(kisi, yuksek_tehlike=False)` | Madde 39(2) çıkış sayısı. |
|
|
189
|
+
| `exit_widths(kisi, sinif, yuksek_bina=False)` | Madde 32-33 ve Ek-5/B genişlikleri (`ExitWidths`). |
|
|
190
|
+
| `max_travel_distance(sinif, iki_yon, yagmurlama, dusuk_alevlenir=False)` | Ek-5/B en fazla kaçış uzaklığı. |
|
|
191
|
+
| `max_dead_end`, `min_exit_separation`, `is_high_rise` | Çıkmaz koridor, Madde 39(3) çıkışlar arası uzaklık, yüksek bina testi. |
|
|
192
|
+
| `load_tables(override)` / `Tables` | Veri dosyasını yükler; sözlük veya JSON dosyasıyla derin birleştirme yapar. |
|
|
193
|
+
| `example_building()` | Paketle gelen örnek bina tanımı. |
|
|
194
|
+
|
|
195
|
+
### Kullanım sınıfları (`kullanim_sinifi`)
|
|
196
|
+
|
|
197
|
+
`konut`, `otel`, `yurt`, `egitim`, `saglik` (yataklı), `ayakta_tedavi`, `buro`,
|
|
198
|
+
`ticaret`, `endustri`, `toplanma`, `depo`, `otopark`, `yuksek_tehlike`.
|
|
199
|
+
Her sınıf bir Ek-5/B satırına ve (varsa) bir Ek-7 satırına bağlıdır.
|
|
200
|
+
Karışık kullanımlı binalarda Madde 18 gereği daha sıkı sınıfı seçin veya
|
|
201
|
+
yangın bölmesiyle ayrılmış bölümleri ayrı ayrı değerlendirin.
|
|
202
|
+
|
|
203
|
+
### Ek-5/A mekân kullanımları (`kullanim`)
|
|
204
|
+
|
|
205
|
+
`toplanti_salonu` (1.5, net), `dans_oturma` (1.0, net), `dans_ayakta` (0.5, net),
|
|
206
|
+
`sergi_studyo` (1.5, net), `terminal_bekleme` (3, net), `derslik` (1.5),
|
|
207
|
+
`resepsiyon` (3), `spor` (3), `magaza` (5), `galeri_muze` (5), `fitness_okuma` (5),
|
|
208
|
+
`ofis` (10), `ogrenci_yatak` (10), `uretim` (10), `hastane_yatak` (20),
|
|
209
|
+
`mutfak` (10), `otel_yatak` (20), `hastane_lab` (20), `muayene` (5), `depo` (30),
|
|
210
|
+
`otopark` (30) m²/kişi. Ek-5/A'da konut satırı yoktur: konutlarda kişi sayısını
|
|
211
|
+
`kisi` alanıyla verin veya tabloya kendi varsayımınızı ekleyin.
|
|
212
|
+
|
|
213
|
+
### Tabloları geçersiz kılma
|
|
214
|
+
|
|
215
|
+
```python
|
|
216
|
+
from tr_yangin import load_tables, assess
|
|
217
|
+
|
|
218
|
+
tb = load_tables({
|
|
219
|
+
"thresholds": {"high_rise_rule": "and"}, # yüksek bina: iki şart birlikte
|
|
220
|
+
"occupant_load_factors": {"konut": {"row": "-", "label": "Konut (varsayım)",
|
|
221
|
+
"m2_per_person": 20, "area_basis": "brut"}},
|
|
222
|
+
})
|
|
223
|
+
rapor = assess(bina, tb)
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
Komut satırında aynı yapı `--tablolar dosya.json` ile verilir. Bütün tablo
|
|
227
|
+
`tr-yangin tablolar --json` ile görülebilir.
|
|
228
|
+
|
|
229
|
+
## Yöntem ve kaynaklar
|
|
230
|
+
|
|
231
|
+
Birincil kaynak, mevzuat.gov.tr'deki derlenmiş metindir:
|
|
232
|
+
*Binaların Yangından Korunması Hakkında Yönetmelik*, Bakanlar Kurulu Kararı
|
|
233
|
+
27/11/2007 No 2007/12937, Resmî Gazete 19/12/2007 No 26735; değişiklikler
|
|
234
|
+
2009/15316, 2012/2958, 2015/7401, 2017/10459, 2018/11347, CK 3167 (2020),
|
|
235
|
+
CK 4825 (2021) ve CK 10026 (30/6/2025, Geçici Madde 4).
|
|
236
|
+
<https://www.mevzuat.gov.tr/mevzuat?MevzuatNo=200712937&MevzuatTur=21&MevzuatTertip=5>
|
|
237
|
+
(metin 9 Kasım 2026'da kontrol edildi).
|
|
238
|
+
|
|
239
|
+
Kullanılan hükümler: Madde 4 (tanımlar), 8-18 (kullanım sınıfları), 31-33
|
|
240
|
+
(kaçış yolları, kullanıcı yükü, çıkış genişliği), 34 (yangın güvenlik holü),
|
|
241
|
+
38-48 (kaçış merdivenleri, çıkış sayısı, kapılar, konutlar), 49-52 (sağlık,
|
|
242
|
+
oteller, toplanma, büro/mağaza/fabrika), 63 (acil durum asansörü), 75 ve 81
|
|
243
|
+
(algılama ve uyarı), 89 (basınçlandırma), 94 (itfaiye su alma hattı, yangın
|
|
244
|
+
dolapları), 96 (yağmurlama), 97 (itfaiye su verme bağlantısı); Ek-5/A, Ek-5/B,
|
|
245
|
+
Ek-7. Ek-5/B'nin hastaneler satırındaki merdiven kapasitesi değişiklikle
|
|
246
|
+
30 kişidir. Ek-7'nin kurumsal, ticaret, endüstri ve toplanma satırları Danıştay
|
|
247
|
+
10. Dairesinin 28/12/2021 tarihli E.2019/261 K.2021/5537 sayılı kararıyla iptal
|
|
248
|
+
edilmiştir (İDDK 22/2/2023 onama); bu sınıflar için rapor bunu belirtir.
|
|
249
|
+
|
|
250
|
+
Hesap kuralları:
|
|
251
|
+
|
|
252
|
+
- Kişi sayısı = ⌈alan / katsayı⌉; beyan edilen kişi sayısı büyükse o esas alınır
|
|
253
|
+
(Ek-5/A notu). Ek-5/A'nın 1-4. satırları net, diğerleri brüt alanla çalışır.
|
|
254
|
+
- Toplam gerekli genişlik = kişi / birim kapasite × 0.50 m (Madde 33(1)).
|
|
255
|
+
Değer, 50 cm'lik tam birimlere yuvarlanmaz.
|
|
256
|
+
- Merdiven genişliği kat bazında, o katın kullanıcı yüküyle kontrol edilir;
|
|
257
|
+
iki çıkış gereken durumda her merdiven yükün yarısını taşımalıdır (Madde 33(4)).
|
|
258
|
+
- Yağmurlama durumu verilmezse, sistem yalnızca Madde 96'nın zorunlu kıldığı
|
|
259
|
+
durumda var kabul edilir ve kaçış uzaklıkları buna göre seçilir.
|
|
260
|
+
|
|
261
|
+
## Sınırlamalar ve yorumlar
|
|
262
|
+
|
|
263
|
+
- **Yüksek bina tanımı** ("bina yüksekliği 21.50 m'den, yapı yüksekliği 30.50
|
|
264
|
+
m'den fazla") iki şartın birlikte mi ayrı ayrı mı arandığını açıkça söylemez.
|
|
265
|
+
Varsayılan ihtiyatlı yorum "**veya**"dır; `high_rise_rule: "and"` ile değiştirilebilir.
|
|
266
|
+
- **Sınır değerler:** Madde 48(5)'teki 21.50 / 30.50 / 51.50 m eşiklerine tam
|
|
267
|
+
eşit yükseklikler bir üst (daha sıkı) banda alınır; Madde 47(3)'te tam 4 kat
|
|
268
|
+
90 dk kapı ister; Madde 50'de tam 20 yatak iki çıkış ister.
|
|
269
|
+
- **Madde 96(2)(d)**'deki "katlı" şartı ihtiyaten aranmaz; toplanma sınıfı
|
|
270
|
+
"eğlence yeri" olarak bu bende dahil edilir.
|
|
271
|
+
- **Madde 89(1)** merdiven kovası yüksekliğini esas alır; paket yapı
|
|
272
|
+
yüksekliğini vekil değer olarak kullanır. Madde 48(7)-(8) uyarınca bodrum veya
|
|
273
|
+
çatı arası hariç tutulacaksa `konut_merdiven_yuksekligi_m` alanını kullanın.
|
|
274
|
+
- **Madde 75(2)** kat sayısı bodrumlar dahil sayılır.
|
|
275
|
+
- Geometri (kaçış uzaklığı, köşegen, genişlikler) kullanıcı tarafından ölçülüp
|
|
276
|
+
girilir; paket plan çizimi okumaz ve yol bulma yapmaz.
|
|
277
|
+
- Kapsam dışı: yapı elemanlarının yangın dayanımları (Ek-3), kompartıman alanları
|
|
278
|
+
(Ek-4), malzeme sınıfları (Ek-2), koltuk sıraları (Ek-6), su deposu ve pompa
|
|
279
|
+
hesapları (Ek-8), tehlikeli maddeler (Sekizinci Kısım), mevcut yapılara özel
|
|
280
|
+
hükümler (Onuncu Kısım), cezaevleri, açık otoparklar.
|
|
281
|
+
- Yönetmelik değişebilir. Tablo dosyası güncel değilse `load_tables` ile düzeltin.
|
|
282
|
+
|
|
283
|
+
## Geliştirme
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
pip install -e ".[dev]"
|
|
287
|
+
python -m pytest
|
|
288
|
+
python -m ruff check . && python -m ruff format --check src tests
|
|
289
|
+
python -m mypy src
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
## Akademik atıf
|
|
293
|
+
|
|
294
|
+
```bibtex
|
|
295
|
+
@software{eminoglu_tr_yangin,
|
|
296
|
+
author = {Eminoğlu, Yusuf},
|
|
297
|
+
title = {tr-yangin},
|
|
298
|
+
year = {2026},
|
|
299
|
+
version = {0.1.0},
|
|
300
|
+
url = {https://github.com/YusufEminoglu/tr_yangin_sdk}
|
|
301
|
+
}
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
## Lisans
|
|
305
|
+
|
|
306
|
+
MIT. Ayrıntılar için [LICENSE](LICENSE) dosyasına bakın. İletişim:
|
|
307
|
+
geospacephilo@gmail.com
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
# tr-yangin
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/tr-yangin/)
|
|
4
|
+
[](https://pypi.org/project/tr-yangin/)
|
|
5
|
+
[](https://github.com/YusufEminoglu/tr_yangin_sdk/actions/workflows/ci.yml)
|
|
6
|
+
[](https://github.com/YusufEminoglu/tr_yangin_sdk/blob/main/LICENSE)
|
|
7
|
+
|
|
8
|
+
**English summary.** `tr-yangin` runs early-design fire-safety checks under the
|
|
9
|
+
Turkish *Regulation on the Fire Protection of Buildings* (Binaların Yangından
|
|
10
|
+
Korunması Hakkında Yönetmelik, BKK 2007/12937, consolidated text as amended up to
|
|
11
|
+
30/6/2025): occupant load, number and width of exits, travel distances, stair
|
|
12
|
+
types, and the height/use triggers for protected stairs, fire lobbies,
|
|
13
|
+
pressurisation, sprinklers and fire detection. A building/storey description goes
|
|
14
|
+
in, a structured Turkish compliance report with article references comes out (text,
|
|
15
|
+
Markdown or JSON, also via a CLI). It is a preliminary design aid and does not
|
|
16
|
+
replace fire-brigade (itfaiye) approval.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
**Binaların Yangından Korunması Hakkında Yönetmelik'e göre erken tasarım kontrolleri.**
|
|
21
|
+
|
|
22
|
+
`tr-yangin`, mimari ve kentsel tasarımın ilk aşamasında bir bina veya kat
|
|
23
|
+
tanımını alır ve Yönetmelik'in kaçış ve aktif korunma hükümlerine göre madde
|
|
24
|
+
numaralı, yapılandırılmış bir Türkçe uygunluk raporu üretir:
|
|
25
|
+
|
|
26
|
+
- **Bina sınıfı ve yükseklik:** kullanım sınıfları (Madde 8-18), *bina yüksekliği*,
|
|
27
|
+
*yapı yüksekliği* ve *yüksek bina* tanımları (Madde 4).
|
|
28
|
+
- **Kullanıcı yükü:** Ek-5/A katsayılarıyla mekân ve kat kişi sayısı (Madde 32(1)).
|
|
29
|
+
- **Çıkış sayısı:** Madde 39 (50 / 500 / 1000 kişi eşikleri; yüksek tehlikede 25),
|
|
30
|
+
Madde 32(8), 48, 50, 52 istisnaları.
|
|
31
|
+
- **Kaçış genişlikleri:** 50 cm birim genişlik ve Ek-5/B birim kapasiteleriyle
|
|
32
|
+
kapı, merdiven, koridor/rampa toplam genişlikleri; 80 / 100 / 150 / 200 cm ve
|
|
33
|
+
yüksek binada 120 cm alt sınırları (Madde 32-33, 47, 49).
|
|
34
|
+
- **Kaçış uzaklıkları:** tek yön / iki yön, yağmurlamalı / yağmurlamasız ve
|
|
35
|
+
çıkmaz koridor sınırları (Ek-5/B), konut daire içi (Madde 48(2)) ve otel odası
|
|
36
|
+
(Madde 50(3)) sınırları.
|
|
37
|
+
- **Merdivenler:** gerekli kaçış merdiveni sayısı, korunumlu merdiven, yangın
|
|
38
|
+
güvenlik holü, basınçlandırma, acil durum asansörü, dengelenmiş ve dış açık
|
|
39
|
+
merdiven yasakları (Madde 34, 38-48, 63, 89).
|
|
40
|
+
- **Aktif sistemler:** yağmurlama (Madde 96), otomatik algılama (Madde 75, Ek-7),
|
|
41
|
+
yangın uyarı butonları (Madde 75(2)), itfaiye su alma hattı ve yangın dolapları
|
|
42
|
+
(Madde 94), itfaiye su verme bağlantısı (Madde 97).
|
|
43
|
+
|
|
44
|
+
Bütün sayısal değerler **tek bir JSON veri dosyasında** durur ve kullanıcı
|
|
45
|
+
tarafından kısmen geçersiz kılınabilir. Paketin çalışması için yalnızca Python
|
|
46
|
+
standart kütüphanesi yeterlidir.
|
|
47
|
+
|
|
48
|
+
> **Uyarı.** Bu paket bir **ön tasarım yardımcısıdır**. İtfaiye onayının, yangın
|
|
49
|
+
> danışmanının veya proje müellifinin incelemesinin ve ilgili idarenin kararının
|
|
50
|
+
> yerine geçmez. Yönetmelik metninin güncel hâlini ve yerel itfaiye uygulamalarını
|
|
51
|
+
> mutlaka kontrol edin.
|
|
52
|
+
|
|
53
|
+
## Kurulum
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pip install tr-yangin
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Python 3.9 veya üstü gerekir. Bağımlılık yoktur.
|
|
60
|
+
|
|
61
|
+
## Hızlı başlangıç (komut satırı)
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
tr-yangin ornek -o bina.json # örnek bina tanımı
|
|
65
|
+
tr-yangin rapor bina.json # Türkçe metin raporu
|
|
66
|
+
tr-yangin rapor bina.json --bicim md -o rapor.md
|
|
67
|
+
tr-yangin rapor bina.json --bicim json --siki # uygunsuzlukta çıkış kodu 1
|
|
68
|
+
|
|
69
|
+
tr-yangin kullanici-yuku --kullanim ofis --alan 1200 # 120 kişi
|
|
70
|
+
tr-yangin genislik --kisi 300 --sinif buro # gerekli genişlikler
|
|
71
|
+
tr-yangin uzaklik --sinif buro --iki-yon --yagmurlama # 75 m
|
|
72
|
+
tr-yangin tablolar # sınıf ve Ek-5/A anahtarları
|
|
73
|
+
tr-yangin --tablolar benim_tablom.json rapor bina.json # tablo geçersiz kılma
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Bina tanımı (Türkçe veya İngilizce anahtarlar kabul edilir):
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"ad": "Örnek büro binası",
|
|
81
|
+
"kullanim_sinifi": "buro",
|
|
82
|
+
"bina_yuksekligi_m": 18.6,
|
|
83
|
+
"yapi_yuksekligi_m": 22.4,
|
|
84
|
+
"yanmaz_yapim": true,
|
|
85
|
+
"katlar": [
|
|
86
|
+
{
|
|
87
|
+
"kat": 1,
|
|
88
|
+
"mekanlar": [
|
|
89
|
+
{"ad": "Açık ofis", "kullanim": "ofis", "alan_m2": 520},
|
|
90
|
+
{"ad": "Toplantı salonu", "kullanim": "toplanti_salonu", "alan_m2": 60}
|
|
91
|
+
],
|
|
92
|
+
"cikis_sayisi": 2, "merdiven_sayisi": 2, "merdiven_genisligi_m": 1.2,
|
|
93
|
+
"kapi_genisligi_m": 0.9, "koridor_genisligi_m": 1.4,
|
|
94
|
+
"kacis_uzakligi_m": 41, "iki_yonlu": true, "cikmaz_koridor_m": 9
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Rapordan bir kesit:
|
|
101
|
+
|
|
102
|
+
```text
|
|
103
|
+
KULLANICI YÜKÜ
|
|
104
|
+
--------------
|
|
105
|
+
[BİLGİ] [1. kat] Kat kullanıcı yükü 92 kişi. Açık ofis: 520 m² brüt / 10 m²/kişi = 52 kişi (Ek-5/A satır 11); Toplantı salonu: 60 m² net / 1.5 m²/kişi = 40 kişi (Ek-5/A satır 1)
|
|
106
|
+
|
|
107
|
+
ÇIKIŞ SAYISI VE KAÇIŞ GENİŞLİKLERİ
|
|
108
|
+
----------------------------------
|
|
109
|
+
[UYGUN DEĞİL] [1. kat] Çıkış kapısı temiz genişliği (yükseklik en az 200 cm); en az genişlik: 92 kişilik kat için 100 cm (Madde 33(1) kişi bandı).
|
|
110
|
+
gereken: ≥ 1.00 m | mevcut: 0.90 m | dayanak: Madde 33(1), (5)(b); Madde 47(1)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Durumlar: `UYGUN`, `UYGUN DEĞİL`, `GEREKLİ`, `GEREKLİ DEĞİL`, `BİLGİ`, `VERİ YOK`
|
|
114
|
+
(eksik veri bir uygunsuzluk sayılmaz, ayrıca raporlanır).
|
|
115
|
+
|
|
116
|
+
## Hızlı başlangıç (Python)
|
|
117
|
+
|
|
118
|
+
```python
|
|
119
|
+
from tr_yangin import Building, Storey, Space, assess, occupant_count, exit_widths
|
|
120
|
+
|
|
121
|
+
occupant_count("ofis", 1200) # 120 (Ek-5/A: 10 m²/kişi, brüt)
|
|
122
|
+
w = exit_widths(300, "buro") # Madde 33(1), Ek-5/B
|
|
123
|
+
w.stair_total_m, w.min_single_exit_m # (2.5, 1.0) -> 300/60 x 0.50 m
|
|
124
|
+
|
|
125
|
+
bina = Building(
|
|
126
|
+
use_class="buro", building_height_m=18.6, structure_height_m=22.4,
|
|
127
|
+
noncombustible_construction=True,
|
|
128
|
+
storeys=[
|
|
129
|
+
Storey(level=0, spaces=[Space(use="ofis", area_m2=600)], exits=2,
|
|
130
|
+
door_width_m=1.0, travel_distance_m=30, two_way=True),
|
|
131
|
+
Storey(level=1, spaces=[Space(use="ofis", area_m2=600)], exits=2, stairs=2,
|
|
132
|
+
stair_width_m=1.2, travel_distance_m=41, two_way=True),
|
|
133
|
+
],
|
|
134
|
+
)
|
|
135
|
+
rapor = assess(bina)
|
|
136
|
+
print(rapor.to_text()) # veya to_markdown(), to_json(), to_dict()
|
|
137
|
+
rapor.ok, len(rapor.failures), [f.reference for f in rapor.requirements]
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Daha uzun bir örnek için `examples/quickstart.py` dosyasına bakın.
|
|
141
|
+
|
|
142
|
+
## API özeti
|
|
143
|
+
|
|
144
|
+
| Nesne | Açıklama |
|
|
145
|
+
|---|---|
|
|
146
|
+
| `assess(bina, tables=None) -> Report` | Bütün kontrolleri çalıştırır. `bina` bir `Building` veya sözlük olabilir. |
|
|
147
|
+
| `Building`, `Storey`, `Space` | Girdi modeli; `Building.from_dict` Türkçe anahtarları da kabul eder. |
|
|
148
|
+
| `Report` | `findings`, `failures`, `requirements`, `ok`, `counts()`, `to_text()`, `to_markdown()`, `to_json()`, `to_dict()`. |
|
|
149
|
+
| `Finding`, `Status` | Bir bulgu: konu, kat, durum, açıklama, gereken, mevcut, dayanak (madde). |
|
|
150
|
+
| `occupant_count(kullanim, alan, beyan=None)` | Ek-5/A kullanıcı yükü (yukarı yuvarlanır; beyan büyükse o esas). |
|
|
151
|
+
| `min_exit_count(kisi, yuksek_tehlike=False)` | Madde 39(2) çıkış sayısı. |
|
|
152
|
+
| `exit_widths(kisi, sinif, yuksek_bina=False)` | Madde 32-33 ve Ek-5/B genişlikleri (`ExitWidths`). |
|
|
153
|
+
| `max_travel_distance(sinif, iki_yon, yagmurlama, dusuk_alevlenir=False)` | Ek-5/B en fazla kaçış uzaklığı. |
|
|
154
|
+
| `max_dead_end`, `min_exit_separation`, `is_high_rise` | Çıkmaz koridor, Madde 39(3) çıkışlar arası uzaklık, yüksek bina testi. |
|
|
155
|
+
| `load_tables(override)` / `Tables` | Veri dosyasını yükler; sözlük veya JSON dosyasıyla derin birleştirme yapar. |
|
|
156
|
+
| `example_building()` | Paketle gelen örnek bina tanımı. |
|
|
157
|
+
|
|
158
|
+
### Kullanım sınıfları (`kullanim_sinifi`)
|
|
159
|
+
|
|
160
|
+
`konut`, `otel`, `yurt`, `egitim`, `saglik` (yataklı), `ayakta_tedavi`, `buro`,
|
|
161
|
+
`ticaret`, `endustri`, `toplanma`, `depo`, `otopark`, `yuksek_tehlike`.
|
|
162
|
+
Her sınıf bir Ek-5/B satırına ve (varsa) bir Ek-7 satırına bağlıdır.
|
|
163
|
+
Karışık kullanımlı binalarda Madde 18 gereği daha sıkı sınıfı seçin veya
|
|
164
|
+
yangın bölmesiyle ayrılmış bölümleri ayrı ayrı değerlendirin.
|
|
165
|
+
|
|
166
|
+
### Ek-5/A mekân kullanımları (`kullanim`)
|
|
167
|
+
|
|
168
|
+
`toplanti_salonu` (1.5, net), `dans_oturma` (1.0, net), `dans_ayakta` (0.5, net),
|
|
169
|
+
`sergi_studyo` (1.5, net), `terminal_bekleme` (3, net), `derslik` (1.5),
|
|
170
|
+
`resepsiyon` (3), `spor` (3), `magaza` (5), `galeri_muze` (5), `fitness_okuma` (5),
|
|
171
|
+
`ofis` (10), `ogrenci_yatak` (10), `uretim` (10), `hastane_yatak` (20),
|
|
172
|
+
`mutfak` (10), `otel_yatak` (20), `hastane_lab` (20), `muayene` (5), `depo` (30),
|
|
173
|
+
`otopark` (30) m²/kişi. Ek-5/A'da konut satırı yoktur: konutlarda kişi sayısını
|
|
174
|
+
`kisi` alanıyla verin veya tabloya kendi varsayımınızı ekleyin.
|
|
175
|
+
|
|
176
|
+
### Tabloları geçersiz kılma
|
|
177
|
+
|
|
178
|
+
```python
|
|
179
|
+
from tr_yangin import load_tables, assess
|
|
180
|
+
|
|
181
|
+
tb = load_tables({
|
|
182
|
+
"thresholds": {"high_rise_rule": "and"}, # yüksek bina: iki şart birlikte
|
|
183
|
+
"occupant_load_factors": {"konut": {"row": "-", "label": "Konut (varsayım)",
|
|
184
|
+
"m2_per_person": 20, "area_basis": "brut"}},
|
|
185
|
+
})
|
|
186
|
+
rapor = assess(bina, tb)
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Komut satırında aynı yapı `--tablolar dosya.json` ile verilir. Bütün tablo
|
|
190
|
+
`tr-yangin tablolar --json` ile görülebilir.
|
|
191
|
+
|
|
192
|
+
## Yöntem ve kaynaklar
|
|
193
|
+
|
|
194
|
+
Birincil kaynak, mevzuat.gov.tr'deki derlenmiş metindir:
|
|
195
|
+
*Binaların Yangından Korunması Hakkında Yönetmelik*, Bakanlar Kurulu Kararı
|
|
196
|
+
27/11/2007 No 2007/12937, Resmî Gazete 19/12/2007 No 26735; değişiklikler
|
|
197
|
+
2009/15316, 2012/2958, 2015/7401, 2017/10459, 2018/11347, CK 3167 (2020),
|
|
198
|
+
CK 4825 (2021) ve CK 10026 (30/6/2025, Geçici Madde 4).
|
|
199
|
+
<https://www.mevzuat.gov.tr/mevzuat?MevzuatNo=200712937&MevzuatTur=21&MevzuatTertip=5>
|
|
200
|
+
(metin 9 Kasım 2026'da kontrol edildi).
|
|
201
|
+
|
|
202
|
+
Kullanılan hükümler: Madde 4 (tanımlar), 8-18 (kullanım sınıfları), 31-33
|
|
203
|
+
(kaçış yolları, kullanıcı yükü, çıkış genişliği), 34 (yangın güvenlik holü),
|
|
204
|
+
38-48 (kaçış merdivenleri, çıkış sayısı, kapılar, konutlar), 49-52 (sağlık,
|
|
205
|
+
oteller, toplanma, büro/mağaza/fabrika), 63 (acil durum asansörü), 75 ve 81
|
|
206
|
+
(algılama ve uyarı), 89 (basınçlandırma), 94 (itfaiye su alma hattı, yangın
|
|
207
|
+
dolapları), 96 (yağmurlama), 97 (itfaiye su verme bağlantısı); Ek-5/A, Ek-5/B,
|
|
208
|
+
Ek-7. Ek-5/B'nin hastaneler satırındaki merdiven kapasitesi değişiklikle
|
|
209
|
+
30 kişidir. Ek-7'nin kurumsal, ticaret, endüstri ve toplanma satırları Danıştay
|
|
210
|
+
10. Dairesinin 28/12/2021 tarihli E.2019/261 K.2021/5537 sayılı kararıyla iptal
|
|
211
|
+
edilmiştir (İDDK 22/2/2023 onama); bu sınıflar için rapor bunu belirtir.
|
|
212
|
+
|
|
213
|
+
Hesap kuralları:
|
|
214
|
+
|
|
215
|
+
- Kişi sayısı = ⌈alan / katsayı⌉; beyan edilen kişi sayısı büyükse o esas alınır
|
|
216
|
+
(Ek-5/A notu). Ek-5/A'nın 1-4. satırları net, diğerleri brüt alanla çalışır.
|
|
217
|
+
- Toplam gerekli genişlik = kişi / birim kapasite × 0.50 m (Madde 33(1)).
|
|
218
|
+
Değer, 50 cm'lik tam birimlere yuvarlanmaz.
|
|
219
|
+
- Merdiven genişliği kat bazında, o katın kullanıcı yüküyle kontrol edilir;
|
|
220
|
+
iki çıkış gereken durumda her merdiven yükün yarısını taşımalıdır (Madde 33(4)).
|
|
221
|
+
- Yağmurlama durumu verilmezse, sistem yalnızca Madde 96'nın zorunlu kıldığı
|
|
222
|
+
durumda var kabul edilir ve kaçış uzaklıkları buna göre seçilir.
|
|
223
|
+
|
|
224
|
+
## Sınırlamalar ve yorumlar
|
|
225
|
+
|
|
226
|
+
- **Yüksek bina tanımı** ("bina yüksekliği 21.50 m'den, yapı yüksekliği 30.50
|
|
227
|
+
m'den fazla") iki şartın birlikte mi ayrı ayrı mı arandığını açıkça söylemez.
|
|
228
|
+
Varsayılan ihtiyatlı yorum "**veya**"dır; `high_rise_rule: "and"` ile değiştirilebilir.
|
|
229
|
+
- **Sınır değerler:** Madde 48(5)'teki 21.50 / 30.50 / 51.50 m eşiklerine tam
|
|
230
|
+
eşit yükseklikler bir üst (daha sıkı) banda alınır; Madde 47(3)'te tam 4 kat
|
|
231
|
+
90 dk kapı ister; Madde 50'de tam 20 yatak iki çıkış ister.
|
|
232
|
+
- **Madde 96(2)(d)**'deki "katlı" şartı ihtiyaten aranmaz; toplanma sınıfı
|
|
233
|
+
"eğlence yeri" olarak bu bende dahil edilir.
|
|
234
|
+
- **Madde 89(1)** merdiven kovası yüksekliğini esas alır; paket yapı
|
|
235
|
+
yüksekliğini vekil değer olarak kullanır. Madde 48(7)-(8) uyarınca bodrum veya
|
|
236
|
+
çatı arası hariç tutulacaksa `konut_merdiven_yuksekligi_m` alanını kullanın.
|
|
237
|
+
- **Madde 75(2)** kat sayısı bodrumlar dahil sayılır.
|
|
238
|
+
- Geometri (kaçış uzaklığı, köşegen, genişlikler) kullanıcı tarafından ölçülüp
|
|
239
|
+
girilir; paket plan çizimi okumaz ve yol bulma yapmaz.
|
|
240
|
+
- Kapsam dışı: yapı elemanlarının yangın dayanımları (Ek-3), kompartıman alanları
|
|
241
|
+
(Ek-4), malzeme sınıfları (Ek-2), koltuk sıraları (Ek-6), su deposu ve pompa
|
|
242
|
+
hesapları (Ek-8), tehlikeli maddeler (Sekizinci Kısım), mevcut yapılara özel
|
|
243
|
+
hükümler (Onuncu Kısım), cezaevleri, açık otoparklar.
|
|
244
|
+
- Yönetmelik değişebilir. Tablo dosyası güncel değilse `load_tables` ile düzeltin.
|
|
245
|
+
|
|
246
|
+
## Geliştirme
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
pip install -e ".[dev]"
|
|
250
|
+
python -m pytest
|
|
251
|
+
python -m ruff check . && python -m ruff format --check src tests
|
|
252
|
+
python -m mypy src
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
## Akademik atıf
|
|
256
|
+
|
|
257
|
+
```bibtex
|
|
258
|
+
@software{eminoglu_tr_yangin,
|
|
259
|
+
author = {Eminoğlu, Yusuf},
|
|
260
|
+
title = {tr-yangin},
|
|
261
|
+
year = {2026},
|
|
262
|
+
version = {0.1.0},
|
|
263
|
+
url = {https://github.com/YusufEminoglu/tr_yangin_sdk}
|
|
264
|
+
}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
## Lisans
|
|
268
|
+
|
|
269
|
+
MIT. Ayrıntılar için [LICENSE](LICENSE) dosyasına bakın. İletişim:
|
|
270
|
+
geospacephilo@gmail.com
|