biatoolkit 1.2.1__py3-none-any.whl → 1.2.3__py3-none-any.whl

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.
@@ -268,14 +268,17 @@ class Sankhya:
268
268
  Returns:
269
269
  dict: Resposta JSON (ou {"raw_text": "..."} se não for JSON)
270
270
  """
271
+
271
272
  # Resolve o token de sessão (JSESSIONID)
272
273
  sid = self._resolve_jsessionid(jsessionid)
274
+ # Para mgeSession na query, usar só a primeira parte antes do ponto
275
+ sid_query = sid.split(".", 1)[0] if "." in sid else sid
273
276
 
274
277
  # Monta a querystring, sempre incluindo o mgeSession
275
278
  query_parts = []
276
279
  if query:
277
280
  query_parts.append(query.lstrip("?"))
278
- query_parts.append(f"mgeSession={sid}")
281
+ query_parts.append(f"mgeSession={sid_query}")
279
282
  final_query = "&".join(query_parts)
280
283
 
281
284
  # Monta a URL final da requisição
@@ -290,6 +293,9 @@ class Sankhya:
290
293
  if extra_headers:
291
294
  headers.update(extra_headers)
292
295
 
296
+ # Adiciona o JSESSIONID no header Cookie
297
+ headers["Cookie"] = f"JSESSIONID={sid}"
298
+
293
299
  # Define o timeout da requisição
294
300
  t = timeout or (self.sankhya_settings.timeout_connect, self.sankhya_settings.timeout_read)
295
301
 
@@ -364,13 +370,19 @@ class Sankhya:
364
370
  },
365
371
  }
366
372
 
373
+ # Se base_url não foi fornecido, tenta obter do MCP (se existir)
374
+ if not base_url:
375
+ if self.mcp is not None:
376
+ util = BiaUtil(self.mcp)
377
+ header = util.get_header()
378
+ base_url = getattr(header, "current_host", None)
367
379
 
368
- util = BiaUtil(self.mcp)
369
- # Se base_url não foi fornecido, tenta obter do util.get_header().current_host
380
+ # Se ainda não tem base_url, erro
370
381
  if not base_url:
371
- base_url = util.get_header().current_host
372
- if not base_url:
373
- raise ValueError("base_url não definida e não foi possível obter current_host do header.")
382
+ raise ValueError(
383
+ "base_url não definida. Informe base_url explicitamente ou execute via MCP para obter do header."
384
+ )
385
+
374
386
 
375
387
  return self.call_json(
376
388
  payload=body,
@@ -4,14 +4,15 @@ import os
4
4
  from biatoolkit.sankhya_call import Sankhya, SankhyaHTTPError
5
5
  import json
6
6
 
7
+
7
8
  # Opcional: não depende mais disso, mas pode deixar.
8
9
  os.environ.setdefault("SANKHYA_SERVICE_PATH", "/mge/service.sbr")
9
10
 
10
11
  # ⚠️ COLE AQUI seu JSESSIONID em UMA LINHA (sem ENTER no meio)
11
- REAL = "CrK0qgoMYcnfZsURMi7iarpFKWSVqS-qO3HWMiu8.sankhya-w-78598f67f-n7mcp"
12
+ REAL = "qwd6yyqtbw4xMURqiaxQIJx6NLE447ZvwReMA5TP.sankhya-w-78598f67f-n7mc"
12
13
 
13
- if not REAL or REAL == "COLE_SEU_JSESSIONID_AQUI":
14
- raise SystemExit("Cole seu JSESSIONID na variável REAL (uma linha só) e rode: python -m biatoolkit.test_sankhya")
14
+ if not REAL:
15
+ raise SystemExit("Token JSESSIONID não fornecido.")
15
16
 
16
17
  # Base URL do ambiente correto (o novo)
17
18
  BASE_URL = "https://ecossistema2.sankhyacloud.com.br"
@@ -22,11 +23,9 @@ try:
22
23
  out = sk.load_view(
23
24
  "BIA_VW_MB_RULES",
24
25
  "1=1",
25
- fields="COMPLDESC_A,COMPLDESC_B,CONFIDENCE_A_B,LIFT_A_B,CNT_AB,DISPONIVEL_B,DTGERACAO",
26
+ fields="*",
26
27
  jsessionid=REAL,
27
- base_url=BASE_URL, # <-- NOVO: injeta a base url aqui
28
- # url="/mge/service.sbr", # opcional: se quiser passar só o path
29
- # url="https://ecossistema2.sankhyacloud.com.br/mge/service.sbr", # opcional: URL completa
28
+ base_url=BASE_URL
30
29
  )
31
30
  print("OK! Resposta (top-level keys):", list(out.keys()))
32
31
  print(out)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: biatoolkit
3
- Version: 1.2.1
3
+ Version: 1.2.3
4
4
  Summary: Biblioteca para desenvolvedores que utilizam o BiaAgentBuilder
5
5
  Author: Bia Platform Team
6
6
  Author-email: data.platform@sankhya.com.br
@@ -462,9 +462,58 @@ O Bia Toolkit oferece integração pronta para consumo de serviços HTTP da plat
462
462
 
463
463
  - **SankhyaSettings**: Dataclass de configuração de timeouts/retries/SSL. Use `SankhyaSettings.from_env()` para obter as configurações do ambiente.
464
464
  - **Sankhya**: Classe principal de integração. Permite instanciar com contexto MCP (`FastMCP`) ou usar métodos estáticos.
465
- - `call_json(...)`: Realiza chamada HTTP autenticada, retorna JSON.
466
- - `load_view(...)`: Helper para consultas a views Sankhya (`CRUDServiceProvider.loadView`).
467
- - `Call(...)`: Método estático compatível com scaffolds legados.
465
+ - `call_json(...)`: Realiza chamada HTTP autenticada, retorna JSON. Veja detalhes dos parâmetros abaixo.
466
+ - `load_view(...)`: Helper para consultas a views Sankhya (`CRUDServiceProvider.loadView`). Veja detalhes dos parâmetros abaixo.
467
+ - `Call(...)`: Método estático compatível com scaffolds legados. Veja detalhes dos parâmetros abaixo.
468
+ ### Parâmetros dos métodos principais
469
+
470
+ #### `call_json`
471
+
472
+ | Parâmetro | Obrigatório | Descrição |
473
+ |-------------------|-------------|-----------|
474
+ | payload | Não | Dicionário enviado como corpo da requisição (POST). Pode ser None. |
475
+ | jsessionid | Não | Token de sessão JSESSIONID. Se não informado, tenta extrair do header do runtime (via MCP/BiaUtil). |
476
+ | url | Não | URL completa para chamada. Se informado, ignora base_url. |
477
+ | base_url | Sim* | Base URL do serviço Sankhya (ex: https://meu.sankhya.com.br). Obrigatório se não estiver em contexto MCP (header). |
478
+ | query | Não | Querystring adicional (ex: serviceName=...&outputType=json). |
479
+ | method | Não | "POST" (default) ou "GET". |
480
+ | extra_headers | Não | Dicionário de headers adicionais. |
481
+ | timeout | Não | Tupla (connect, read) para sobrescrever timeout padrão. |
482
+ | raise_for_http_error | Não | Se True (default), lança SankhyaHTTPError em erro HTTP. |
483
+
484
+ *Se não passar base_url, o método tentará extrair automaticamente do header do runtime (MCP) se disponível. Caso contrário, será obrigatório.
485
+
486
+ #### `load_view`
487
+
488
+ | Parâmetro | Obrigatório | Descrição |
489
+ |-------------------|-------------|-----------|
490
+ | view_name | Sim | Nome da view no Sankhya. |
491
+ | where_sql | Sim | Cláusula WHERE (string). |
492
+ | fields | Não | Campos a retornar (string). Default: "*". |
493
+ | jsessionid | Não | Token de sessão JSESSIONID. Se não informado, tenta extrair do header do runtime (via MCP/BiaUtil). |
494
+ | url | Não | URL completa opcional (override). |
495
+ | base_url | Não* | Base URL do serviço Sankhya. Se não informado, tenta extrair do header do runtime (current_host). |
496
+ | output_type | Não | "json" (default). |
497
+ | extra_headers | Não | Dicionário de headers adicionais. |
498
+
499
+ *Se não passar base_url, o método tentará extrair automaticamente do header do runtime (MCP) via BiaUtil. Caso não consiga, lança erro.
500
+
501
+ #### `Call`
502
+
503
+ | Parâmetro | Obrigatório | Descrição |
504
+ |-------------------|-------------|-----------|
505
+ | jsessionID | Não | Token de sessão JSESSIONID. Se não informado, tenta extrair do header do runtime (via MCP/BiaUtil). |
506
+ | payload | Não | Dicionário enviado como corpo da requisição. |
507
+ | mcp | Não | Instância opcional do FastMCP para contexto do runtime. |
508
+ | url | Não | URL completa (opcional). |
509
+ | base_url | Sim* | Base URL do serviço Sankhya. Obrigatório se não estiver em contexto MCP (header). |
510
+ | query | Não | Querystring adicional (opcional). |
511
+ | method | Não | "POST" (default) ou "GET". |
512
+ | extra_headers | Não | Dicionário de headers adicionais. |
513
+
514
+ *Se não passar base_url, o método tentará extrair automaticamente do header do runtime (MCP) se disponível. Caso contrário, será obrigatório.
515
+
516
+ **Resumo:** Sempre que possível, o toolkit resolve automaticamente base_url e jsessionid do contexto MCP (headers). Se não estiver rodando em MCP, passe base_url explicitamente.
468
517
  - **SankhyaHTTPError**: Exceção lançada em caso de erro HTTP (status != 200), contendo status_code e response_text.
469
518
 
470
519
  ### Exemplo de uso (instanciado)
@@ -1,15 +1,15 @@
1
1
  biatoolkit/__init__.py,sha256=OStl3T8OY7YdGdpKIpwXtTo-IjcQxzDRHzpAoBEM8yU,98
2
2
  biatoolkit/basic_client.py,sha256=qp5T85wm6D80i3Owjz9AxUYKmaKHgImxirYCduBi1gk,4760
3
- biatoolkit/sankhya_call.py,sha256=mL7RZotYRu7sZNEOfsSqPLsE_NEx59Jc-8TWFYqlFtc,15281
3
+ biatoolkit/sankhya_call.py,sha256=aPooWgFz3E3MreO4161AnTrebLXNumNJ3coN-Nhyzlg,15701
4
4
  biatoolkit/settings.py,sha256=gA07EMEb9k5tt6ySCOYTV4pKHPSiG7nSap2qhHQhmFY,3494
5
- biatoolkit/test_sankhya.py,sha256=WmAD9i-I8rk7Bbhq58I6ogENrak-CY-UNdIcD8Hys6I,1473
5
+ biatoolkit/test_sankhya.py,sha256=VE8mMbzLhtyIpvm2hUCjgZC65h4FVPfro_PqPkJOjGk,1084
6
6
  biatoolkit/util.py,sha256=PgYKRl85K4wmF4WFrabTQ3yiTmgw9S2BxZ-uvwFnP6A,7768
7
7
  biatoolkit/schema/__init__.py,sha256=6lvcENhbQnelI2faBGnEs0yG0k4SkwtIrtmn4PtKWvg,32
8
8
  biatoolkit/schema/header.py,sha256=COJPlqK1cFvvWzDcCw2ru1jszWPgyyvabkjzDCc8AjM,683
9
9
  biatoolkit/validation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  biatoolkit/validation/coercion.py,sha256=6njD6VWZ92OTbv0PhwsSQa6lpWzq74zA_X46I2Z9cIU,4136
11
11
  biatoolkit/validation/validation.py,sha256=4DwAAd9PfPS7zC0X_yRYimrdj2VuIpf_jh1SfjUCVE0,3304
12
- biatoolkit-1.2.1.dist-info/METADATA,sha256=0d5YDug_FznoYMStKajvKQX0k_CeCv3WjGi5YIqdLy8,19540
13
- biatoolkit-1.2.1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
14
- biatoolkit-1.2.1.dist-info/top_level.txt,sha256=DyrMS0X6u1FDA9uT854LxoT3X7gzMAlsFQabE-WuKMc,11
15
- biatoolkit-1.2.1.dist-info/RECORD,,
12
+ biatoolkit-1.2.3.dist-info/METADATA,sha256=0PZgn3FCyh9jFewRsA7ik3PYIzNen1_yy6JL5QGIzXE,23020
13
+ biatoolkit-1.2.3.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
14
+ biatoolkit-1.2.3.dist-info/top_level.txt,sha256=DyrMS0X6u1FDA9uT854LxoT3X7gzMAlsFQabE-WuKMc,11
15
+ biatoolkit-1.2.3.dist-info/RECORD,,