Skip to content

feat: Add confluence update feature of rag-core-library #15

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 6 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ helm-chart/charts/rag-0.0.1.tgz
pyrightconfig.json
notes*.md
notes.md
*todo*.md

# macOS Finder metadata
.DS_Store
**/.DS_Store

# Node Modules
node_modules/
Expand Down
17 changes: 15 additions & 2 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,21 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Pytest (current file)",
"type": "python",
"request": "launch",
// run pytest as a module
"module": "pytest",
"args": [
"--maxfail=1",
"--disable-warnings",
"-q",
"${file}"
],
"console": "integratedTerminal",
"justMyCode": false,
},
{
"name": "rag_backend",
"type": "python",
Expand Down Expand Up @@ -94,7 +109,5 @@
}
]
}


]
}
13 changes: 13 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,24 @@
"./rag-core-library/rag-core-api/src",
"./rag-core-library/rag-core-lib/src",
"./rag-core-library/extractor-api-lib/src",
"./admin-backend",
"./rag-backend"
],
"[yaml]": {
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.formatOnType": true,
"editor.autoIndent": "advanced"
},
"python.testing.pytestEnabled": true,
"python.testing.unittestEnabled": false,
"python.testing.pytestArgs": ["--import-mode","importlib"],
"python.testing.autoTestDiscoverOnSaveEnabled": true,
"python.envFile": "${workspaceFolder}/.env",
"python-envs.defaultEnvManager": "ms-python.python:venv",
"python-envs.defaultPackageManager": "ms-python.python:pip",
"python-envs.pythonProjects": [],
}



6 changes: 4 additions & 2 deletions Tiltfile
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,6 @@ local_resource(
allow_parallel=True,
)


########################################################################################################################
################################## build backend_rag image and do live update ##########################################
########################################################################################################################
Expand Down Expand Up @@ -355,6 +354,9 @@ if has_confluence_config():
if os.environ.get("CONFLUENCE_DOCUMENT_NAME"):
document_names = os.environ["CONFLUENCE_DOCUMENT_NAME"].replace(",", "\\,")
confluence_settings.append("adminBackend.envs.confluenceLoader.CONFLUENCE_DOCUMENT_NAME=%s" % document_names)
if os.environ.get("CONFLUENCE_MAX_PAGES"):
max_pages = os.environ["CONFLUENCE_MAX_PAGES"].replace(",", "\\,")
confluence_settings.append("adminBackend.envs.confluenceLoader.CONFLUENCE_MAX_PAGES=%s" % max_pages)
value_override.extend(confluence_settings)

