Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
dify
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ai-tech
dify
Commits
d3d61723
Unverified
Commit
d3d61723
authored
Jan 29, 2024
by
Garfield Dai
Committed by
GitHub
Jan 29, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Feat/utm update (#2269)
Co-authored-by:
Joel
<
iamjoel007@gmail.com
>
parent
6c3b34a6
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
29 additions
and
78 deletions
+29
-78
__init__.py
api/controllers/console/__init__.py
+0
-2
feature.py
api/controllers/console/feature.py
+2
-0
__init__.py
api/controllers/console/operation/__init__.py
+0
-0
operation.py
api/controllers/console/operation/operation.py
+0
-30
wraps.py
api/controllers/console/wraps.py
+20
-0
operation_service.py
api/services/operation_service.py
+6
-6
swr-initor.tsx
web/app/components/swr-initor.tsx
+0
-8
provider-context.tsx
web/context/provider-context.tsx
+1
-19
common.ts
web/models/common.ts
+0
-8
common.ts
web/service/common.ts
+0
-5
No files found.
api/controllers/console/__init__.py
View file @
d3d61723
...
...
@@ -19,5 +19,3 @@ from .explore import audio, completion, conversation, installed_app, message, pa
from
.workspace
import
account
,
members
,
model_providers
,
models
,
tool_providers
,
workspace
# Import billing controllers
from
.billing
import
billing
# Import operation controllers
from
.operation
import
operation
api/controllers/console/feature.py
View file @
d3d61723
...
...
@@ -3,10 +3,12 @@ from flask_restful import Resource
from
services.feature_service
import
FeatureService
from
.
import
api
from
.wraps
import
cloud_utm_record
class
FeatureApi
(
Resource
):
@
cloud_utm_record
def
get
(
self
):
return
FeatureService
.
get_features
(
current_user
.
current_tenant_id
)
.
dict
()
...
...
api/controllers/console/operation/__init__.py
deleted
100644 → 0
View file @
6c3b34a6
api/controllers/console/operation/operation.py
deleted
100644 → 0
View file @
6c3b34a6
from
flask_login
import
current_user
from
flask_restful
import
Resource
,
reqparse
from
controllers.console
import
api
from
controllers.console.setup
import
setup_required
from
controllers.console.wraps
import
account_initialization_required
,
only_edition_cloud
from
libs.login
import
login_required
from
services.operation_service
import
OperationService
class
TenantUtm
(
Resource
):
@
setup_required
@
login_required
@
account_initialization_required
@
only_edition_cloud
def
post
(
self
):
parser
=
reqparse
.
RequestParser
()
parser
.
add_argument
(
'utm_source'
,
type
=
str
,
required
=
True
)
parser
.
add_argument
(
'utm_medium'
,
type
=
str
,
required
=
True
)
parser
.
add_argument
(
'utm_campaign'
,
type
=
str
,
required
=
False
,
default
=
''
)
parser
.
add_argument
(
'utm_content'
,
type
=
str
,
required
=
False
,
default
=
''
)
parser
.
add_argument
(
'utm_term'
,
type
=
str
,
required
=
False
,
default
=
''
)
args
=
parser
.
parse_args
()
return
OperationService
.
record_utm
(
current_user
.
current_tenant_id
,
args
)
api
.
add_resource
(
TenantUtm
,
'/operation/utm'
)
api/controllers/console/wraps.py
View file @
d3d61723
# -*- coding:utf-8 -*-
import
json
from
functools
import
wraps
from
flask
import
request
from
controllers.console.workspace.error
import
AccountNotInitializedError
from
flask
import
abort
,
current_app
from
flask_login
import
current_user
from
services.feature_service
import
FeatureService
from
services.operation_service
import
OperationService
def
account_initialization_required
(
view
):
...
...
@@ -73,3 +76,20 @@ def cloud_edition_billing_resource_check(resource: str,
return
decorated
return
interceptor
def
cloud_utm_record
(
view
):
@
wraps
(
view
)
def
decorated
(
*
args
,
**
kwargs
):
try
:
features
=
FeatureService
.
get_features
(
current_user
.
current_tenant_id
)
if
features
.
billing
.
enabled
:
utm_info
=
request
.
cookies
.
get
(
'utm_info'
)
if
utm_info
:
utm_info
=
json
.
loads
(
utm_info
)
OperationService
.
record_utm
(
current_user
.
current_tenant_id
,
utm_info
)
except
Exception
as
e
:
pass
return
view
(
*
args
,
**
kwargs
)
return
decorated
api/services/operation_service.py
View file @
d3d61723
...
...
@@ -20,13 +20,13 @@ class OperationService:
return
response
.
json
()
@
classmethod
def
record_utm
(
cls
,
tenant_id
,
args
):
def
record_utm
(
cls
,
tenant_id
:
str
,
utm_info
:
dict
):
params
=
{
'tenant_id'
:
tenant_id
,
'utm_source'
:
args
[
'utm_source'
]
,
'utm_medium'
:
args
[
'utm_medium'
]
,
'utm_campaign'
:
args
[
'utm_campaign'
]
,
'utm_content'
:
args
[
'utm_content'
]
,
'utm_term'
:
args
[
'utm_term'
]
'utm_source'
:
utm_info
.
get
(
'utm_source'
,
''
)
,
'utm_medium'
:
utm_info
.
get
(
'utm_medium'
,
''
)
,
'utm_campaign'
:
utm_info
.
get
(
'utm_campaign'
,
''
)
,
'utm_content'
:
utm_info
.
get
(
'utm_content'
,
''
)
,
'utm_term'
:
utm_info
.
get
(
'utm_term'
,
''
)
}
return
cls
.
_send_request
(
'POST'
,
'/tenant_utms'
,
params
=
params
)
web/app/components/swr-initor.tsx
View file @
d3d61723
...
...
@@ -15,14 +15,6 @@ const SwrInitor = ({
const
searchParams
=
useSearchParams
()
const
consoleToken
=
searchParams
.
get
(
'console_token'
)
const
consoleTokenFromLocalStorage
=
localStorage
?.
getItem
(
'console_token'
)
const
utm
=
{
utm_source
:
searchParams
.
get
(
'utm_source'
)
||
''
,
utm_medium
:
searchParams
.
get
(
'utm_medium'
)
||
''
,
utm_campaign
:
searchParams
.
get
(
'utm_campaign'
)
||
''
,
utm_content
:
searchParams
.
get
(
'utm_content'
)
||
''
,
utm_term
:
searchParams
.
get
(
'utm_term'
)
||
''
,
}
localStorage
?.
setItem
(
'utm'
,
JSON
.
stringify
(
utm
))
const
[
init
,
setInit
]
=
useState
(
false
)
useEffect
(()
=>
{
...
...
web/context/provider-context.tsx
View file @
d3d61723
...
...
@@ -7,7 +7,6 @@ import {
fetchModelList
,
fetchModelProviders
,
fetchSupportRetrievalMethods
,
operationUtm
,
}
from
'@/service/common'
import
{
ModelFeatureEnum
,
...
...
@@ -100,23 +99,7 @@ export const ProviderContextProvider = ({
const
[
isFetchedPlan
,
setIsFetchedPlan
]
=
useState
(
false
)
const
[
enableBilling
,
setEnableBilling
]
=
useState
(
true
)
const
[
enableReplaceWebAppLogo
,
setEnableReplaceWebAppLogo
]
=
useState
(
false
)
const
handleOperateUtm
=
()
=>
{
let
utm
try
{
utm
=
JSON
.
parse
(
localStorage
?.
getItem
(
'utm'
)
||
'{}'
)
}
catch
(
e
)
{
utm
=
{
utm_source
:
''
,
utm_medium
:
''
,
utm_campaign
:
''
,
utm_content
:
''
,
utm_term
:
''
,
}
}
if
(
utm
.
utm_source
||
utm
.
utm_medium
||
utm
.
utm_campaign
||
utm
.
utm_content
||
utm
.
utm_term
)
operationUtm
({
url
:
'/operation/utm'
,
body
:
utm
})
}
const
fetchPlan
=
async
()
=>
{
const
data
=
await
fetchCurrentPlanInfo
()
const
enabled
=
data
.
billing
.
enabled
...
...
@@ -124,7 +107,6 @@ export const ProviderContextProvider = ({
setEnableReplaceWebAppLogo
(
data
.
can_replace_logo
)
if
(
enabled
)
{
setPlan
(
parseCurrentPlan
(
data
))
handleOperateUtm
()
setIsFetchedPlan
(
true
)
}
}
...
...
web/models/common.ts
View file @
d3d61723
...
...
@@ -251,11 +251,3 @@ export type ModerationService = (
text
:
string
}
)
=>
Promise
<
ModerateResponse
>
export
type
Utm
=
{
utm_source
?:
string
utm_medium
?:
string
utm_campaign
?:
string
utm_term
?:
string
utm_content
?:
string
}
web/service/common.ts
View file @
d3d61723
...
...
@@ -20,7 +20,6 @@ import type {
ProviderAzureToken
,
SetupStatusResponse
,
UserProfileOriginResponse
,
Utm
,
}
from
'@/models/common'
import
type
{
UpdateOpenAIKeyResponse
,
...
...
@@ -263,7 +262,3 @@ type RetrievalMethodsRes = {
export
const
fetchSupportRetrievalMethods
:
Fetcher
<
RetrievalMethodsRes
,
string
>
=
(
url
)
=>
{
return
get
<
RetrievalMethodsRes
>
(
url
)
}
export
const
operationUtm
:
Fetcher
<
CommonResponse
,
{
url
:
string
;
body
:
Utm
}
>
=
({
url
,
body
})
=>
{
return
post
(
url
,
{
body
})
as
Promise
<
CommonResponse
>
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment