@appaflytech/zeyrek-ai-mcp 0.0.36 → 0.0.40
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.
- package/.env.example +15 -0
- package/README.md +5 -5
- package/dist/config.js +37 -0
- package/dist/index.js +2 -0
- package/dist/knowledge/access.js +802 -0
- package/dist/knowledge/backendConstraints.js +18 -1
- package/dist/knowledge/case.js +41 -0
- package/dist/knowledge/componentCatalog.js +524 -53
- package/dist/knowledge/componentEvents.js +132 -7
- package/dist/knowledge/connectDataBind.js +851 -0
- package/dist/knowledge/connectDataDefinition.js +344 -0
- package/dist/knowledge/connectDataExecute.js +93 -0
- package/dist/knowledge/connectDataRules.js +128 -0
- package/dist/knowledge/decision.js +121 -0
- package/dist/knowledge/expressionPrelude.js +60 -0
- package/dist/knowledge/layoutSummary.js +140 -2
- package/dist/knowledge/microserviceParameters.js +58 -0
- package/dist/knowledge/mining.js +94 -0
- package/dist/knowledge/mobileComponentCatalog.js +876 -0
- package/dist/knowledge/mobileComponentEvents.js +259 -0
- package/dist/knowledge/mobileStore.js +396 -0
- package/dist/knowledge/normalize.js +240 -72
- package/dist/knowledge/outlines.js +36 -0
- package/dist/knowledge/platform/lint.js +385 -0
- package/dist/knowledge/platform/mobile.js +142 -0
- package/dist/knowledge/platform/mobileLayoutLint.js +324 -0
- package/dist/knowledge/platform/mobileRules.js +231 -0
- package/dist/knowledge/platform/mobileSpacing.js +82 -0
- package/dist/knowledge/platform/mobileTabs.js +108 -0
- package/dist/knowledge/platform/nativeBoxModel.js +44 -0
- package/dist/knowledge/platform/profile.js +25 -0
- package/dist/knowledge/platform/resolve.js +122 -0
- package/dist/knowledge/platform/web.js +39 -0
- package/dist/knowledge/policy.js +18 -4
- package/dist/knowledge/process.js +510 -0
- package/dist/knowledge/reservedTables.js +79 -0
- package/dist/knowledge/rowFilter.js +43 -0
- package/dist/knowledge/rules.js +485 -22
- package/dist/knowledge/schemaGuard.js +11 -0
- package/dist/knowledge/styleResolve.js +64 -10
- package/dist/knowledge/styleResolveNative.js +529 -0
- package/dist/knowledge/themeResolve.js +3 -3
- package/dist/observability/trace.js +13 -5
- package/dist/platform/argumentAliases.js +128 -0
- package/dist/platform/bodyFile.js +103 -0
- package/dist/platform/capture/actions.js +398 -0
- package/dist/platform/capture/browser.js +1 -0
- package/dist/platform/capture/capture.js +683 -0
- package/dist/platform/capture/console-log.js +122 -0
- package/dist/platform/capture/index.js +11 -0
- package/dist/platform/capture/readiness.js +103 -0
- package/dist/platform/capture/summary.js +77 -0
- package/dist/platform/capture/target.js +5 -0
- package/dist/platform/capture/targets/studio-mobile.js +15 -0
- package/dist/platform/capture/targets/studio-web.js +5 -0
- package/dist/platform/diagnostics.js +10 -4
- package/dist/platform/domSummary.js +1 -1
- package/dist/platform/errors.js +163 -10
- package/dist/platform/http.js +29 -8
- package/dist/platform/impersonation.js +45 -0
- package/dist/platform/jsonArray.js +24 -0
- package/dist/platform/responses.js +39 -5
- package/dist/platform/schemaReadMemory.js +60 -0
- package/dist/platform/secrets.js +68 -2
- package/dist/platform/strictArguments.js +68 -12
- package/dist/platform/tokenVault.js +187 -4
- package/dist/resources/examples/bpm-gorev-kontrol.json +294 -0
- package/dist/resources/examples/bpm-iso-dokuman.json +228 -0
- package/dist/resources/examples/bpm-satinalma.json +376 -0
- package/dist/resources/examples/connect-data-convert-verify.json +107 -0
- package/dist/resources/examples/connect-data-dropdown-roles.json +66 -0
- package/dist/resources/examples/connect-data-edit-m2m.json +73 -0
- package/dist/resources/examples/connect-data-query-params.json +50 -0
- package/dist/resources/examples/connect-data-table-entity.json +147 -0
- package/dist/resources/examples/connect-data-workflow-microservice.json +65 -0
- package/dist/resources/examples/middleware-authenticate.json +1 -1
- package/dist/resources/examples/mobile-app-shell-drawer.json +244 -0
- package/dist/resources/examples/mobile-app-shell-stack.json +157 -0
- package/dist/resources/examples/mobile-app-shell-tab.json +208 -0
- package/dist/resources/examples/mobile-form-screen.json +365 -0
- package/dist/resources/examples/mobile-list-detail-form.json +703 -0
- package/dist/resources/examples/page-detail-profile.json +2 -1
- package/dist/resources/examples/page-dynamic-form.json +3 -2
- package/dist/resources/examples/page-flex-sections.json +1 -1
- package/dist/resources/examples/page-html-embed.json +1 -1
- package/dist/resources/examples/workflow-basic.json +8 -2
- package/dist/resources/guides/access.md +810 -0
- package/dist/resources/guides/bpm.md +691 -0
- package/dist/resources/guides/case.md +153 -0
- package/dist/resources/guides/component.md +92 -5
- package/dist/resources/guides/decision.md +185 -0
- package/dist/resources/guides/entity.md +50 -8
- package/dist/resources/guides/expressions.md +14 -5
- package/dist/resources/guides/functions.md +1 -1
- package/dist/resources/guides/getting-started.md +38 -1
- package/dist/resources/guides/layout.md +11 -7
- package/dist/resources/guides/merge.md +42 -7
- package/dist/resources/guides/microservice.md +88 -3
- package/dist/resources/guides/middleware.md +69 -5
- package/dist/resources/guides/mobile-layout.md +193 -0
- package/dist/resources/guides/mobile-publish.md +148 -0
- package/dist/resources/guides/mobile.md +565 -0
- package/dist/resources/guides/page.md +469 -82
- package/dist/resources/guides/theme.md +8 -2
- package/dist/resources/guides/translation.md +1 -1
- package/dist/resources/guides/workflow.md +58 -1
- package/dist/resources/read.js +41 -0
- package/dist/resources/rules.js +11 -5
- package/dist/resources/schema-fingerprint.json +7 -5
- package/dist/resources/schemas/AccessExplanationDto.json +144 -0
- package/dist/resources/schemas/AccessMatrixDto.json +170 -0
- package/dist/resources/schemas/AccessPermissionDto.json +57 -0
- package/dist/resources/schemas/AccessPolicyDto.json +223 -0
- package/dist/resources/schemas/AccessResourceDto.json +86 -0
- package/dist/resources/schemas/AppSessionDto.json +53 -0
- package/dist/resources/schemas/ConnectDataDescribeDto.json +344 -0
- package/dist/resources/schemas/ConnectDataRequestModel.json +202 -0
- package/dist/resources/schemas/ConnectDataResultDto.json +421 -0
- package/dist/resources/schemas/ConnectorCredentialDto.json +70 -0
- package/dist/resources/schemas/ConvertConnectDataToMicroserviceCommand.json +37 -0
- package/dist/resources/schemas/CreateAccessPolicyCommand.json +209 -0
- package/dist/resources/schemas/CreateDecisionCommand.json +221 -0
- package/dist/resources/schemas/CreateEntityCommand.json +118 -0
- package/dist/resources/schemas/CreateMicroserviceCommand.json +13 -1
- package/dist/resources/schemas/CreateProcessDefinitionCommand.json +1337 -0
- package/dist/resources/schemas/CreateQueryCommand.json +4 -0
- package/dist/resources/schemas/CreateWorkflowCommand.json +146 -1
- package/dist/resources/schemas/DataJobDto.json +6 -1
- package/dist/resources/schemas/DecisionDto.json +302 -0
- package/dist/resources/schemas/DetachConnectDataMicroserviceCommand.json +28 -0
- package/dist/resources/schemas/ExplainAccessQuery.json +33 -0
- package/dist/resources/schemas/GenerateProcessDocumentCommand.json +116 -0
- package/dist/resources/schemas/GlobalFunctionUpdateResultDto.json +24 -0
- package/dist/resources/schemas/MicroserviceDto.json +15 -3
- package/dist/resources/schemas/OrganizationProjectDto.json +343 -0
- package/dist/resources/schemas/OrganizationSchemaDto.json +196 -0
- package/dist/resources/schemas/OrganizationSchemaVersionDto.json +207 -0
- package/dist/resources/schemas/PatchProcessDefinitionCommand.json +76 -0
- package/dist/resources/schemas/PreviewMicroserviceCommand.json +10 -1
- package/dist/resources/schemas/PreviewWorkflowCommand.json +25 -1
- package/dist/resources/schemas/ProcessDefinitionDto.json +1480 -0
- package/dist/resources/schemas/ProcessSimulationDto.json +96 -0
- package/dist/resources/schemas/SaveConnectorCredentialCommand.json +90 -0
- package/dist/resources/schemas/SaveProcessEventSourceCommand.json +61 -0
- package/dist/resources/schemas/SaveProcessMailSourceCommand.json +89 -0
- package/dist/resources/schemas/SignProcessTaskCommand.json +73 -0
- package/dist/resources/schemas/SimulateProcessDefinitionQuery.json +92 -0
- package/dist/resources/schemas/StartMobileBuildCommand.json +54 -0
- package/dist/resources/schemas/StepDto.json +25 -1
- package/dist/resources/schemas/UpdateAccessPolicyCommand.json +209 -0
- package/dist/resources/schemas/UpdateDecisionCommand.json +216 -0
- package/dist/resources/schemas/UpdateEntityCommand.json +118 -0
- package/dist/resources/schemas/UpdateMicroserviceCommand.json +13 -1
- package/dist/resources/schemas/UpdateProcessDefinitionCommand.json +1357 -0
- package/dist/resources/schemas/UpdateQueryCommand.json +4 -0
- package/dist/resources/schemas/UpdateViewCommand.json +0 -2
- package/dist/resources/schemas/UpdateWorkflowCommand.json +146 -1
- package/dist/resources/schemas/UpsertMobileStoreSettingsCommand.json +333 -0
- package/dist/resources/schemas/ValidateProcessDefinitionQuery.json +1339 -0
- package/dist/server.js +31 -1
- package/dist/tools/access.js +369 -2
- package/dist/tools/accessOperations.js +135 -0
- package/dist/tools/accessPolicies.js +170 -0
- package/dist/tools/accessRuntime.js +203 -0
- package/dist/tools/applications.js +63 -3
- package/dist/tools/bpm.js +343 -0
- package/dist/tools/bpmGovernance.js +266 -0
- package/dist/tools/bpmOperations.js +230 -0
- package/dist/tools/bpmReporting.js +154 -0
- package/dist/tools/bpmRouting.js +150 -0
- package/dist/tools/bpmRuntime.js +396 -0
- package/dist/tools/case.js +178 -0
- package/dist/tools/caseRuntime.js +89 -0
- package/dist/tools/common.js +19 -6
- package/dist/tools/components.js +118 -14
- package/dist/tools/connectData.js +450 -0
- package/dist/tools/connectors.js +193 -0
- package/dist/tools/datasources.js +3 -3
- package/dist/tools/decisions.js +206 -0
- package/dist/tools/dependencies.js +1 -1
- package/dist/tools/deployments.js +38 -3
- package/dist/tools/designSchemaPatch.js +34 -9
- package/dist/tools/dtos.js +36 -5
- package/dist/tools/entities.js +79 -12
- package/dist/tools/environments.js +1 -1
- package/dist/tools/externalComponents.js +26 -5
- package/dist/tools/flows.js +119 -13
- package/dist/tools/folders.js +1 -1
- package/dist/tools/imports.js +5 -2
- package/dist/tools/layouts.js +50 -17
- package/dist/tools/merges.js +2 -2
- package/dist/tools/microservices.js +77 -25
- package/dist/tools/mobile.js +280 -0
- package/dist/tools/mobileStore.js +572 -0
- package/dist/tools/modules.js +48 -0
- package/dist/tools/organizationStructure.js +137 -0
- package/dist/tools/pages.js +467 -100
- package/dist/tools/platformInfo.js +28 -8
- package/dist/tools/profileWrite.js +92 -0
- package/dist/tools/projects.js +71 -9
- package/dist/tools/rows.js +69 -13
- package/dist/tools/schemaOps.js +61 -1
- package/dist/tools/screenWrite.js +36 -7
- package/dist/tools/screens.js +95 -5
- package/dist/tools/templates.js +26 -1
- package/dist/tools/translations.js +1 -1
- package/dist/tools/variables.js +11 -5
- package/dist/tools/workflows.js +10 -5
- package/package.json +2 -2
- package/dist/platform/screenshot.js +0 -1162
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_meta": {
|
|
3
|
+
"synthetic": false,
|
|
4
|
+
"note": "datatable'ı flow yazmadan bir entity'ye bağlar. Canlı doğrulandı (2026-09-17, development rolkompleks, smoke-connect-data): dryRun findings [], yazma touched [tbl1], runtime.propType connectData, ekran 1 to 10 of 110.",
|
|
5
|
+
"harvestedFrom": "plans/connect-data g-12 canlı koşusu"
|
|
6
|
+
},
|
|
7
|
+
"_rules": {
|
|
8
|
+
"oneCall": "connect_data_bind bileşen kaydını (component_get.connectData), kaynağın kabiliyetini (connect_data_describe) okur, set_connect_data + columns'u tek atomik yamayla yazar. Önce dryRun: true.",
|
|
9
|
+
"fields": "Liste bileşeninde fields görünen kolonların sırasıdır; verilmezse bütün görünür alanlar seçilir.",
|
|
10
|
+
"expand": "İlişki alanı satırda hedef nesnesi olarak gelir (sube: { id, ad }); columns: 'auto' ilişkiye relation kolonu üretir.",
|
|
11
|
+
"filterable": "filterable/searchable seçili alanlardan olur (CD-004). Korumalı alanda (tckn) yalnız eq/neq/in/notin çalışır; kolonun işleç listesini runtime sunucudan alır.",
|
|
12
|
+
"policy": "Tanımdaki alanı politika gizliyorsa kullanıcı onu yanıtta ve kolonda görmez; ayrıca gizlemeye gerek yok.",
|
|
13
|
+
"verify": "connect_data_get → page_screenshot (runtimeErrors boş, satırlar çizili) → connect_data_preview { asUserId } başka kullanıcının gözüyle.",
|
|
14
|
+
"forbidden": "Bağlı rows'a flow setter ya da set_binding yazılmaz (CD-005)."
|
|
15
|
+
},
|
|
16
|
+
"connectDataBindArgs": {
|
|
17
|
+
"applicationId": "<application id>",
|
|
18
|
+
"pageId": "<page id>",
|
|
19
|
+
"element": "tbl1",
|
|
20
|
+
"prop": "rows",
|
|
21
|
+
"source": {
|
|
22
|
+
"kind": "entity",
|
|
23
|
+
"id": "<cd_musteriler entity id>"
|
|
24
|
+
},
|
|
25
|
+
"fields": [
|
|
26
|
+
"ad",
|
|
27
|
+
"soyad",
|
|
28
|
+
"tckn",
|
|
29
|
+
"puan",
|
|
30
|
+
"sube"
|
|
31
|
+
],
|
|
32
|
+
"expand": {
|
|
33
|
+
"sube": [
|
|
34
|
+
"ad"
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
"filterable": [
|
|
38
|
+
"ad",
|
|
39
|
+
"tckn",
|
|
40
|
+
"puan"
|
|
41
|
+
],
|
|
42
|
+
"searchable": [
|
|
43
|
+
"ad",
|
|
44
|
+
"soyad"
|
|
45
|
+
],
|
|
46
|
+
"pageSize": 25
|
|
47
|
+
},
|
|
48
|
+
"resultingDefinition": {
|
|
49
|
+
"version": 1,
|
|
50
|
+
"source": {
|
|
51
|
+
"kind": "entity",
|
|
52
|
+
"id": "<cd_musteriler entity id>",
|
|
53
|
+
"slug": "cd_musteriler"
|
|
54
|
+
},
|
|
55
|
+
"fields": [
|
|
56
|
+
{
|
|
57
|
+
"id": "<ad field id>",
|
|
58
|
+
"slug": "ad"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"id": "<soyad field id>",
|
|
62
|
+
"slug": "soyad"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "<tckn field id>",
|
|
66
|
+
"slug": "tckn"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"id": "<puan field id>",
|
|
70
|
+
"slug": "puan"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": "<sube field id>",
|
|
74
|
+
"slug": "sube",
|
|
75
|
+
"expand": [
|
|
76
|
+
{
|
|
77
|
+
"slug": "ad"
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"filter": null,
|
|
83
|
+
"sort": [
|
|
84
|
+
{
|
|
85
|
+
"field": "ad",
|
|
86
|
+
"ascending": true
|
|
87
|
+
}
|
|
88
|
+
],
|
|
89
|
+
"page": {
|
|
90
|
+
"mode": "offset",
|
|
91
|
+
"limit": 25
|
|
92
|
+
},
|
|
93
|
+
"language": "request",
|
|
94
|
+
"mapping": {
|
|
95
|
+
"roles": {},
|
|
96
|
+
"columns": [
|
|
97
|
+
{
|
|
98
|
+
"field": "ad"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"field": "soyad"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"field": "tckn"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"field": "puan"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"field": "sube"
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
},
|
|
114
|
+
"behavior": {
|
|
115
|
+
"filterable": [
|
|
116
|
+
"ad",
|
|
117
|
+
"tckn",
|
|
118
|
+
"puan"
|
|
119
|
+
],
|
|
120
|
+
"searchable": [
|
|
121
|
+
"ad",
|
|
122
|
+
"soyad"
|
|
123
|
+
],
|
|
124
|
+
"edit": {
|
|
125
|
+
"create": false,
|
|
126
|
+
"update": false,
|
|
127
|
+
"delete": false,
|
|
128
|
+
"bulk": false,
|
|
129
|
+
"saveMode": "row",
|
|
130
|
+
"editable": [],
|
|
131
|
+
"defaults": {},
|
|
132
|
+
"writeMode": "atomic"
|
|
133
|
+
},
|
|
134
|
+
"refresh": {
|
|
135
|
+
"afterWrite": "reload",
|
|
136
|
+
"poll": null
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
"generatedColumns": [
|
|
141
|
+
"ad:text",
|
|
142
|
+
"soyad:text",
|
|
143
|
+
"tckn:text",
|
|
144
|
+
"puan:number",
|
|
145
|
+
"sube:relation"
|
|
146
|
+
]
|
|
147
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_meta": {
|
|
3
|
+
"synthetic": false,
|
|
4
|
+
"note": "Workflow ve microservice kaynağını datatable'a bağlar. Canlı ölçüldü (2026-09-21, cdt-mcp, koşu 38/04): workflow params 5000 → 4 satır (mode client); table ucu tanım filtresi fiyat gte 1000 ∧ istek filtresi kategori eq Elektronik → 4 satır, fiyat azalan.",
|
|
5
|
+
"harvestedFrom": "zeyrek-mcp/docs/38-connect-data-kabul-kosusu/04-mcp-uctan-uca.md Başlık 1"
|
|
6
|
+
},
|
|
7
|
+
"_rules": {
|
|
8
|
+
"workflowShape": "Workflow bağlanabilmesi için returnBehavior: 'array' ve dönüş DTO'su (returnDtoId) şarttır; parametreler parameterBehavior: 'object' + girdi DTO'suyla tanımlanır ve bağlantının params'ından gelir. Kaynak listesi (connect_data_sources) yalnız çıktı DTO'lu workflow'ları verir; alanlar dönüş DTO'sundan okunur.",
|
|
9
|
+
"workflowPaging": "Workflow sunucuda sayfalamaz ve süzmez: pageMode client (CD-007), filter/sort/filterable yok (CD-013).",
|
|
10
|
+
"microserviceShape": "Microservice yalnız OKUYAN, middleware'siz, dönüş şeması olan uçta bağlanır (yazan tablo ucu 422). Tablo ucunda enableDynamicFilters: true alanları canFilter/sortable yapar; sort/limit query-string parametresiyle offset sayfalama açılır. Query kaynaklı uç client kipte kalır.",
|
|
11
|
+
"microserviceFilter": "Tanım filtresi uçta her istekte uygulanır; kullanıcı filtresi (filterable) onunla AND'lenir.",
|
|
12
|
+
"verify": "connect_data_preview (Studio ucu) → kompleks projede connect_data_execute { op: 'list', asUserId }."
|
|
13
|
+
},
|
|
14
|
+
"workflowBindArgs": {
|
|
15
|
+
"applicationId": "<application id>",
|
|
16
|
+
"pageId": "<page id>",
|
|
17
|
+
"element": "dt_wf",
|
|
18
|
+
"prop": "rows",
|
|
19
|
+
"source": {
|
|
20
|
+
"kind": "workflow",
|
|
21
|
+
"id": "<pahali-urunler workflow id>"
|
|
22
|
+
},
|
|
23
|
+
"fields": [
|
|
24
|
+
"ad",
|
|
25
|
+
"kategori",
|
|
26
|
+
"fiyat"
|
|
27
|
+
],
|
|
28
|
+
"params": {
|
|
29
|
+
"minFiyat": 5000
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"connectDataBindArgs": {
|
|
33
|
+
"applicationId": "<application id>",
|
|
34
|
+
"pageId": "<page id>",
|
|
35
|
+
"element": "dt_ms",
|
|
36
|
+
"prop": "rows",
|
|
37
|
+
"source": {
|
|
38
|
+
"kind": "microservice",
|
|
39
|
+
"id": "<urun-listesi microservice id>"
|
|
40
|
+
},
|
|
41
|
+
"fields": [
|
|
42
|
+
"ad",
|
|
43
|
+
"kategori",
|
|
44
|
+
"fiyat",
|
|
45
|
+
"stok"
|
|
46
|
+
],
|
|
47
|
+
"filter": {
|
|
48
|
+
"filterType": "single",
|
|
49
|
+
"field": "fiyat",
|
|
50
|
+
"operator": "gte",
|
|
51
|
+
"value": 1000
|
|
52
|
+
},
|
|
53
|
+
"sort": [
|
|
54
|
+
{
|
|
55
|
+
"field": "fiyat",
|
|
56
|
+
"ascending": false
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"filterable": [
|
|
60
|
+
"kategori",
|
|
61
|
+
"fiyat"
|
|
62
|
+
],
|
|
63
|
+
"pageSize": 5
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -182,7 +182,7 @@
|
|
|
182
182
|
]
|
|
183
183
|
},
|
|
184
184
|
"settingsSetterVariant": {
|
|
185
|
-
"note": "Genel amaçlı setter (qm '[SY] Settings Setter'
|
|
185
|
+
"note": "Genel amaçlı setter (qm '[SY] Settings Setter'): start -> settings [table get, ayarlar tablosu] -> setPrivate [type:'variable', rule.name:'settingsPrivate', rule.expression:'{ ...settings.data }', rule.dataTransferObjectId:<ayarlar DTO>, rule.isPrivate:true] -> setPublic [type:'variable', rule.name:'settings', rule.expression:'({ app_name: settings.data.app_name })']. Response YOK — sadece değişken kurar; bağlandığı her uçta settings.<alan> okunur. Sayfaya bağlanırsa işaretsiz değişkenler Page.variables ile istemciye gider: gizli değer taşıyan ya da kaydı yayan değişken isPrivate:true olmalı, istemciye gidecek alanlar izin listesiyle kurulur (MW-007). Ad öneki ([A]/[SY]) alfabetik koşum sırasını kurmak içindir."
|
|
186
186
|
},
|
|
187
187
|
"roleGateVariant": {
|
|
188
188
|
"note": "Rol kapısını AYRI bir middleware'e ayırma: kimlik middleware'i set-user'a ULAŞMADAN biterse (çerez yok, koşul else dalı) 'user' hiç tanımlanmaz ve rolü okuyan middleware ham 'user is not defined' ile 500 verir — kullanıcı 401 yerine 500 görür (crm koşumu B-3). Kapıyı bu akışın İÇİNE, setUser'dan SONRA koy. Authorized hedefin rolleri BOŞSA true döndüğü için tek middleware her uca bağlanabilir; kapı yalnız roleIds dolu uçlarda kapanır.",
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_meta": {
|
|
3
|
+
"synthetic": true,
|
|
4
|
+
"note": "Mobil uygulama kabuğu — ÇEKMECE: app-bar (leading 'menu' + menuTarget) + slot + drawer widget'ı. Çekmece ayar değil bileşendir; içindeki düğmeler sıradan redirect akışlarıyla sayfa açar. mobile_app_create drawer:true ile bu kabuğu kurar.",
|
|
5
|
+
"pairsWith": "mobile-app-shell-stack, mobile-app-shell-tab",
|
|
6
|
+
"sourceRef": "platform_guide('mobile') §Gezinme; plans/mobil-uygulama-expo/05-mobil-ayarlar-ve-gezinme.md §2.5, §8"
|
|
7
|
+
},
|
|
8
|
+
"_rules": {
|
|
9
|
+
"flexOnly": "Mobil çizer yalnız flex'tir: blocks boş, sıra dizi indeksi, ölçü appearance ile (MOB-001). Kökte layout prop'u YOK — mobil container şeması onu düşürür.",
|
|
10
|
+
"singleSlot": "TEK slot; sayfa şeması slot'a yerleşir (LAY-002 / LAY-006 web'dekiyle aynı).",
|
|
11
|
+
"appBarTitle": "app-bar.title boşsa çubuk başlıksız çizilir — sayfa adına düşen bir yedek YOKTUR (runtime app-bar yalnız title'ı yazar; koşu 37 S-9, mizanpaj 06 kör koşusu). Sabit başlık için mobile_app_create title'ı, sayfaya göre değişen başlık için title'ı bir değişkene bağlayın ya da başlığı sayfanın içine text olarak koyun. leading 'auto' yığında geri düğmesi, kökte (menuTarget varsa) menü düğmesi çizer.",
|
|
12
|
+
"catalog": "app-bar, slot ve drawer mobil kataloğun Dalga 1 bileşenleridir. component_list mobil uygulamada bunları döndürmüyorsa katalog henüz yazılmamıştır ve layout_create 422 unknown-type alır (MOB-003).",
|
|
13
|
+
"verify": "Kabuğu layout'a bağlı bir sayfada page_screenshot ile doğrula (mobilde varsayılan device: 'phone').",
|
|
14
|
+
"menuTarget": "app-bar.menuTarget çekmecenin elementId'sidir (nav_drawer); iç rol app_bar__menu düğmesidir — page_screenshot actions:[{ action:'click', target:'app_bar__menu' }] çekmeceyi açar.",
|
|
15
|
+
"drawerFlows": "Menü düğmelerine akış ayrı adımda bağlanır: flow_create (host: 'layout', adım redirect { path: '<sayfa slug'ı>' }) → layout_schema_patch set_event { target: 'menu_gorevler', event: 'click' }.",
|
|
16
|
+
"drawerNode": "Çekmece mobil kataloğun `drawer` bileşenidir (kind 'component', çocuk alır): layout'a doğrudan yazılır, prop'ları katalogdakilerdir (`position`, `size`, `title`, `isDismissDisabled`); kapalı doğar, `app-bar` menüsü `isOpen: true` yazarak açar. Katalogda olmayan prop (ör. `width`, `overlay`) ya da seçenek dışı değer (düğmede `variant: 'ghost'` — geçerli olanlar `solid`/`text`/`outline`) layout_create'i 422 ile düşürür.",
|
|
17
|
+
"layoutContract": "Mizanpaj sözleşmesi: üst güvenli alan tek yerde, kabukta (app-bar 'safe-area' edges:'top' içinde; sayfa ikinci pay vermez). Ekran kenarı boşluğu tek değer (16) ve tek yerde: slot'un yatay ve üst margin'i — içerik app-bar'ın 16 dp altından başlar, kabuksuz sayfadaki gibi. shell_root 'shrink' ve padding'siz — düz container olduğu için tip yazılmazsa runtime 10 dp padding verir ve app-bar kenardan kopar.",
|
|
18
|
+
"layerAtRoot": "Katman (drawer, modal) layout ya da sayfa şemasının KÖK dizisinde, kök kabın kardeşi olarak durur; kabın içinde 422 layer-outside-root alır. Çekmece runtime'da katman olarak açılır, akıştaki yeri yoktur."
|
|
19
|
+
},
|
|
20
|
+
"mobileAppCreate": {
|
|
21
|
+
"slug": "saha-menu",
|
|
22
|
+
"name": "Saha",
|
|
23
|
+
"drawer": true,
|
|
24
|
+
"pages": [
|
|
25
|
+
{
|
|
26
|
+
"pageSlug": "gorevler",
|
|
27
|
+
"pageName": "Görevler"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"pageSlug": "profil",
|
|
31
|
+
"pageName": "Profil"
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
"layoutCreate": {
|
|
36
|
+
"name": "Mobil kabuk",
|
|
37
|
+
"views": [
|
|
38
|
+
{
|
|
39
|
+
"elementId": "shell_root",
|
|
40
|
+
"name": "shell_root",
|
|
41
|
+
"type": "container",
|
|
42
|
+
"kind": "component",
|
|
43
|
+
"props": {
|
|
44
|
+
"title": {
|
|
45
|
+
"type": "static",
|
|
46
|
+
"ref": null,
|
|
47
|
+
"data": ""
|
|
48
|
+
},
|
|
49
|
+
"direction": {
|
|
50
|
+
"type": "static",
|
|
51
|
+
"ref": null,
|
|
52
|
+
"data": "column"
|
|
53
|
+
},
|
|
54
|
+
"gap": {
|
|
55
|
+
"type": "static",
|
|
56
|
+
"ref": null,
|
|
57
|
+
"data": "none"
|
|
58
|
+
},
|
|
59
|
+
"size": {
|
|
60
|
+
"type": "static",
|
|
61
|
+
"ref": null,
|
|
62
|
+
"data": "shrink"
|
|
63
|
+
},
|
|
64
|
+
"wrap": {
|
|
65
|
+
"type": "static",
|
|
66
|
+
"ref": null,
|
|
67
|
+
"data": false
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"states": {
|
|
71
|
+
"isDroppable": true,
|
|
72
|
+
"isWrapper": true
|
|
73
|
+
},
|
|
74
|
+
"appearance": {
|
|
75
|
+
"heightType": "fill",
|
|
76
|
+
"widthType": "fill",
|
|
77
|
+
"paddingType": "none"
|
|
78
|
+
},
|
|
79
|
+
"blocks": [],
|
|
80
|
+
"events": [],
|
|
81
|
+
"validations": [],
|
|
82
|
+
"stateBindings": [],
|
|
83
|
+
"children": [
|
|
84
|
+
{
|
|
85
|
+
"elementId": "sa_ust",
|
|
86
|
+
"name": "sa_ust",
|
|
87
|
+
"type": "safe-area",
|
|
88
|
+
"kind": "component",
|
|
89
|
+
"props": {
|
|
90
|
+
"edges": {
|
|
91
|
+
"type": "static",
|
|
92
|
+
"ref": null,
|
|
93
|
+
"data": "top"
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"states": {
|
|
97
|
+
"isDroppable": true
|
|
98
|
+
},
|
|
99
|
+
"appearance": {
|
|
100
|
+
"widthType": "fill"
|
|
101
|
+
},
|
|
102
|
+
"blocks": [],
|
|
103
|
+
"events": [],
|
|
104
|
+
"validations": [],
|
|
105
|
+
"stateBindings": [],
|
|
106
|
+
"children": [
|
|
107
|
+
{
|
|
108
|
+
"elementId": "app_bar",
|
|
109
|
+
"name": "app_bar",
|
|
110
|
+
"type": "app-bar",
|
|
111
|
+
"kind": "component",
|
|
112
|
+
"props": {
|
|
113
|
+
"title": {
|
|
114
|
+
"type": "static",
|
|
115
|
+
"ref": null,
|
|
116
|
+
"data": ""
|
|
117
|
+
},
|
|
118
|
+
"leading": {
|
|
119
|
+
"type": "static",
|
|
120
|
+
"ref": null,
|
|
121
|
+
"data": "menu"
|
|
122
|
+
},
|
|
123
|
+
"menuTarget": {
|
|
124
|
+
"type": "static",
|
|
125
|
+
"ref": null,
|
|
126
|
+
"data": "nav_drawer"
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
"appearance": {
|
|
130
|
+
"widthType": "fill"
|
|
131
|
+
},
|
|
132
|
+
"blocks": [],
|
|
133
|
+
"events": [],
|
|
134
|
+
"validations": [],
|
|
135
|
+
"stateBindings": [],
|
|
136
|
+
"children": []
|
|
137
|
+
}
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"elementId": "page_slot",
|
|
142
|
+
"name": "page_slot",
|
|
143
|
+
"type": "slot",
|
|
144
|
+
"kind": "component",
|
|
145
|
+
"props": {},
|
|
146
|
+
"appearance": {
|
|
147
|
+
"widthType": "fill",
|
|
148
|
+
"heightType": "fill",
|
|
149
|
+
"marginType": "custom",
|
|
150
|
+
"marginValues": {
|
|
151
|
+
"top": 16,
|
|
152
|
+
"right": 16,
|
|
153
|
+
"bottom": 0,
|
|
154
|
+
"left": 16
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
"blocks": [],
|
|
158
|
+
"events": [],
|
|
159
|
+
"validations": [],
|
|
160
|
+
"stateBindings": [],
|
|
161
|
+
"children": []
|
|
162
|
+
}
|
|
163
|
+
]
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"elementId": "nav_drawer",
|
|
167
|
+
"name": "nav_drawer",
|
|
168
|
+
"type": "drawer",
|
|
169
|
+
"kind": "component",
|
|
170
|
+
"props": {
|
|
171
|
+
"position": {
|
|
172
|
+
"type": "static",
|
|
173
|
+
"ref": null,
|
|
174
|
+
"data": "left"
|
|
175
|
+
},
|
|
176
|
+
"size": {
|
|
177
|
+
"type": "static",
|
|
178
|
+
"ref": null,
|
|
179
|
+
"data": "default"
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
"appearance": {},
|
|
183
|
+
"blocks": [],
|
|
184
|
+
"events": [],
|
|
185
|
+
"validations": [],
|
|
186
|
+
"stateBindings": [],
|
|
187
|
+
"children": [
|
|
188
|
+
{
|
|
189
|
+
"elementId": "menu_gorevler",
|
|
190
|
+
"name": "menu_gorevler",
|
|
191
|
+
"type": "button",
|
|
192
|
+
"kind": "component",
|
|
193
|
+
"props": {
|
|
194
|
+
"text": {
|
|
195
|
+
"type": "static",
|
|
196
|
+
"ref": null,
|
|
197
|
+
"data": "Görevler"
|
|
198
|
+
},
|
|
199
|
+
"variant": {
|
|
200
|
+
"type": "static",
|
|
201
|
+
"ref": null,
|
|
202
|
+
"data": "text"
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
"appearance": {
|
|
206
|
+
"widthType": "fill"
|
|
207
|
+
},
|
|
208
|
+
"blocks": [],
|
|
209
|
+
"events": [],
|
|
210
|
+
"validations": [],
|
|
211
|
+
"stateBindings": [],
|
|
212
|
+
"children": []
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"elementId": "menu_profil",
|
|
216
|
+
"name": "menu_profil",
|
|
217
|
+
"type": "button",
|
|
218
|
+
"kind": "component",
|
|
219
|
+
"props": {
|
|
220
|
+
"text": {
|
|
221
|
+
"type": "static",
|
|
222
|
+
"ref": null,
|
|
223
|
+
"data": "Profil"
|
|
224
|
+
},
|
|
225
|
+
"variant": {
|
|
226
|
+
"type": "static",
|
|
227
|
+
"ref": null,
|
|
228
|
+
"data": "text"
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
"appearance": {
|
|
232
|
+
"widthType": "fill"
|
|
233
|
+
},
|
|
234
|
+
"blocks": [],
|
|
235
|
+
"events": [],
|
|
236
|
+
"validations": [],
|
|
237
|
+
"stateBindings": [],
|
|
238
|
+
"children": []
|
|
239
|
+
}
|
|
240
|
+
]
|
|
241
|
+
}
|
|
242
|
+
]
|
|
243
|
+
}
|
|
244
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_meta": {
|
|
3
|
+
"synthetic": true,
|
|
4
|
+
"note": "Mobil uygulama kabuğu — YIĞIN (varsayılan gezinme): app-bar + tek slot. Sekme ayarı yok; redirect sayfayı yığına iter, app-bar geri düğmesi ve cihaz geri tuşu döner. layout_create'in views alanına olduğu gibi verilebilir; mobile_app_create tabs ve drawer verilmeyince bu kabuğu kurar.",
|
|
5
|
+
"pairsWith": "mobile-app-shell-tab (sekmeli), mobile-app-shell-drawer (çekmeceli), mobile-list-detail-form (üç sayfa)",
|
|
6
|
+
"sourceRef": "platform_guide('mobile') §Gezinme; plans/mobil-uygulama-expo/05-mobil-ayarlar-ve-gezinme.md §2.5-2.6"
|
|
7
|
+
},
|
|
8
|
+
"_rules": {
|
|
9
|
+
"flexOnly": "Mobil çizer yalnız flex'tir: blocks boş, sıra dizi indeksi, ölçü appearance ile (MOB-001). Kökte layout prop'u YOK — mobil container şeması onu düşürür.",
|
|
10
|
+
"singleSlot": "TEK slot; sayfa şeması slot'a yerleşir (LAY-002 / LAY-006 web'dekiyle aynı).",
|
|
11
|
+
"appBarTitle": "app-bar.title boşsa çubuk başlıksız çizilir — sayfa adına düşen bir yedek YOKTUR (runtime app-bar yalnız title'ı yazar; koşu 37 S-9, mizanpaj 06 kör koşusu). Sabit başlık için mobile_app_create title'ı, sayfaya göre değişen başlık için title'ı bir değişkene bağlayın ya da başlığı sayfanın içine text olarak koyun. leading 'auto' yığında geri düğmesi, kökte (menuTarget varsa) menü düğmesi çizer.",
|
|
12
|
+
"catalog": "app-bar, slot ve drawer mobil kataloğun Dalga 1 bileşenleridir. component_list mobil uygulamada bunları döndürmüyorsa katalog henüz yazılmamıştır ve layout_create 422 unknown-type alır (MOB-003).",
|
|
13
|
+
"verify": "Kabuğu layout'a bağlı bir sayfada page_screenshot ile doğrula (mobilde varsayılan device: 'phone').",
|
|
14
|
+
"layoutContract": "Mizanpaj sözleşmesi: üst güvenli alan tek yerde, kabukta (app-bar 'safe-area' edges:'top' içinde; sayfa ikinci pay vermez). Ekran kenarı boşluğu tek değer (16) ve tek yerde: slot'un yatay ve üst margin'i — içerik app-bar'ın 16 dp altından başlar, kabuksuz sayfadaki gibi. shell_root 'shrink' ve padding'siz — düz container olduğu için tip yazılmazsa runtime 10 dp padding verir ve app-bar kenardan kopar."
|
|
15
|
+
},
|
|
16
|
+
"mobileAppCreate": {
|
|
17
|
+
"slug": "saha",
|
|
18
|
+
"name": "Saha",
|
|
19
|
+
"pages": [
|
|
20
|
+
{
|
|
21
|
+
"pageSlug": "gorevler",
|
|
22
|
+
"pageName": "Görevler"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"pageSlug": "detay",
|
|
26
|
+
"pageName": "Görev detayı"
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
"layoutCreate": {
|
|
31
|
+
"name": "Mobil kabuk",
|
|
32
|
+
"views": [
|
|
33
|
+
{
|
|
34
|
+
"elementId": "shell_root",
|
|
35
|
+
"name": "shell_root",
|
|
36
|
+
"type": "container",
|
|
37
|
+
"kind": "component",
|
|
38
|
+
"props": {
|
|
39
|
+
"title": {
|
|
40
|
+
"type": "static",
|
|
41
|
+
"ref": null,
|
|
42
|
+
"data": ""
|
|
43
|
+
},
|
|
44
|
+
"direction": {
|
|
45
|
+
"type": "static",
|
|
46
|
+
"ref": null,
|
|
47
|
+
"data": "column"
|
|
48
|
+
},
|
|
49
|
+
"gap": {
|
|
50
|
+
"type": "static",
|
|
51
|
+
"ref": null,
|
|
52
|
+
"data": "none"
|
|
53
|
+
},
|
|
54
|
+
"size": {
|
|
55
|
+
"type": "static",
|
|
56
|
+
"ref": null,
|
|
57
|
+
"data": "shrink"
|
|
58
|
+
},
|
|
59
|
+
"wrap": {
|
|
60
|
+
"type": "static",
|
|
61
|
+
"ref": null,
|
|
62
|
+
"data": false
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"states": {
|
|
66
|
+
"isDroppable": true,
|
|
67
|
+
"isWrapper": true
|
|
68
|
+
},
|
|
69
|
+
"appearance": {
|
|
70
|
+
"heightType": "fill",
|
|
71
|
+
"widthType": "fill",
|
|
72
|
+
"paddingType": "none"
|
|
73
|
+
},
|
|
74
|
+
"blocks": [],
|
|
75
|
+
"events": [],
|
|
76
|
+
"validations": [],
|
|
77
|
+
"stateBindings": [],
|
|
78
|
+
"children": [
|
|
79
|
+
{
|
|
80
|
+
"elementId": "sa_ust",
|
|
81
|
+
"name": "sa_ust",
|
|
82
|
+
"type": "safe-area",
|
|
83
|
+
"kind": "component",
|
|
84
|
+
"props": {
|
|
85
|
+
"edges": {
|
|
86
|
+
"type": "static",
|
|
87
|
+
"ref": null,
|
|
88
|
+
"data": "top"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"states": {
|
|
92
|
+
"isDroppable": true
|
|
93
|
+
},
|
|
94
|
+
"appearance": {
|
|
95
|
+
"widthType": "fill"
|
|
96
|
+
},
|
|
97
|
+
"blocks": [],
|
|
98
|
+
"events": [],
|
|
99
|
+
"validations": [],
|
|
100
|
+
"stateBindings": [],
|
|
101
|
+
"children": [
|
|
102
|
+
{
|
|
103
|
+
"elementId": "app_bar",
|
|
104
|
+
"name": "app_bar",
|
|
105
|
+
"type": "app-bar",
|
|
106
|
+
"kind": "component",
|
|
107
|
+
"props": {
|
|
108
|
+
"title": {
|
|
109
|
+
"type": "static",
|
|
110
|
+
"ref": null,
|
|
111
|
+
"data": ""
|
|
112
|
+
},
|
|
113
|
+
"leading": {
|
|
114
|
+
"type": "static",
|
|
115
|
+
"ref": null,
|
|
116
|
+
"data": "auto"
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
"appearance": {
|
|
120
|
+
"widthType": "fill"
|
|
121
|
+
},
|
|
122
|
+
"blocks": [],
|
|
123
|
+
"events": [],
|
|
124
|
+
"validations": [],
|
|
125
|
+
"stateBindings": [],
|
|
126
|
+
"children": []
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"elementId": "page_slot",
|
|
132
|
+
"name": "page_slot",
|
|
133
|
+
"type": "slot",
|
|
134
|
+
"kind": "component",
|
|
135
|
+
"props": {},
|
|
136
|
+
"appearance": {
|
|
137
|
+
"widthType": "fill",
|
|
138
|
+
"heightType": "fill",
|
|
139
|
+
"marginType": "custom",
|
|
140
|
+
"marginValues": {
|
|
141
|
+
"top": 16,
|
|
142
|
+
"right": 16,
|
|
143
|
+
"bottom": 0,
|
|
144
|
+
"left": 16
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
"blocks": [],
|
|
148
|
+
"events": [],
|
|
149
|
+
"validations": [],
|
|
150
|
+
"stateBindings": [],
|
|
151
|
+
"children": []
|
|
152
|
+
}
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
]
|
|
156
|
+
}
|
|
157
|
+
}
|