[PR #28913] refactor: port reqparse to Pydantic model #32232

Closed
opened 2026-02-21 20:51:00 -05:00 by yindo · 0 comments
Owner

Original Pull Request: https://github.com/langgenius/dify/pull/28913

State: closed
Merged: Yes


Important

  1. Make sure you have read our contribution guidelines
  2. Ensure there is an associated issue and you have been assigned to it
  3. Use the correct syntax to link this PR: Fixes #<issue number>.

Summary

part of #27513

Rewrite the following models

controllers/console/app/app.py

  • Pydantic payload/query classes: AppListQuery, CreateAppPayload, UpdateAppPayload, CopyAppPayload, AppExportQuery, AppNamePayload, AppIconPayload, AppSiteStatusPayload, AppApiStatusPayload, AppTracePayload
  • Resource classes: AppListApi, AppApi, AppCopyApi, AppExportApi, AppNameApi, AppIconApi, AppSiteStatus, AppApiStatus, AppTraceApi

controllers/console/app/completion.py

  • Payload classes: BaseMessagePayload, CompletionMessagePayload, ChatMessagePayload
  • Resources: CompletionMessageApi, ChatMessageApi

controllers/console/app/message.py

  • Query/payload classes: ChatMessagesQuery, MessageFeedbackPayload, FeedbackExportQuery
  • Resources: ChatMessageListApi, MessageFeedbackApi, MessageFeedbackExportApi

controllers/console/app/conversation.py

  • Query classes: CompletionConversationQuery, ChatConversationQuery
  • Resources: CompletionConversationApi, ChatConversationApi

controllers/console/app/conversation_variables.py

  • Query class: ConversationVariablesQuery
  • Resource: ConversationVariablesApi

controllers/console/app/statistic.py

  • Query class: StatisticTimeRangeQuery
  • Resources: DailyMessageStatistic, DailyConversationStatistic, DailyTerminalsStatistic, DailyTokenCostStatistic, AverageSessionInteractionStatistic, UserSatisfactionRateStatistic, AverageResponseTimeStatistic,
    TokensPerSecondStatistic

controllers/console/app/generator.py

  • Payload classes: RuleGeneratePayload, RuleCodeGeneratePayload, RuleStructuredOutputPayload, InstructionGeneratePayload, InstructionTemplatePayload
  • Resources: RuleGenerateApi, RuleCodeGenerateApi, RuleStructuredOutputGenerateApi, InstructionGenerateApi, InstructionGenerationTemplateApi

controllers/console/app/workflow_statistic.py

  • Query class: WorkflowStatisticQuery
  • Resources: WorkflowDailyRunsStatistic, WorkflowDailyTerminalsStatistic, WorkflowDailyTokenCostStatistic, WorkflowAverageAppInteractionStatistic

controllers/console/app/workflow_app_log.py

  • Query class: WorkflowAppLogQuery
  • Resource: WorkflowAppLogApi

controllers/console/app/advanced_prompt_template.py

  • Query class: AdvancedPromptTemplateQuery
  • Resource: AdvancedPromptTemplateList

controllers/console/app/workflow_run.py

  • Query classes: WorkflowRunListQuery, WorkflowRunCountQuery
  • Resources: AdvancedChatAppWorkflowRunListApi, AdvancedChatAppWorkflowRunCountApi, WorkflowRunListApi, WorkflowRunCountApi

controllers/console/app/workflow.py

  • Payload/query classes: SyncDraftWorkflowPayload, AdvancedChatWorkflowRunPayload, IterationNodeRunPayload, LoopNodeRunPayload, DraftWorkflowRunPayload, DraftWorkflowNodeRunPayload, PublishWorkflowPayload, DefaultBlockConfigQuery,
    ConvertToWorkflowPayload, WorkflowListQuery, WorkflowUpdatePayload, DraftWorkflowTriggerRunPayload, DraftWorkflowTriggerRunAllPayload
  • Resources: DraftWorkflowApi, AdvancedChatDraftWorkflowRunApi, AdvancedChatDraftRunIterationNodeApi, WorkflowDraftRunIterationNodeApi, AdvancedChatDraftRunLoopNodeApi, WorkflowDraftRunLoopNodeApi, DraftWorkflowRunApi,
    DraftWorkflowNodeRunApi, PublishedWorkflowApi, DefaultBlockConfigApi, ConvertToWorkflowApi, PublishedAllWorkflowApi, WorkflowByIdApi, DraftWorkflowTriggerRunApi, DraftWorkflowTriggerRunAllApi, plus the trigger node/poller APIs
    already inside the file

controllers/console/app/workflow_app_log.py

  • WorkflowAppLogQuery, WorkflowAppLogApi

That covers every class definition we added or refactored in the effort to replace reqparse with typed Pydantic validation across the console app controllers.

Screenshots

Before After
... ...

Checklist

  • This change requires a documentation update, included: Dify Document
  • I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!)
  • I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change.
  • I've updated the documentation accordingly.
  • I ran dev/reformat(backend) and cd web && npx lint-staged(frontend) to appease the lint gods
