@chill-sharp/ui-core 1.1.12

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.
Files changed (204) hide show
  1. package/.agents/skills/chillsharp-current-user-preferences/SKILL.md +70 -0
  2. package/.agents/skills/chillsharp-ui-template/SKILL.md +18 -0
  3. package/README.md +103 -0
  4. package/chill-sharp-ui-core.d.ts.map +1 -0
  5. package/doc/AIAssistedDevelopment/README.md +185 -0
  6. package/doc/AttachmentModel/README.md +173 -0
  7. package/doc/AuthenticationModel/README.md +213 -0
  8. package/doc/AuthenticationModel/how-to-integreate-auth-minimal-api.md +293 -0
  9. package/doc/ChillSharpClient.md +464 -0
  10. package/doc/ClientGeneration/README.md +172 -0
  11. package/doc/ComplianceGuide/README.md +178 -0
  12. package/doc/Configuration/README.md +94 -0
  13. package/doc/CurrentUserPreferences.md +114 -0
  14. package/doc/DateTimePolicy/README.md +154 -0
  15. package/doc/DateTimeSerialization.md +423 -0
  16. package/doc/Endpoints.md +260 -0
  17. package/doc/HowTo/01-simple-blog-sqlite.md +153 -0
  18. package/doc/HowTo/02-blog-schema-labels.md +140 -0
  19. package/doc/HowTo/03-authentication.md +218 -0
  20. package/doc/HowTo/04-blog-posts-one-to-many.md +194 -0
  21. package/doc/HowTo/05-docker-env-variables.md +274 -0
  22. package/doc/HowTo/06-chunk-transactions-autocomplete.md +196 -0
  23. package/doc/Mcp/ChatGPT.md +291 -0
  24. package/doc/Mcp/README.md +799 -0
  25. package/doc/MenuGuide/README.md +49 -0
  26. package/doc/ModelPreparation.md +255 -0
  27. package/doc/PermissionModel/README.md +277 -0
  28. package/doc/README.md +228 -0
  29. package/doc/ReferenceExistence.md +130 -0
  30. package/doc/RegisterContext.md +217 -0
  31. package/doc/UiCore/CRUD.md +170 -0
  32. package/doc/UiCore/README.md +13 -0
  33. package/doc/ValidationModel/README.md +117 -0
  34. package/doc/it/AIAssistedDevelopment/README.md +185 -0
  35. package/doc/it/AttachmentModel/README.md +173 -0
  36. package/doc/it/AuthenticationModel/README.md +171 -0
  37. package/doc/it/AuthenticationModel/how-to-integreate-auth-minimal-api.md +292 -0
  38. package/doc/it/ChillSharpClient.md +464 -0
  39. package/doc/it/ClientGeneration/README.md +152 -0
  40. package/doc/it/ComplianceGuide/README.md +178 -0
  41. package/doc/it/Configuration/README.md +94 -0
  42. package/doc/it/CurrentUserPreferences.md +114 -0
  43. package/doc/it/DateTimePolicy/README.md +154 -0
  44. package/doc/it/DateTimeSerialization.md +423 -0
  45. package/doc/it/Endpoints.md +260 -0
  46. package/doc/it/HowTo/01-simple-blog-sqlite.md +152 -0
  47. package/doc/it/HowTo/02-blog-schema-labels.md +139 -0
  48. package/doc/it/HowTo/03-authentication.md +221 -0
  49. package/doc/it/HowTo/04-blog-posts-one-to-many.md +193 -0
  50. package/doc/it/HowTo/05-docker-env-variables.md +268 -0
  51. package/doc/it/HowTo/06-chunk-transactions-autocomplete.md +196 -0
  52. package/doc/it/Mcp/ChatGPT.md +291 -0
  53. package/doc/it/Mcp/README.md +799 -0
  54. package/doc/it/MenuGuide/README.md +49 -0
  55. package/doc/it/ModelPreparation.md +254 -0
  56. package/doc/it/PermissionModel/README.md +190 -0
  57. package/doc/it/README.md +172 -0
  58. package/doc/it/ReferenceExistence.md +130 -0
  59. package/doc/it/RegisterContext.md +218 -0
  60. package/doc/it/UiCore/CRUD.md +170 -0
  61. package/doc/it/UiCore/README.md +13 -0
  62. package/doc/it/ValidationModel/README.md +117 -0
  63. package/fesm2022/chill-sharp-ui-core.mjs +16725 -0
  64. package/fesm2022/chill-sharp-ui-core.mjs.map +1 -0
  65. package/index.d.ts +6 -0
  66. package/lib/chill-sharp-ui-root.component.d.ts +6 -0
  67. package/lib/chill-sharp-ui-root.component.d.ts.map +1 -0
  68. package/lib/chill-sharp-ui.routes.d.ts +3 -0
  69. package/lib/chill-sharp-ui.routes.d.ts.map +1 -0
  70. package/lib/chill.config.d.ts +5 -0
  71. package/lib/chill.config.d.ts.map +1 -0
  72. package/lib/layouts/auth-shell.component.d.ts +8 -0
  73. package/lib/layouts/auth-shell.component.d.ts.map +1 -0
  74. package/lib/layouts/workspace-page.component.d.ts +49 -0
  75. package/lib/layouts/workspace-page.component.d.ts.map +1 -0
  76. package/lib/lib/chill-form.component.d.ts +151 -0
  77. package/lib/lib/chill-form.component.d.ts.map +1 -0
  78. package/lib/lib/chill-i18n-button-label.component.d.ts +27 -0
  79. package/lib/lib/chill-i18n-button-label.component.d.ts.map +1 -0
  80. package/lib/lib/chill-i18n-label.component.d.ts +30 -0
  81. package/lib/lib/chill-i18n-label.component.d.ts.map +1 -0
  82. package/lib/lib/chill-json-input.component.d.ts +31 -0
  83. package/lib/lib/chill-json-input.component.d.ts.map +1 -0
  84. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-boolean-control.component.d.ts +12 -0
  85. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-boolean-control.component.d.ts.map +1 -0
  86. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-editor-control.component.d.ts +17 -0
  87. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-editor-control.component.d.ts.map +1 -0
  88. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-lookup-control.component.d.ts +45 -0
  89. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-lookup-control.component.d.ts.map +1 -0
  90. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-scalar-control.component.d.ts +19 -0
  91. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-scalar-control.component.d.ts.map +1 -0
  92. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-select-control.component.d.ts +12 -0
  93. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-select-control.component.d.ts.map +1 -0
  94. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-textarea-control.component.d.ts +13 -0
  95. package/lib/lib/chill-polymorphic-input-controls/chill-polymorphic-textarea-control.component.d.ts.map +1 -0
  96. package/lib/lib/chill-polymorphic-input.component.d.ts +452 -0
  97. package/lib/lib/chill-polymorphic-input.component.d.ts.map +1 -0
  98. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-boolean-control.component.d.ts +7 -0
  99. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-boolean-control.component.d.ts.map +1 -0
  100. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-lookup-control.component.d.ts +7 -0
  101. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-lookup-control.component.d.ts.map +1 -0
  102. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-number-control.component.d.ts +7 -0
  103. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-number-control.component.d.ts.map +1 -0
  104. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-temporal-control.component.d.ts +8 -0
  105. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-temporal-control.component.d.ts.map +1 -0
  106. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-value-control.component.d.ts +7 -0
  107. package/lib/lib/chill-polymorphic-output-controls/chill-polymorphic-output-value-control.component.d.ts.map +1 -0
  108. package/lib/lib/chill-polymorphic-output.component.d.ts +75 -0
  109. package/lib/lib/chill-polymorphic-output.component.d.ts.map +1 -0
  110. package/lib/lib/chill-table.component.d.ts +434 -0
  111. package/lib/lib/chill-table.component.d.ts.map +1 -0
  112. package/lib/lib/chill-text-editor-dialog.component.d.ts +14 -0
  113. package/lib/lib/chill-text-editor-dialog.component.d.ts.map +1 -0
  114. package/lib/lib/crud-configuration.utils.d.ts +4 -0
  115. package/lib/lib/crud-configuration.utils.d.ts.map +1 -0
  116. package/lib/lib/culture-name-options.d.ts +3 -0
  117. package/lib/lib/culture-name-options.d.ts.map +1 -0
  118. package/lib/lib/date-format-options.d.ts +3 -0
  119. package/lib/lib/date-format-options.d.ts.map +1 -0
  120. package/lib/lib/iana-time-zone-options.d.ts +3 -0
  121. package/lib/lib/iana-time-zone-options.d.ts.map +1 -0
  122. package/lib/lib/notice-transition.directive.d.ts +17 -0
  123. package/lib/lib/notice-transition.directive.d.ts.map +1 -0
  124. package/lib/lib/schema-property-dialog.component.d.ts +74 -0
  125. package/lib/lib/schema-property-dialog.component.d.ts.map +1 -0
  126. package/lib/models/chill-auth.models.d.ts +176 -0
  127. package/lib/models/chill-auth.models.d.ts.map +1 -0
  128. package/lib/models/chill-menu.models.d.ts +12 -0
  129. package/lib/models/chill-menu.models.d.ts.map +1 -0
  130. package/lib/models/chill-schema.models.d.ts +141 -0
  131. package/lib/models/chill-schema.models.d.ts.map +1 -0
  132. package/lib/models/workspace-dialog.models.d.ts +16 -0
  133. package/lib/models/workspace-dialog.models.d.ts.map +1 -0
  134. package/lib/models/workspace-task.models.d.ts +36 -0
  135. package/lib/models/workspace-task.models.d.ts.map +1 -0
  136. package/lib/pages/confirm-reset-page.component.d.ts +21 -0
  137. package/lib/pages/confirm-reset-page.component.d.ts.map +1 -0
  138. package/lib/pages/crud/attachment-upload-dialog.component.d.ts +24 -0
  139. package/lib/pages/crud/attachment-upload-dialog.component.d.ts.map +1 -0
  140. package/lib/pages/crud/crud-page.component.d.ts +244 -0
  141. package/lib/pages/crud/crud-page.component.d.ts.map +1 -0
  142. package/lib/pages/login-page.component.d.ts +21 -0
  143. package/lib/pages/login-page.component.d.ts.map +1 -0
  144. package/lib/pages/permissions/auth-role-dialog.component.d.ts +29 -0
  145. package/lib/pages/permissions/auth-role-dialog.component.d.ts.map +1 -0
  146. package/lib/pages/permissions/auth-search-select.component.d.ts +28 -0
  147. package/lib/pages/permissions/auth-search-select.component.d.ts.map +1 -0
  148. package/lib/pages/permissions/auth-user-dialog.component.d.ts +35 -0
  149. package/lib/pages/permissions/auth-user-dialog.component.d.ts.map +1 -0
  150. package/lib/pages/permissions/permission-editor.component.d.ts +55 -0
  151. package/lib/pages/permissions/permission-editor.component.d.ts.map +1 -0
  152. package/lib/pages/permissions/permissions-page.component.d.ts +38 -0
  153. package/lib/pages/permissions/permissions-page.component.d.ts.map +1 -0
  154. package/lib/pages/permissions/role-permission.component.d.ts +43 -0
  155. package/lib/pages/permissions/role-permission.component.d.ts.map +1 -0
  156. package/lib/pages/permissions/user-permission.component.d.ts +43 -0
  157. package/lib/pages/permissions/user-permission.component.d.ts.map +1 -0
  158. package/lib/pages/register-page.component.d.ts +24 -0
  159. package/lib/pages/register-page.component.d.ts.map +1 -0
  160. package/lib/pages/reset-password-page.component.d.ts +18 -0
  161. package/lib/pages/reset-password-page.component.d.ts.map +1 -0
  162. package/lib/provide-chill-sharp-ui-core.d.ts +8 -0
  163. package/lib/provide-chill-sharp-ui-core.d.ts.map +1 -0
  164. package/lib/services/chill.service.d.ts +249 -0
  165. package/lib/services/chill.service.d.ts.map +1 -0
  166. package/lib/services/workspace-dialog.service.d.ts +22 -0
  167. package/lib/services/workspace-dialog.service.d.ts.map +1 -0
  168. package/lib/services/workspace-layout.service.d.ts +13 -0
  169. package/lib/services/workspace-layout.service.d.ts.map +1 -0
  170. package/lib/services/workspace-task-registry.service.d.ts +35 -0
  171. package/lib/services/workspace-task-registry.service.d.ts.map +1 -0
  172. package/lib/services/workspace-toolbar.service.d.ts +23 -0
  173. package/lib/services/workspace-toolbar.service.d.ts.map +1 -0
  174. package/lib/services/workspace.service.d.ts +114 -0
  175. package/lib/services/workspace.service.d.ts.map +1 -0
  176. package/lib/storage-keys.d.ts +5 -0
  177. package/lib/storage-keys.d.ts.map +1 -0
  178. package/lib/tasks/crud-task/crud-task.component.d.ts +33 -0
  179. package/lib/tasks/crud-task/crud-task.component.d.ts.map +1 -0
  180. package/lib/tasks/goto-url-task/goto-url-task.component.d.ts +31 -0
  181. package/lib/tasks/goto-url-task/goto-url-task.component.d.ts.map +1 -0
  182. package/lib/workspace/confirm-message-dialog.component.d.ts +16 -0
  183. package/lib/workspace/confirm-message-dialog.component.d.ts.map +1 -0
  184. package/lib/workspace/entity-options-dialog.component.d.ts +29 -0
  185. package/lib/workspace/entity-options-dialog.component.d.ts.map +1 -0
  186. package/lib/workspace/external-task-api.d.ts +2 -0
  187. package/lib/workspace/external-task-api.d.ts.map +1 -0
  188. package/lib/workspace/user-profile-dialog.component.d.ts +30 -0
  189. package/lib/workspace/user-profile-dialog.component.d.ts.map +1 -0
  190. package/lib/workspace/workspace-dialog-host.component.d.ts +26 -0
  191. package/lib/workspace/workspace-dialog-host.component.d.ts.map +1 -0
  192. package/lib/workspace/workspace-menu-item-dialog.component.d.ts +61 -0
  193. package/lib/workspace/workspace-menu-item-dialog.component.d.ts.map +1 -0
  194. package/lib/workspace/workspace-menu.component.d.ts +104 -0
  195. package/lib/workspace/workspace-menu.component.d.ts.map +1 -0
  196. package/lib/workspace/workspace-taskbar.component.d.ts +14 -0
  197. package/lib/workspace/workspace-taskbar.component.d.ts.map +1 -0
  198. package/package.json +54 -0
  199. package/public-api.d.ts +56 -0
  200. package/public-api.d.ts.map +1 -0
  201. package/service-worker/chill-sharp-service-worker.js +166 -0
  202. package/styles/core-theme.scss +1268 -0
  203. package/template-customization/upgrade.ps1.template +342 -0
  204. package/template-customization/upgrade.sh.template +271 -0
