feat(analytics): retire Rybbit and add SEO/GEO discovery tracking
Document Umami as the sole analytics platform, remove Rybbit proxy and tracker code, and classify public page traffic with discovery_channel for adm SEO/GEO dashboards. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+1
-24
@@ -17,7 +17,6 @@ import {
|
||||
resolveProductAnalyticsConfig,
|
||||
sendMindSpaceAnalyticsEvent,
|
||||
} from './mindspace-analytics.mjs';
|
||||
import { resolveMindSpaceRybbitConfig } from './mindspace-rybbit.mjs';
|
||||
import { startWorkspaceAssetSyncWatcher } from './mindspace-workspace-sync.mjs';
|
||||
import { attachRequestId, sendData, sendError } from './api-response.mjs';
|
||||
import { attachPortalAgentJobRoutes } from './server/portal-agent-job-routes.mjs';
|
||||
@@ -330,7 +329,6 @@ let authPool = null;
|
||||
let pageDataService = null;
|
||||
let pageDataPublicService = null;
|
||||
let mindSpaceAnalyticsConfig = resolveMindSpaceAnalyticsConfig();
|
||||
let mindSpaceRybbitConfig = resolveMindSpaceRybbitConfig();
|
||||
|
||||
async function bootstrapUserAuth() {
|
||||
try {
|
||||
@@ -362,11 +360,6 @@ async function bootstrapUserAuth() {
|
||||
mindSpaceAnalyticsConfig,
|
||||
domainServices.mindSpaceAnalyticsConfig,
|
||||
);
|
||||
Object.assign(
|
||||
mindSpaceRybbitConfig,
|
||||
domainServices.mindSpaceRybbitConfig ??
|
||||
mindSpaceRybbitConfig,
|
||||
);
|
||||
scheduleService = domainServices.scheduleService;
|
||||
scheduledTaskService = domainServices.scheduledTaskService;
|
||||
pageDataService = domainServices.pageDataService;
|
||||
@@ -549,7 +542,6 @@ async function bootstrapUserAuth() {
|
||||
systemDisclosurePolicyService,
|
||||
sessionSnapshotService,
|
||||
mindSpaceAnalyticsConfig,
|
||||
mindSpaceRybbitConfig,
|
||||
subscriptionService,
|
||||
apiTarget: API_TARGET,
|
||||
apiSecret: API_SECRET,
|
||||
@@ -1420,7 +1412,6 @@ attachPortalSessionRoutes(api, {
|
||||
mindSpacePublicFinish,
|
||||
getMemoryV2: () => memoryV2,
|
||||
getMindSpaceAnalyticsConfig: () => mindSpaceAnalyticsConfig,
|
||||
getMindSpaceRybbitConfig: () => mindSpaceRybbitConfig,
|
||||
ownsAgentSession,
|
||||
unregisterAgentSessionForUser,
|
||||
beginSessionPageDelivery,
|
||||
@@ -1504,26 +1495,12 @@ app.use('/analytics', createProxyMiddleware({
|
||||
secure: false,
|
||||
pathRewrite: { [`^${mindSpaceAnalyticsConfig.hostPath}`]: '' },
|
||||
}));
|
||||
app.use('/rybbit', createProxyMiddleware({
|
||||
target: 'https://rybbit.tkmind.cn',
|
||||
router: () =>
|
||||
mindSpaceRybbitConfig.rybbitUrl ||
|
||||
process.env.MEMIND_RYBBIT_URL ||
|
||||
process.env.RYBBIT_URL ||
|
||||
'https://rybbit.tkmind.cn',
|
||||
changeOrigin: true,
|
||||
secure: true,
|
||||
// Express strips the /rybbit mount. Rybbit serves trackers under /api/*.
|
||||
pathRewrite: { '^/': '/api/' },
|
||||
}));
|
||||
const { serveUserPublishFile } =
|
||||
createPortalWorkspacePublicationDelivery({
|
||||
internalAgentSecret:
|
||||
INTERNAL_AGENT_SECRET,
|
||||
analyticsConfig:
|
||||
mindSpaceAnalyticsConfig,
|
||||
rybbitConfig:
|
||||
mindSpaceRybbitConfig,
|
||||
getAuthPool: () => authPool,
|
||||
getUserAuth: () => userAuth,
|
||||
getMindSpacePages: () => mindSpacePages,
|
||||
@@ -1550,7 +1527,7 @@ const sendPublishedPage =
|
||||
registerLongImageArtifact:
|
||||
registerPublishedLongImageArtifactForConversation,
|
||||
analyticsConfig: mindSpaceAnalyticsConfig,
|
||||
rybbitConfig: mindSpaceRybbitConfig,
|
||||
analyticsConfig: mindSpaceAnalyticsConfig,
|
||||
getAuthPool: () => authPool,
|
||||
getUserAuth: () => userAuth,
|
||||
getMindSpacePages: () => mindSpacePages,
|
||||
|
||||
Reference in New Issue
Block a user