**Original Pull Request:** https://github.com/langgenius/dify/pull/28913 **State:** closed **Merged:** Yes --- > [!IMPORTANT] > > 1. Make sure you have read our [contribution guidelines](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md) > 1. Ensure there is an associated issue and you have been assigned to it > 1. Use the correct syntax to link this PR: `Fixes #<issue number>`. ## Summary <!-- Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. --> part of #27513 Rewrite the following models controllers/console/app/app.py - Pydantic payload/query classes: AppListQuery, CreateAppPayload, UpdateAppPayload, CopyAppPayload, AppExportQuery, AppNamePayload, AppIconPayload, AppSiteStatusPayload, AppApiStatusPayload, AppTracePayload - Resource classes: AppListApi, AppApi, AppCopyApi, AppExportApi, AppNameApi, AppIconApi, AppSiteStatus, AppApiStatus, AppTraceApi controllers/console/app/completion.py - Payload classes: BaseMessagePayload, CompletionMessagePayload, ChatMessagePayload - Resources: CompletionMessageApi, ChatMessageApi controllers/console/app/message.py - Query/payload classes: ChatMessagesQuery, MessageFeedbackPayload, FeedbackExportQuery - Resources: ChatMessageListApi, MessageFeedbackApi, MessageFeedbackExportApi controllers/console/app/conversation.py - Query classes: CompletionConversationQuery, ChatConversationQuery - Resources: CompletionConversationApi, ChatConversationApi controllers/console/app/conversation_variables.py - Query class: ConversationVariablesQuery - Resource: ConversationVariablesApi controllers/console/app/statistic.py - Query class: StatisticTimeRangeQuery - Resources: DailyMessageStatistic, DailyConversationStatistic, DailyTerminalsStatistic, DailyTokenCostStatistic, AverageSessionInteractionStatistic, UserSatisfactionRateStatistic, AverageResponseTimeStatistic, TokensPerSecondStatistic controllers/console/app/generator.py - Payload classes: RuleGeneratePayload, RuleCodeGeneratePayload, RuleStructuredOutputPayload, InstructionGeneratePayload, InstructionTemplatePayload - Resources: RuleGenerateApi, RuleCodeGenerateApi, RuleStructuredOutputGenerateApi, InstructionGenerateApi, InstructionGenerationTemplateApi controllers/console/app/workflow_statistic.py - Query class: WorkflowStatisticQuery - Resources: WorkflowDailyRunsStatistic, WorkflowDailyTerminalsStatistic, WorkflowDailyTokenCostStatistic, WorkflowAverageAppInteractionStatistic controllers/console/app/workflow_app_log.py - Query class: WorkflowAppLogQuery - Resource: WorkflowAppLogApi controllers/console/app/advanced_prompt_template.py - Query class: AdvancedPromptTemplateQuery - Resource: AdvancedPromptTemplateList controllers/console/app/workflow_run.py - Query classes: WorkflowRunListQuery, WorkflowRunCountQuery - Resources: AdvancedChatAppWorkflowRunListApi, AdvancedChatAppWorkflowRunCountApi, WorkflowRunListApi, WorkflowRunCountApi controllers/console/app/workflow.py - Payload/query classes: SyncDraftWorkflowPayload, AdvancedChatWorkflowRunPayload, IterationNodeRunPayload, LoopNodeRunPayload, DraftWorkflowRunPayload, DraftWorkflowNodeRunPayload, PublishWorkflowPayload, DefaultBlockConfigQuery, ConvertToWorkflowPayload, WorkflowListQuery, WorkflowUpdatePayload, DraftWorkflowTriggerRunPayload, DraftWorkflowTriggerRunAllPayload - Resources: DraftWorkflowApi, AdvancedChatDraftWorkflowRunApi, AdvancedChatDraftRunIterationNodeApi, WorkflowDraftRunIterationNodeApi, AdvancedChatDraftRunLoopNodeApi, WorkflowDraftRunLoopNodeApi, DraftWorkflowRunApi, DraftWorkflowNodeRunApi, PublishedWorkflowApi, DefaultBlockConfigApi, ConvertToWorkflowApi, PublishedAllWorkflowApi, WorkflowByIdApi, DraftWorkflowTriggerRunApi, DraftWorkflowTriggerRunAllApi, plus the trigger node/poller APIs already inside the file controllers/console/app/workflow_app_log.py - WorkflowAppLogQuery, WorkflowAppLogApi That covers every class definition we added or refactored in the effort to replace reqparse with typed Pydantic validation across the console app controllers. ## Screenshots | Before | After | |--------|-------| | ... | ... | ## Checklist - [ ] This change requires a documentation update, included: [Dify Document](https://github.com/langgenius/dify-docs) - [x] I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!) - [x] I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change. - [x] I've updated the documentation accordingly. - [x] I ran `dev/reformat`(backend) and `cd web && npx lint-staged`(frontend) to appease the lint gods
yindo added the pull-request label 2026-02-21 20:51:00 -05:00
yindo closed this issue 2026-02-21 20:51:00 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#32232