From 9337050c5b294ce2e946710c066b76a43541e326 Mon Sep 17 00:00:00 2001
From: Kseninia Mikhaylova
Date: Fri, 24 May 2024 13:59:39 +0300
Subject: [PATCH] 1c connect
---
.gitea/workflows/deploy-main.yaml | 1 +
front/app.vue | 45 ++++++++++++--------
front/pages/bx/tg.vue | 25 ++++++-----
front/pages/inventory/index.vue | 61 +++++++++++++++++++++++++++
main.py | 69 ++++++++++++++++++++++++++++++-
5 files changed, 170 insertions(+), 31 deletions(-)
create mode 100644 front/pages/inventory/index.vue
diff --git a/.gitea/workflows/deploy-main.yaml b/.gitea/workflows/deploy-main.yaml
index 452c3d7..f3de26a 100644
--- a/.gitea/workflows/deploy-main.yaml
+++ b/.gitea/workflows/deploy-main.yaml
@@ -54,6 +54,7 @@ jobs:
echo VTK_KEYS=${{ secrets.VTK_KEYS }} > .env
echo BX_API_CALL=${{ secrets.BX_API_CALL }} >> .env
echo TG_TOKEN=${{ secrets.TG_TOKEN }} >> .env
+ echo ODATA_AUTH=${{ secrets.ODATA_AUTH }} >> .env
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} ci.svs-tech.pro
docker compose down
docker compose push
diff --git a/front/app.vue b/front/app.vue
index d7a9d02..4bad813 100644
--- a/front/app.vue
+++ b/front/app.vue
@@ -1,22 +1,31 @@
diff --git a/front/pages/bx/tg.vue b/front/pages/bx/tg.vue
index a180c25..628819a 100644
--- a/front/pages/bx/tg.vue
+++ b/front/pages/bx/tg.vue
@@ -77,7 +77,7 @@ const retryStep = async (stepName: typeof steps[number]) => {
}
}
-const copyOnClick = (e:Event) => {
+const copyOnClick = (e: Event) => {
navigator.clipboard.writeText(e.currentTarget.textContent)
}
@@ -88,12 +88,14 @@ const copyOnClick = (e:Event) => {
-
-
Напишите вот этому боту - чтобы он мог слать вам уведомления @SVSnewsbot
+ Напишите вот этому боту - чтобы он мог слать вам уведомления @SVSnewsbot
+
А теперь этому боту @{{
- data.data.username }}
- , чтобы узнать ваш айди (мы не сохраняем данные)
-
+ :to="`https://t.me/${data.data.username}?start=service_monitoring`">@{{
+ data.data.username }}
+ , чтобы узнать ваш айди (мы не сохраняем данные)
+
Ваши данные пользователя. Нажмите зеленую кнопку, если все верно:
@@ -116,7 +118,8 @@ const copyOnClick = (e:Event) => {
Вот ваша ссылка для формирования вебхука
- https://gi.svs-tech.pro/integration_tg/{{ selected_bx.id }}/{{ selected_tg }}
+ https://gi.svs-tech.pro/integration_tg/{{ selected_bx.id }}/{{ selected_tg
+ }}
Теперь вам осталось
@@ -132,12 +135,12 @@ const copyOnClick = (e:Event) => {
Ошибка в данных
-
-
+
+
Сделано
- Вот и все!
+ Вот и все!
diff --git a/front/pages/inventory/index.vue b/front/pages/inventory/index.vue
new file mode 100644
index 0000000..41478b5
--- /dev/null
+++ b/front/pages/inventory/index.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+ - {{item}}
+ - {{ item_data[item] }}
+
+
+
+
+
\ No newline at end of file
diff --git a/main.py b/main.py
index 3392fd6..0097a1c 100644
--- a/main.py
+++ b/main.py
@@ -29,6 +29,7 @@ vtk = json.loads(os.getenv("VTK_KEYS"))
vtk_org = {}
BX_API_CALL = os.getenv("BX_API_CALL")
TG_TOKEN = os.getenv("TG_TOKEN")
+ODATA_AUTH = os.getenv("ODATA_AUTH")
api_app = FastAPI(title="api app")
@@ -118,7 +119,8 @@ async def get_tg_data():
except Exception as e:
logger.error(e)
raise HTTPException(status_code=500, detail=str(e))
-
+
+
@api_app.get("/bx/get_users")
async def get_bx_users():
try:
@@ -126,12 +128,75 @@ async def get_bx_users():
res = requests.get(url)
logger.info(url)
data = res.json()
- return {"status": "success", "data": [v for v in data["result"] if v["UF_DEPARTMENT"][0] not in [15,16]]}
+ return {
+ "status": "success",
+ "data": [
+ v for v in data["result"] if v["UF_DEPARTMENT"][0] not in [15, 16]
+ ],
+ }
except Exception as e:
logger.error(e)
raise HTTPException(status_code=500, detail=str(e))
+@api_app.get("/nomen")
+async def get_parent_nomen():
+ try:
+ parent_ids = [
+ "a6aadfe8-7e0f-11ee-ab5a-a47a2bd811cb",
+ "8a988ff-0911-11ee-ab4e-e3e667c628bd",
+ "a0fb742f-09f5-11ee-ab4e-e3e667c628bd",
+ ]
+ url = "https://1c.svs-tech.pro/UNF/odata/standard.odata/Catalog_КатегорииНоменклатуры?$format=json"
+ url += "&"
+ url + " or ".join([f"Ref_Key eq guid'{p}'" for p in parent_ids])
+ url += "&$select=Description,Ref_Key"
+ res = requests.get(url, headers={"Authorization": ODATA_AUTH})
+ data = res.json()
+ return {
+ "status": "success",
+ "data": [
+ {"label": d["Description"], "id": d["Ref_Key"]} for d in data["value"]
+ ],
+ }
+ except Exception as e:
+ logger.error(e)
+ raise HTTPException(status_code=500, detail=str(e))
+
+
+@api_app.get("/nomen/{nomen_id}")
+async def get_nomen_items(nomen_id):
+ try:
+ url = "https://1c.svs-tech.pro/UNF/odata/standard.odata/Catalog_Номенклатура?$format=json"
+ url += "&$select=Ref_Key,Description"
+ url += f"&$filter=КатегорияНоменклатуры_Key eq guid'{nomen_id}'"
+ res = requests.get(url, headers={"Authorization": ODATA_AUTH})
+ data = res.json()
+ return {
+ "status": "success",
+ "data": [
+ {"label": d["Description"], "id": d["Ref_Key"]} for d in data["value"]
+ ],
+ }
+ except Exception as e:
+ logger.error(e)
+ raise HTTPException(status_code=500, detail=str(e))
+
+
+@api_app.get("/nomen_item/{item_id}")
+async def get_nomen_items(item_id):
+ try:
+ url = f"https://1c.svs-tech.pro/UNF/odata/standard.odata/Catalog_Номенклатура(guid'{item_id}')?$format=json"
+ res = requests.get(url, headers={"Authorization": ODATA_AUTH})
+ data = res.json()
+ return {
+ "status": "success",
+ "data": data,
+ }
+ except Exception as e:
+ logger.error(e)
+ raise HTTPException(status_code=500, detail=str(e))
+
app = FastAPI(title="main app")
app.exception_handler(404)