@@ -0,0 +1,291 @@
1
+ # COME FARE: Connetti ChillSharp MCP a ChatGPT
2
+
3
+ Versione originale in inglese: [English](../../Mcp/ChatGPT.md)
4
+
5
+
6
+ Questa guida mostra come esporre un server MCP ChillSharp protetto su HTTPS e collegarlo da ChatGPT utilizzando il flusso OAuth ChillSharp integrato.
7
+
8
+ ## Obiettivo
9
+
10
+ Consenti a ChatGPT di connettersi a:
11
+
12
+ ```text
13
+ https://your-domain.example/api/chill-mcp
14
+ ```
15
+
16
+ e fare in modo che ogni richiesta MCP venga eseguita con le stesse limitazioni di utente, ruolo e autorizzazione ChillSharp utilizzate dalla normale API autenticata dalla portante.
17
+
18
+ ## Requisiti
19
+
20
+ -Un dominio HTTPS pubblico che può raggiungere l'host ASP.NET Core
21
+ - Un `DbContext` che supporta ChillSharp, metadati dello schema e autenticazione
22
+ - Identità ASP.NET Core configurata per i tuoi utenti
23
+ -
24
+ - Almeno un'entità o query abilitata per MCP
25
+
26
+ ChatGPT non può connettersi direttamente a `localhost`. Per lo sviluppo locale, esponi l'app con un tunnel HTTPS pubblico e utilizza l'URL pubblico in ChatGPT.
27
+
28
+ ## 1. Preparare il DbContext
29
+
30
+ Il contesto deve supportare il normale modello ChillSharp, i metadati dello schema per il rilevamento MCP e le tabelle di autenticazione per utenti, ruoli, autorizzazioni e sessioni token.
31
+
32
+ ```csharp
33
+ using ChillSharp;
34
+ using ChillSharp.Auth;
35
+ using ChillSharp.Schema;
36
+ using Microsoft.AspNetCore.Identity;
37
+ using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
38
+ using Microsoft.EntityFrameworkCore;
39
+
40
+ namespace MyApp;
41
+
42
+ public class AppDbContext : IdentityDbContext<IdentityUser>, IChillContext, IChillAuthDbContext, IChillSchemaDbContext
43
+ {
44
+ public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
45
+ {
46
+ }
47
+
48
+ public string GetChillTypePrefix() => "MyApp";
49
+
50
+ public string GetPrimaryCultureName() => "en-US";
51
+
52
+ public string GetSecondaryCultureName() => "it-IT";
53
+
54
+ protected override void OnModelCreating(ModelBuilder modelBuilder)
55
+ {
56
+ base.OnModelCreating(modelBuilder);
57
+ modelBuilder.AddChillAuthModel();
58
+ modelBuilder.AddChillSchemaModel();
59
+ }
60
+ }
61
+ ```
62
+
63
+ Se la tua app utilizza anche i18n o allegati, conserva anche le registrazioni dei modelli.
64
+
65
+ ## 2. Registra identità, autenticazione del portatore, ChillSharp e MCP
66
+
67
+ La registrazione `AddChillApi<TContext, TUser>()` supportata dall'identità abilita gli endpoint di autenticazione, il modulo MCP e gli endpoint OAuth di cui ChatGPT ha bisogno.
68
+
69
+ ```csharp
70
+ using ChillSharp.Api;
71
+ using ChillSharp.Auth.Api;
72
+ using Microsoft.AspNetCore.Identity;
73
+ using Microsoft.EntityFrameworkCore;
74
+
75
+ var builder = WebApplication.CreateBuilder(args);
76
+
77
+ builder.Services.AddDbContext<AppDbContext>(options =>
78
+ options.UseSqlite("Data Source=app.db"));
79
+
80
+ builder.Services.AddIdentityCore<IdentityUser>()
81
+ .AddEntityFrameworkStores<AppDbContext>()
82
+ .AddSignInManager()
83
+ .AddDefaultTokenProviders();
84
+
85
+ builder.Services.AddAuthentication(ChillAuthIdentityDefaults.AuthenticationScheme)
86
+ .AddChillAuthBearer();
87
+
88
+ builder.Services.AddAuthorization();
89
+
90
+ builder.Services.AddChillApi<AppDbContext, IdentityUser>(options =>
91
+ {
92
+ options.ProtectedApi = true;
93
+
94
+ // Defaults shown explicitly for clarity.
95
+ options.EnableMcpApi = true;
96
+ options.EnableOAuthEndpoints = true;
97
+ options.OAuthBasePath = "/api/chill-auth/oauth";
98
+ options.OAuthProtectedResourcePath = "/api/chill-mcp";
99
+ options.OAuthAuthorizationCodeLifetime = TimeSpan.FromMinutes(5);
100
+ });
101
+ ```
102
+
103
+ ## 3. Mappare l'API
104
+
105
+ Il middleware di autenticazione e autorizzazione deve essere eseguito prima di `MapChillApi()`.
106
+
107
+ ```csharp
108
+ var app = builder.Build();
109
+
110
+ app.UseAuthentication();
111
+ app.UseAuthorization();
112
+
113
+ using (var scope = app.Services.CreateScope())
114
+ {
115
+ var db = scope.ServiceProvider.GetRequiredService<AppDbContext>();
116
+ db.Database.EnsureCreated();
117
+ }
118
+
119
+ app.MapChillApi();
120
+ app.Run();
121
+ ```
122
+
123
+ Con le impostazioni predefinite, questo espone:
124
+
125
+ | Scopo | URL |
126
+ | --- | --- |
127
+ | Server MCP | |
128
+ | Metadati di autorizzazione OAuth | |
129
+ | Metadati delle risorse protette MCP | |
130
+ | Registrazione dinamica del cliente | |
131
+ | Pagina di autorizzazione e consenso | |
132
+ | Endpoint token | |
133
+
134
+ ## 4. Crea o avvia un utente
135
+
136
+ ChatGPT accede tramite la pagina di autorizzazione OAuth di ChillSharp usando gli stessi utenti ASP.NET Core Identity usati dalla normale autenticazione portante ChillSharp.
137
+
138
+ Per un primo sistema protetto, puoi eseguire il bootstrap di un utente root:
139
+
140
+ ```csharp
141
+ builder.Services.AddChillApi<AppDbContext, IdentityUser>(options =>
142
+ {
143
+ options.ProtectedApi = true;
144
+ options.InitializeRootUserOnStartup = true;
145
+ options.CreateChillAuthUserForRoot = true;
146
+ options.RootUserName = "root";
147
+ options.RootPassword = "Pass123$";
148
+ options.RootEmail = "root@example.com";
149
+ options.RootDisplayName = "Root Administrator";
150
+ });
151
+ ```
152
+
153
+ Quando `CreateChillAuthUserForRoot = true`, ChillSharp crea anche il record `AuthUser` collegato utilizzato dai controlli delle autorizzazioni.
154
+
155
+ ## 5. Abilita solo schemi MCP sicuri
156
+
157
+ ChatGPT può vedere solo gli schemi abilitati per MCP. Contrassegna solo le entità e le query sicure e utili per l'accesso all'intelligenza artificiale.
158
+
159
+ ```csharp
160
+ using ChillSharp.Annotations;
161
+ using ChillSharp.EF;
162
+
163
+ [ChillEntity(
164
+ UniquePropertyKeyString: "4E16F6C0-6B95-4D67-98BC-9F4D0D63EAF1",
165
+ PrimaryLanguageLabel: "Invoice",
166
+ SecondaryLanguageLabel: "Fattura",
167
+ EnableMCP = true,
168
+ MCPDescription = "Customer invoice header. Use it to inspect invoice identity, customer, dates, totals, and payment state.")]
169
+ public class Invoice : ChillEntity
170
+ {
171
+ [ChillProperty(
172
+ UniquePropertyKeyString: "50B1BB6C-D794-41E4-A85C-D4F9D7A6FA7E",
173
+ PrimaryLanguageLabel: "Invoice number",
174
+ SecondaryLanguageLabel: "Numero fattura",
175
+ MCPDescription = "Human-readable invoice number used by accountants and customers.")]
176
+ public string InvoiceNumber { get; set; } = string.Empty;
177
+ }
178
+ ```
179
+
180
+ Utilizza testo `MCPDescription` chiaro su entità, query e proprietà. ChatGPT fa molto affidamento su tali descrizioni quando si scelgono gli strumenti e si creano payload di query.
181
+
182
+ ChatGPT non dovrebbe inventare oggetti di richiesta ChillSharp. Il flusso di lavoro previsto è:
183
+
184
+ 1. chiamare `ChillSharp get-schema-list`
185
+ 2. chiamare `ChillSharp get-schema` per l'entità o la query
186
+ 3. utilizzare nomi di proprietà dello schema esatti in `Properties`
187
+ 4. abbinare i valori a `simplePropertyType` di ciascuna proprietà
188
+
189
+ Ad esempio, utilizza stringhe JSON per `string`, numeri JSON per `int` e `decimal`, booleani JSON per `bool` e riferimenti `ChillDtoEntity` con `ChillType` e `Guid` per le proprietà `chill-entity`. Per `ResultProperties`, utilizzare oggetti come `{ "name": "InvoiceNumber" }` dallo schema di entità restituito.
190
+
191
+ Per le proprietà della query, ChatGPT dovrebbe leggere `MCPDescription` di ciascuna proprietà per dedurre il comportamento di ricerca. Se una proprietà della query non ha una descrizione o la descrizione non spiega il comportamento di corrispondenza, presuppone che la corrispondenza esatta sia uguale. Ogni query Chill accetta anche `Properties.FullTextSearch`; usalo per la ricerca di parole chiave generiche quando l'utente non richiede un filtro strutturato specifico.
192
+
193
+ `Properties.FullTextSearch` effettua ricerche contro ChillSharp `FullTextContent`. Il testo senza virgolette senza selettori avanzati viene normalizzato, suddiviso in spazi bianchi e abbinato con AND, quindi ogni token deve essere presente. Le parentesi più gli operatori `and`/`or` autonomi al di fuori delle virgolette consentono la ricerca booleana raggruppata, ad esempio `[la and nazione] or roma`. Cerca le parole letterali `and` o `or` racchiudendole tra virgolette corrispondenti, ad esempio `"and"`. Le virgolette singole o doppie corrispondenti cercano una frase normalizzata con limiti di parole: `"la nazione"` corrisponde a `bla bla la nazione bla bla` ma non a `bla bla della nazione bla bla`. Un carattere jolly `*` o `%` iniziale o finale racchiuso tra virgolette rilassa quel lato del confine, ad esempio `"*la nazione"` o `"%la nazione"` può corrispondere a `della nazione` e `"la nazione*"` può corrispondere a un suffisso. Se `*` o `%` appare nel mezzo di una frase tra virgolette, ChillSharp lo tratta come separatori di token e applica la normale corrispondenza AND dei token.
194
+
195
+ ## 6. Connettiti da ChatGPT
196
+
197
+ In ChatGPT, aggiungi un connettore personalizzato o un server MCP remoto utilizzando l'URL MCP HTTPS pubblico:
198
+
199
+ ```text
200
+ https://your-domain.example/api/chill-mcp
201
+ ```
202
+
203
+ ChatGPT dovrebbe rilevare i metadati OAuth, registrarsi come client OAuth pubblico e aprire la pagina di autorizzazione di ChillSharp.
204
+
205
+ Dopo che l'utente ha effettuato l'accesso e ha acconsentito:
206
+
207
+ 1. ChatGPT riceve un codice di autorizzazione.
208
+ 2. ChatGPT scambia il codice e il verificatore PKCE con un token di accesso al portatore ChillSharp.
209
+ 3. ChatGPT chiama l'endpoint MCP con:
210
+
211
+ ```http
212
+ Authorization: Bearer <access-token>
213
+ ```
214
+
215
+ OAuth è solo il flusso di consenso e acquisizione di token. L'endpoint MCP utilizza ancora la normale autenticazione della portante ChillSharp.
216
+
217
+ ## Comportamento dei permessi
218
+
219
+ Gli utenti OAuth non sono utenti separati.
220
+
221
+ Il flusso OAuth autentica un utente ASP.NET Core Identity ed emette lo stesso tipo di token di connessione ChillSharp usato dall'accesso normale. Il token contiene le stesse attestazioni dell'identificatore utente, quindi ChillSharp risolve lo stesso `AuthUser.ExternalId` e applica gli stessi ruoli, regole di autorizzazione, autorizzazioni dello schema e limitazioni API.
222
+
223
+ Ciò significa:
224
+
225
+ - un utente bloccato da una normale operazione protetta di ChillSharp viene bloccato anche tramite ChatGPT
226
+ - un utente con ruolo limitato mantiene le stesse limitazioni tramite MCP
227
+ - La visibilità MCP richiede ancora `EnableMCP`; la visibilità della query segue la relativa entità restituita
228
+ - Gli ambiti OAuth attualmente non creano un livello di autorizzazione separato
229
+
230
+ ## URL pubblici utili da testare
231
+
232
+ Aprili dall'esterno della rete del tuo server:
233
+
234
+ ```text
235
+ https://your-domain.example/.well-known/oauth-authorization-server
236
+ https://your-domain.example/.well-known/oauth-protected-resource
237
+ https://your-domain.example/api/chill-mcp
238
+ ```
239
+
240
+ L'URL MCP deve rifiutare l'accesso anonimo quando `ProtectedApi = true` e la risposta deve pubblicizzare i metadati delle risorse protette OAuth nell'intestazione `WWW-Authenticate`.
241
+
242
+ ## Risoluzione dei problemi
243
+
244
+ ### ChatGPT non può raggiungere il server
245
+
246
+ Verificare che l'URL MCP utilizzi HTTPS pubblico e non sia una rete privata o un indirizzo `localhost`.
247
+
248
+ ### ChatGPT non avvia OAuth
249
+
250
+ Controllo:
251
+
252
+ -
253
+ -
254
+ - `AddChillAuthBearer()` è registrato
255
+ - `UseAuthentication()` e `UseAuthorization()` vengono eseguiti prima di `MapChillApi()`
256
+ - `/.well-known/oauth-authorization-server` è raggiungibile tramite HTTPS
257
+ - `/.well-known/oauth-protected-resource` è raggiungibile tramite HTTPS
258
+
259
+ ### L'accesso riesce ma le azioni MCP sono vietate
260
+
261
+ L'accesso all'identità è riuscito, ma ChillSharp `AuthUser` collegato o i suoi ruoli non consentono l'operazione richiesta. Controlla `AuthUser.ExternalId`, assegnazioni di ruoli e regole di autorizzazione.
262
+
263
+ ### ChatGPT non vede schemi utili
264
+
265
+ Verifica che l'entità o la query di destinazione sia abilitata per MCP e contenga descrizioni utili:
266
+
267
+ -
268
+ - entità/query `MCPDescription`
269
+ - `MCPDescription` a livello di proprietà
270
+ - tipi di query mirati per flussi di lavoro AI comuni
271
+
272
+ ### Più istanze dell'app perdono le registrazioni OAuth
273
+
274
+ Il registro client OAuth dinamico integrato è attualmente in memoria. Per la produzione a più istanze o le registrazioni stabili al riavvio, mantenere le registrazioni del client OAuth nel database di autenticazione.
275
+
276
+ ## Lista di controllo della produzione
277
+
278
+ - Utilizza solo HTTPS
279
+ - Mantieni `ProtectedApi = true`
280
+ - Abilita MCP solo su schemi sicuri
281
+ - Utilizza superfici di query mirate invece di esporre tutto
282
+ - Assegna a ChatGPT un utente o un ruolo con privilegi minimi
283
+ - Esamina gli strumenti di modifica come creazione, aggiornamento, eliminazione e blocco
284
+ - Mantieni le registrazioni del client OAuth se si esegue più di un'istanza dell'app
285
+ - Mantieni breve la durata dei token di accesso
286
+
287
+ ## Documenti correlati
288
+
289
+ - [Riferimento modulo MCP](README.md)
290
+ - [Procedura per l'autenticazione](../HowTo/03-authentication.md)
291
+ - [Preparazione del modello](../ModelPreparation.md)