Skip to content

Commit 1e2372e

Browse files
authored
chore: add admin settings to disable doc-ray and markitdown (#1381)
1 parent 431d519 commit 1e2372e

File tree

14 files changed

+146
-8
lines changed

14 files changed

+146
-8
lines changed

aperag/api/components/schemas/settings.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,9 @@ Settings:
77
mineru_api_token:
88
type: string
99
description: API token for MinerU
10+
use_doc_ray:
11+
type: boolean
12+
description: Whether to use DocRay
13+
use_markitdown:
14+
type: boolean
15+
description: Whether to use MarkItDown

aperag/docparser/doc_parser.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,12 @@ def __init__(self, parser_config: Optional[dict] = None, full_config: list[Parse
9393
cfg.settings["api_token"] = token
9494
else:
9595
cfg.enabled = False
96+
elif cfg.name == DocRayParser.name:
97+
use_doc_ray = parser_config.get("use_doc_ray", False)
98+
cfg.enabled = use_doc_ray
99+
elif cfg.name == MarkItDownParser.name:
100+
use_markitdown = parser_config.get("use_markitdown", True)
101+
cfg.enabled = use_markitdown
96102

97103
for cfg in self.config:
98104
if not cfg.enabled:
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
"""add use_markitdown as default setting
2+
3+
Revision ID: ef8cf2222205
4+
Revises: d112e0332219
5+
Create Date: 2025-09-29 18:37:57.365896
6+
7+
"""
8+
from typing import Sequence, Union
9+
10+
from alembic import op
11+
import sqlalchemy as sa
12+
13+
14+
# revision identifiers, used by Alembic.
15+
revision: str = 'ef8cf2222205'
16+
down_revision: Union[str, None] = 'd112e0332219'
17+
branch_labels: Union[str, Sequence[str], None] = None
18+
depends_on: Union[str, Sequence[str], None] = None
19+
20+
21+
def upgrade() -> None:
22+
op.execute("INSERT INTO setting (key, value, gmt_created, gmt_updated) VALUES ('use_markitdown', 'true', NOW(), NOW())")
23+
24+
25+
def downgrade() -> None:
26+
op.execute("DELETE FROM setting WHERE key = 'use_markitdown'")

aperag/schema/view_models.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
# generated by datamodel-codegen:
1616
# filename: openapi.merged.yaml
17-
# timestamp: 2025-09-08T06:55:15+00:00
17+
# timestamp: 2025-09-29T10:27:18+00:00
1818

1919
from __future__ import annotations
2020

@@ -916,6 +916,10 @@ class SearchRequest(BaseModel):
916916
class Settings(BaseModel):
917917
use_mineru: Optional[bool] = Field(None, description='Whether to use MinerU')
918918
mineru_api_token: Optional[str] = Field(None, description='API token for MinerU')
919+
use_doc_ray: Optional[bool] = Field(None, description='Whether to use DocRay')
920+
use_markitdown: Optional[bool] = Field(
921+
None, description='Whether to use MarkItDown'
922+
)
919923

920924

921925
class GraphLabelsResponse(BaseModel):

aperag/service/setting_service.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,18 @@ async def get_use_mineru(self) -> bool:
5151
async def update_use_mineru(self, use_mineru: bool):
5252
await self.update_setting("use_mineru", use_mineru)
5353

54+
async def get_use_doc_ray(self) -> bool:
55+
return await self.get_setting("use_doc_ray") or False
56+
57+
async def update_use_doc_ray(self, use_doc_ray: bool):
58+
await self.update_setting("use_doc_ray", use_doc_ray)
59+
60+
async def get_use_markitdown(self) -> bool:
61+
return await self.get_setting("use_markitdown") or True
62+
63+
async def update_use_markitdown(self, use_markitdown: bool):
64+
await self.update_setting("use_markitdown", use_markitdown)
65+
5466
async def get_all_settings(self) -> dict:
5567
settings = await self.db_ops.query_all_settings()
5668
return {s.key: json.loads(s.value) for s in settings}

web/src/api/models/default-model-config.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ export interface DefaultModelConfig {
2626
* @memberof DefaultModelConfig
2727
*/
2828
'scenario': DefaultModelConfigScenarioEnum;
29+
/**
30+
*
31+
* @type {string}
32+
* @memberof DefaultModelConfig
33+
*/
34+
'custom_llm_provider'?: string;
2935
/**
3036
* The name of the model provider
3137
* @type {string}

web/src/api/models/settings.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,17 @@ export interface Settings {
3232
* @memberof Settings
3333
*/
3434
'mineru_api_token'?: string;
35+
/**
36+
* Whether to use DocRay
37+
* @type {boolean}
38+
* @memberof Settings
39+
*/
40+
'use_doc_ray'?: boolean;
41+
/**
42+
* Whether to use MarkItDown
43+
* @type {boolean}
44+
* @memberof Settings
45+
*/
46+
'use_markitdown'?: boolean;
3547
}
3648

web/src/api/openapi.merged.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5757,6 +5757,12 @@ components:
57575757
mineru_api_token:
57585758
type: string
57595759
description: API token for MinerU
5760+
use_doc_ray:
5761+
type: boolean
5762+
description: Whether to use DocRay
5763+
use_markitdown:
5764+
type: boolean
5765+
description: Whether to use MarkItDown
57605766
graphLabelsResponse:
57615767
type: object
57625768
description: Response containing available graph labels
@@ -6485,6 +6491,8 @@ components:
64856491
- default_for_background_task
64866492
description: The scenario for which this default model is configured
64876493
example: default_for_embedding
6494+
custom_llm_provider:
6495+
type: string
64886496
provider_name:
64896497
type: string
64906498
nullable: true

web/src/app/admin/configuration/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
import { getServerApi } from '@/lib/api/server';
99
import { Metadata } from 'next';
1010
import { getTranslations } from 'next-intl/server';
11-
import { MinerUSettings } from './mineru-settings';
11+
import { ParserSettings } from './parser-settings';
1212
import { QuotaSettings } from './quota-settings';
1313

1414
export async function generateMetadata(): Promise<Metadata> {
@@ -40,7 +40,7 @@ export default async function Page() {
4040
</PageDescription>
4141

4242
<div className="flex flex-col gap-6">
43-
<MinerUSettings data={settings} />
43+
<ParserSettings data={settings} />
4444
<QuotaSettings data={resSystemDefaultQuotas.data.quotas} />
4545
</div>
4646
</PageContent>

web/src/app/admin/configuration/mineru-settings.tsx renamed to web/src/app/admin/configuration/parser-settings.tsx

Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,11 @@ import { toast } from 'sonner';
2222
const defaultValue = {
2323
use_mineru: false,
2424
mineru_api_token: '',
25+
use_doc_ray: false,
26+
use_markitdown: true,
2527
};
2628

27-
export const MinerUSettings = ({
29+
export const ParserSettings = ({
2830
data: initData = defaultValue,
2931
}: {
3032
data: Settings;
@@ -46,9 +48,9 @@ export const MinerUSettings = ({
4648
toast.success('Saved successfully');
4749
}, [data]);
4850

49-
const handleUseMineruChange = useCallback(
50-
async (checked: boolean) => {
51-
const settings = { ...data, use_mineru: checked };
51+
const handleSwitchChange = useCallback(
52+
async (key: keyof Settings, checked: boolean) => {
53+
const settings = { ...data, [key]: checked };
5254
setData(settings);
5355
await apiClient.defaultApi.settingsPut({
5456
settings,
@@ -98,7 +100,9 @@ export const MinerUSettings = ({
98100
</div>
99101
<Switch
100102
checked={data.use_mineru}
101-
onCheckedChange={handleUseMineruChange}
103+
onCheckedChange={(checked) =>
104+
handleSwitchChange('use_mineru', checked)
105+
}
102106
/>
103107
</div>
104108
</CardHeader>
@@ -138,6 +142,42 @@ export const MinerUSettings = ({
138142
</Button>
139143
</CardFooter>
140144
</Card>
145+
<Card>
146+
<CardHeader>
147+
<div className="flex flex-row items-center justify-between">
148+
<div>
149+
<CardTitle>{admin_config('use_doc_ray')}</CardTitle>
150+
<CardDescription>
151+
{admin_config('use_doc_ray_description')}
152+
</CardDescription>
153+
</div>
154+
<Switch
155+
checked={data.use_doc_ray}
156+
onCheckedChange={(checked) =>
157+
handleSwitchChange('use_doc_ray', checked)
158+
}
159+
/>
160+
</div>
161+
</CardHeader>
162+
</Card>
163+
<Card>
164+
<CardHeader>
165+
<div className="flex flex-row items-center justify-between">
166+
<div>
167+
<CardTitle>{admin_config('use_markitdown')}</CardTitle>
168+
<CardDescription>
169+
{admin_config('use_markitdown_description')}
170+
</CardDescription>
171+
</div>
172+
<Switch
173+
checked={data.use_markitdown}
174+
onCheckedChange={(checked) =>
175+
handleSwitchChange('use_markitdown', checked)
176+
}
177+
/>
178+
</div>
179+
</CardHeader>
180+
</Card>
141181
</>
142182
);
143183
};

0 commit comments

Comments
 (0)