Accept full wiki URLs, URL slugs, or UUIDs in project monitor config
This commit is contained in:
@@ -60,14 +60,34 @@ Things to consider — improvements, risks, opportunities.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def parse_wiki_id(raw_id):
|
||||||
|
"""Extract a wiki doc/collection ID from a UUID, URL slug, or full URL.
|
||||||
|
|
||||||
|
Accepts:
|
||||||
|
ae11e785-b110-4a86-985d-804f35bf3d7c (UUID)
|
||||||
|
bVLzs4hbbS (URL slug)
|
||||||
|
https://wiki.jfamily.io/doc/title-bVLzs4hbbS (full URL)
|
||||||
|
https://wiki.jfamily.io/collection/name-bVLzs4hbbS (full collection URL)
|
||||||
|
"""
|
||||||
|
raw_id = raw_id.strip()
|
||||||
|
if "/" in raw_id:
|
||||||
|
# Full URL — grab the last segment after the last dash
|
||||||
|
last_segment = raw_id.rstrip("/").split("/")[-1]
|
||||||
|
# URL format is "title-slug" — the slug is after the last dash
|
||||||
|
if "-" in last_segment:
|
||||||
|
return last_segment.split("-")[-1]
|
||||||
|
return last_segment
|
||||||
|
return raw_id
|
||||||
|
|
||||||
|
|
||||||
def fetch_wiki_docs(collection_id=None, doc_ids=None):
|
def fetch_wiki_docs(collection_id=None, doc_ids=None):
|
||||||
"""Fetch wiki documents. Returns combined text content."""
|
"""Fetch wiki documents recursively. Returns combined text content."""
|
||||||
headers = wiki_headers()
|
headers = wiki_headers()
|
||||||
texts = []
|
texts = []
|
||||||
|
|
||||||
if doc_ids:
|
if doc_ids:
|
||||||
for doc_id in doc_ids:
|
for raw_id in doc_ids:
|
||||||
doc_id = doc_id.strip()
|
doc_id = parse_wiki_id(raw_id)
|
||||||
if not doc_id:
|
if not doc_id:
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
@@ -83,15 +103,15 @@ def fetch_wiki_docs(collection_id=None, doc_ids=None):
|
|||||||
texts.append(f"### [Error fetching doc {doc_id}: {e}]")
|
texts.append(f"### [Error fetching doc {doc_id}: {e}]")
|
||||||
|
|
||||||
elif collection_id:
|
elif collection_id:
|
||||||
|
collection_id = parse_wiki_id(collection_id)
|
||||||
try:
|
try:
|
||||||
result = api_request(
|
result = api_request(
|
||||||
f"{WIKI_API}/documents.list",
|
f"{WIKI_API}/documents.list",
|
||||||
data={"collectionId": collection_id, "limit": 25},
|
data={"collectionId": collection_id, "limit": 50},
|
||||||
headers=headers,
|
headers=headers,
|
||||||
method="POST",
|
method="POST",
|
||||||
)
|
)
|
||||||
for doc in result.get("data", [])[:15]:
|
for doc in result.get("data", [])[:25]:
|
||||||
# Fetch full content for each (up to limit)
|
|
||||||
try:
|
try:
|
||||||
full = api_request(
|
full = api_request(
|
||||||
f"{WIKI_API}/documents.info",
|
f"{WIKI_API}/documents.info",
|
||||||
|
|||||||
Reference in New Issue
Block a user