if os.environ.get("STACKIT_VLLM_API_KEY", False):
Expand All @@ -373,7 +375,7 @@ if os.environ.get("STACKIT_EMBEDDER_API_KEY", False):
yaml = helm(
"./rag-infrastructure/rag",
name="rag",
namespace="rag",
namespace=namespace,
values=[
"./rag-infrastructure/rag/values.yaml",
],
Expand Down
2 changes: 1 addition & 1 deletion admin-backend/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ COPY admin-backend/pyproject.toml admin-backend/poetry.lock ./
RUN mkdir log && chmod 700 log
RUN touch /app/admin-backend/log/logfile.log && chmod 600 /app/admin-backend/log/logfile.log

RUN poetry config virtualenvs.create false &&\
RUN poetry config virtualenvs.create false && \
if [ "$dev" = "1" ]; then \
poetry install --no-interaction --no-ansi --no-root --with dev; \
else \
Expand Down
84 changes: 42 additions & 42 deletions admin-backend/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,45 @@
[tool.poetry]
name = "admin_backend"
version = "1.0.0"
description = "The admin backend is responsible for the document management. This includes deletion, upload and getting particular documents or document lists."
authors = ["STACKIT Data and AI Consulting <data-ai-consulting@stackit.cloud>"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.11"
admin-api-lib = {path = "../rag-core-library/admin-api-lib", develop = true}

[tool.poetry.group.dev.dependencies]
debugpy = "^1.8.1"
pytest = "^8.2.1"
flake8 = "^7.1.0"
flake8-black = "^0.3.6"
flake8-pyproject = "^1.2.3"
coverage = "^7.5.4"
flake8-quotes = "^3.4.0"
flake8-return = "^1.2.0"
flake8-annotations-complexity = "^0.0.8"
flake8-bandit = "^4.1.1"
flake8-bugbear = "^24.8.19"
flake8-builtins = "^2.5.0"
flake8-comprehensions = "^3.15.0"
flake8-eradicate = "^1.5.0"
flake8-expression-complexity = "^0.0.11"
# flake8-logging-format = "^2024.24.12"
# flake8-docstrings = "^1.7.0"
flake8-pytest-style = "^2.0.0"
pep8-naming = "^0.14.1"
flake8-eol = "^0.0.8"
flake8-exceptions = "^0.0.1a0"
flake8-simplify = "^0.21.0"
flake8-wot = "^0.2.0"
flake8-function-order = "^0.0.5"
flake8-tidy-imports = "^4.10.0"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

[tool.flake8]
exclude= [".eggs", "./rag-core-library/*", "./src/admin_backend/models/*", "./src/admin_backend/rag_backend_client/*", "./src/admin_backend/document_extractor_client/*", ".git", ".hg", ".mypy_cache", ".tox", ".venv", ".devcontainer", "venv", "_build", "buck-out", "build", "dist"]
statistics = true
Expand Down Expand Up @@ -49,45 +91,3 @@ skip_gitignore = true

[tool.pylint]
max-line-length = 120

[tool.poetry]
name = "admin_backend"
version = "0.0.1"
description = "The admin backend is responsible for the document management. This includes deletion, upload and getting particular documents or document lists."
authors = ["STACKIT Data and AI Consulting <data-ai-consulting@stackit.cloud>"]
readme = "README.md"

[tool.poetry.group.dev.dependencies]
debugpy = "^1.8.1"
pytest = "^8.2.1"
flake8 = "^7.1.0"
flake8-black = "^0.3.6"
flake8-pyproject = "^1.2.3"
coverage = "^7.5.4"
flake8-quotes = "^3.4.0"
flake8-return = "^1.2.0"
flake8-annotations-complexity = "^0.0.8"
flake8-bandit = "^4.1.1"
flake8-bugbear = "^24.8.19"
flake8-builtins = "^2.5.0"
flake8-comprehensions = "^3.15.0"
flake8-eradicate = "^1.5.0"
flake8-expression-complexity = "^0.0.11"
# flake8-logging-format = "^2024.24.12"
# flake8-docstrings = "^1.7.0"
flake8-pytest-style = "^2.0.0"
pep8-naming = "^0.14.1"
flake8-eol = "^0.0.8"
flake8-exceptions = "^0.0.1a0"
flake8-simplify = "^0.21.0"
flake8-wot = "^0.2.0"
flake8-function-order = "^0.0.5"
flake8-tidy-imports = "^4.10.0"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

[tool.poetry.dependencies]
python = "^3.11"
admin-api-lib = {path = "../rag-core-library/admin-api-lib", develop = true}
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
def test_dummy() -> None:
def test_dummy1() -> None:
print("Dummy test.")
assert True
15 changes: 15 additions & 0 deletions conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import sys
import os
from pathlib import Path

# Add project root and specific directories to Python path
project_root = Path(__file__).parent
sys.path.insert(0, str(project_root))
sys.path.insert(0, str(project_root / "admin-backend"))
sys.path.insert(0, str(project_root / "rag-backend"))
sys.path.insert(0, str(project_root / "document-extractor"))

# point at each rag-core library's src folder so their packages (admin_api_lib, rag_core_api, etc.) are importable
lib_root = project_root / "rag-core-library"
for lib in ["admin-api-lib", "rag-core-api", "rag-core-lib", "extractor-api-lib"]:
sys.path.insert(0, str(lib_root / lib / "src"))
10 changes: 3 additions & 7 deletions rag-backend/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[tool.poetry]
name = "rag-usecase-example"
version = "0.1.0"
description = ""
name = "rag-backend"
version = "1.0.0"
description = "The RAG backend is responsible for handling the interaction with the RAG system."
authors = ["STACKIT Data and AI Consulting <data-ai-consulting@stackit.cloud>"]

[tool.poetry.dependencies]
Expand Down Expand Up @@ -39,7 +39,6 @@ flake8-tidy-imports = "^4.10.0"
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"


[tool.flake8]
exclude= [".eggs", "./rag-core-library/*", ".git", ".hg", ".mypy_cache", ".tox", ".venv", ".devcontainer", "venv", "_build", "buck-out", "build", "dist"]
statistics = true
Expand All @@ -58,7 +57,6 @@ per-file-ignores = """
./tests/*: S101,
"""


[tool.black]
line-length = 120
exclude = """
Expand All @@ -80,12 +78,10 @@ exclude = """
)/
"""


[tool.isort]
profile = "black"
skip = ['.eggs', '.git', '.hg', '.mypy_cache', '.nox', '.pants.d', '.tox', '.venv', '_build', 'buck-out', 'build', 'dist', 'node_modules', 'venv']
skip_gitignore = true

[tool.pylint]
max-line-length = 120

Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
def test_dummy() -> None:
def test_dummy2() -> None:
print("Dummy test.")
assert True # noqa S101
2 changes: 1 addition & 1 deletion rag-core-library
Submodule rag-core-library updated 82 files
+3 −0 .gitignore
+15 −0 admin-api-lib/openapi.yaml
+280 −57 admin-api-lib/poetry.lock
+19 −0 admin-api-lib/src/admin_api_lib/api_endpoints/confluence_updater.py
+16 −0 admin-api-lib/src/admin_api_lib/apis/admin_api.py
+5 −0 admin-api-lib/src/admin_api_lib/apis/admin_api_base.py
+0 −0 admin-api-lib/src/admin_api_lib/confluence_handler/__init__.py
+169 −0 admin-api-lib/src/admin_api_lib/confluence_handler/confluence_handler.py
+13 −0 admin-api-lib/src/admin_api_lib/dependency_container.py
+4 −1 admin-api-lib/src/admin_api_lib/extractor_api_client/openapi_client/models/confluence_parameters.py
+21 −0 admin-api-lib/src/admin_api_lib/impl/admin_api.py
+15 −100 admin-api-lib/src/admin_api_lib/impl/api_endpoints/default_confluence_loader.py
+131 −0 admin-api-lib/src/admin_api_lib/impl/api_endpoints/default_confluence_updater.py
+5 −2 admin-api-lib/src/admin_api_lib/impl/api_endpoints/default_document_deleter.py
+2 −1 admin-api-lib/src/admin_api_lib/impl/api_endpoints/default_document_uploader.py
+1 −0 admin-api-lib/src/admin_api_lib/impl/mapper/confluence_settings_mapper.py
+28 −1 admin-api-lib/src/admin_api_lib/impl/settings/confluence_settings.py
+17 −34 admin-api-lib/src/admin_api_lib/rag_backend_client/openapi_client/__init__.py
+431 −36 admin-api-lib/src/admin_api_lib/rag_backend_client/openapi_client/api/rag_api.py
+9 −12 admin-api-lib/src/admin_api_lib/rag_backend_client/openapi_client/api_client.py
+2 −4 admin-api-lib/src/admin_api_lib/rag_backend_client/openapi_client/api_response.py
+4 −4 admin-api-lib/src/admin_api_lib/rag_backend_client/openapi_client/configuration.py
+1 −2 admin-api-lib/src/admin_api_lib/rag_backend_client/openapi_client/exceptions.py
+10 −25 admin-api-lib/src/admin_api_lib/rag_backend_client/openapi_client/models/__init__.py
+8 −13 admin-api-lib/src/admin_api_lib/rag_backend_client/openapi_client/models/chat_history.py
+5 −6 admin-api-lib/src/admin_api_lib/rag_backend_client/openapi_client/models/chat_history_message.py
+5 −8 admin-api-lib/src/admin_api_lib/rag_backend_client/openapi_client/models/chat_request.py
+8 −13 admin-api-lib/src/admin_api_lib/rag_backend_client/openapi_client/models/chat_response.py
+1 −3 admin-api-lib/src/admin_api_lib/rag_backend_client/openapi_client/models/chat_role.py
+1 −3 admin-api-lib/src/admin_api_lib/rag_backend_client/openapi_client/models/content_type.py
+15 −15 admin-api-lib/src/admin_api_lib/rag_backend_client/openapi_client/models/delete_request.py
+9 −16 admin-api-lib/src/admin_api_lib/rag_backend_client/openapi_client/models/information_piece.py
+4 −4 admin-api-lib/src/admin_api_lib/rag_backend_client/openapi_client/models/key_value_pair.py
+101 −0 admin-api-lib/src/admin_api_lib/rag_backend_client/openapi_client/models/upload_request.py
+2 −5 admin-api-lib/src/admin_api_lib/rag_backend_client/openapi_client/rest.py
+0 −0 admin-api-lib/src/admin_api_lib/rag_backend_client/openapi_client/test/__init__.py
+18 −2 admin-api-lib/tests/settings/confluence_settings_test.py
+3 −3 api-generator.sh
+4 −0 extractor-api-lib/openapi.yaml
+220 −36 extractor-api-lib/poetry.lock
+1 −1 extractor-api-lib/pyproject.toml
+54 −28 extractor-api-lib/src/extractor_api_lib/models/confluence_parameters.py
+0 −0 extractor-api-lib/tests/dummy4_test.py
+3 −3 pyproject.toml
+55 −4 rag-core-api/openapi.yaml
+317 −234 rag-core-api/poetry.lock
+4 −3 rag-core-api/pyproject.toml
+44 −0 rag-core-api/src/rag_core_api/api_endpoints/collection_duplicator.py
+32 −0 rag-core-api/src/rag_core_api/api_endpoints/collection_switcher.py
+5 −4 rag-core-api/src/rag_core_api/api_endpoints/information_piece_uploader.py
+38 −8 rag-core-api/src/rag_core_api/apis/rag_api.py
+12 −2 rag-core-api/src/rag_core_api/apis/rag_api_base.py
+4 −0 rag-core-api/src/rag_core_api/dependency_container.py
+40 −0 rag-core-api/src/rag_core_api/impl/api_endpoints/default_collection_duplicator.py
+35 −0 rag-core-api/src/rag_core_api/impl/api_endpoints/default_collection_switcher.py
+4 −1 rag-core-api/src/rag_core_api/impl/api_endpoints/default_information_pieces_remover.py
+12 −6 rag-core-api/src/rag_core_api/impl/api_endpoints/default_information_pieces_uploader.py
+19 −3 rag-core-api/src/rag_core_api/impl/rag_api.py
+12 −6 rag-core-api/src/rag_core_api/impl/settings/vector_db_settings.py
+183 −12 rag-core-api/src/rag_core_api/impl/vector_databases/qdrant_database.py
+7 −5 rag-core-api/src/rag_core_api/main.py
+7 −10 rag-core-api/src/rag_core_api/models/chat_history.py
+4 −5 rag-core-api/src/rag_core_api/models/chat_history_message.py
+5 −6 rag-core-api/src/rag_core_api/models/chat_request.py
+7 −10 rag-core-api/src/rag_core_api/models/chat_response.py
+2 −2 rag-core-api/src/rag_core_api/models/chat_role.py
+2 −2 rag-core-api/src/rag_core_api/models/content_type.py
+13 −11 rag-core-api/src/rag_core_api/models/delete_request.py
+7 −10 rag-core-api/src/rag_core_api/models/information_piece.py
+4 −4 rag-core-api/src/rag_core_api/models/key_value_pair.py
+103 −0 rag-core-api/src/rag_core_api/models/upload_request.py
+43 −2 rag-core-api/src/rag_core_api/vector_databases/vector_database.py
+0 −0 rag-core-api/tests/endpoints/__init__.py
+91 −0 rag-core-api/tests/endpoints/conftest.py
+42 −0 rag-core-api/tests/endpoints/default_collection_duplicator_test.py
+95 −0 rag-core-api/tests/endpoints/default_collection_switcher_test.py
+1 −0 rag-core-api/tests/mock_environment_variables.py
+178 −143 rag-core-api/tests/rag_api_test.py
+220 −80 rag-core-lib/poetry.lock
+2 −2 rag-core-lib/pyproject.toml
+13 −0 rag-core-lib/src/rag_core_lib/impl/utils/timestamp_creator.py
+0 −0 rag-core-lib/tests/dummy5_test.py
2 changes: 1 addition & 1 deletion rag-infrastructure