mirror of
https://github.com/sqlchat/sqlchat.git
synced 2025-07-24 07:18:18 +08:00
chore: add privacy policy
This commit is contained in:
@ -34,11 +34,7 @@ SQL Chat is built by [Next.js](https://nextjs.org/), it supports the following d
|
||||
|
||||
## Data Privacy
|
||||
|
||||
- All database connection configs are stored locally in your browser. You can also visit settings to clear the data.
|
||||
|
||||
- Only the database schema will be sent to the OpenAI API. No table data will be sent there.
|
||||
|
||||
- If you use [sqlchat.ai](https://sqlchat.ai), it will record the anonymised conversations.
|
||||
See [SQL Chat Privacy Policy](https://sqlchat.ai/privacy).
|
||||
|
||||
## IP Whitelisting
|
||||
|
||||
|
46
public/privacy.md
Normal file
46
public/privacy.md
Normal file
@ -0,0 +1,46 @@
|
||||
# SQL Chat Privacy Policy
|
||||
|
||||
We respect your privacy and are committed to protecting your personal information. This Privacy Policy explains how we collect, use, and disclose your personal information when you use our application that calls LLM provider's API.
|
||||
|
||||
## Collection of Application Data
|
||||
|
||||
* All database connection configs are stored locally in your browser. You can also visit settings to clear the data.
|
||||
* We send the database schema to the LLM provider. No table data will be sent there.
|
||||
* We collect the conversation message to improve the product.
|
||||
|
||||
## Collection of Personal Information
|
||||
|
||||
We may collect certain personal information from you when you use our application, such as your name and email address. We collect this information in order to communicate with you about our services and to provide you with technical support.
|
||||
|
||||
## Use of Personal Information
|
||||
|
||||
We may use your personal information to:
|
||||
|
||||
* Communicate with you about our services
|
||||
* Provide you with technical support
|
||||
* Improve our application and services
|
||||
* Comply with legal obligations
|
||||
|
||||
## Disclosure of Personal Information
|
||||
|
||||
We do not sell, trade, or otherwise transfer your personal information to third parties. However, we may disclose your personal information in the following circumstances:
|
||||
|
||||
* To our service providers who assist us in providing our services to you
|
||||
* To comply with legal obligations or to protect our rights or the rights of others
|
||||
|
||||
## Security of Personal Information
|
||||
|
||||
We take reasonable measures to protect your personal information from unauthorized access, disclosure, or destruction. However, no method of transmission over the internet or electronic storage is completely secure, and we cannot guarantee absolute security.
|
||||
|
||||
|
||||
## Changes to this Privacy Policy
|
||||
|
||||
We may update this Privacy Policy from time to time by posting a new versionon our website. We encourage you to review this Privacy Policy periodically for any changes. Your continued use of our application and services after any modifications to this Privacy Policy will constitute your acceptance of such modifications.
|
||||
|
||||
For more information about our privacy and data protection practices, including how to exercise your privacy rights, please visit the [Bytebase Privacy Policy](https://bytebase.com/privacy).
|
||||
|
||||
## Contact Us
|
||||
|
||||
Please contact us at support@bytebase.com if you have questions about this Privacy Policy.
|
||||
|
||||
*Last Updated: May 21, 2023*
|
33
src/components/MarkdownRenderer.tsx
Normal file
33
src/components/MarkdownRenderer.tsx
Normal file
@ -0,0 +1,33 @@
|
||||
import React, { useState, useEffect } from "react";
|
||||
import ReactMarkdown from "react-markdown";
|
||||
|
||||
interface MarkdownRendererProps {
|
||||
url: string;
|
||||
}
|
||||
|
||||
function MarkdownRenderer(props: MarkdownRendererProps) {
|
||||
const [markdown, setMarkdown] = useState<string>("");
|
||||
|
||||
useEffect(() => {
|
||||
const fetchData = async () => {
|
||||
const response = await fetch(props.url);
|
||||
const data = await response.text();
|
||||
setMarkdown(data);
|
||||
};
|
||||
fetchData();
|
||||
}, [props.url]);
|
||||
|
||||
return (
|
||||
<ReactMarkdown
|
||||
className="w-auto max-w-full px-4 py-2 prose prose-neutral"
|
||||
components={{
|
||||
p: ({ children }) => <p style={{ color: "black" }}>{children}</p>,
|
||||
li: ({ children }) => <li style={{ color: "black" }}>{children}</li>,
|
||||
}}
|
||||
>
|
||||
{markdown}
|
||||
</ReactMarkdown>
|
||||
);
|
||||
}
|
||||
|
||||
export default MarkdownRenderer;
|
@ -61,6 +61,14 @@ const SettingView = () => {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="w-full border border-gray-200 dark:border-zinc-700 p-4 rounded-lg space-y-2">
|
||||
<div className="w-full flex flex-row justify-between items-center gap-2">
|
||||
<a href={"privacy"} target="_blank">
|
||||
Privacy
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="w-full border border-red-200 dark:border-zinc-700 p-4 rounded-lg">
|
||||
<div className="w-full flex flex-row justify-between items-center gap-2">
|
||||
<span>{t("setting.data.clear-all-data")}</span>
|
||||
|
@ -104,7 +104,8 @@ const handler = async (req: NextRequest) => {
|
||||
frequency_penalty: model.frequency_penalty,
|
||||
presence_penalty: model.presence_penalty,
|
||||
stream: true,
|
||||
// Send end-user ID to help OpenAI monitor and detect abuse.
|
||||
// Send end-user IP to help OpenAI monitor and detect abuse.
|
||||
// It's intentionally not using email to avoid leaking user's email to OpenAI.
|
||||
user: req.ip,
|
||||
}),
|
||||
});
|
||||
|
8
src/pages/privacy/index.tsx
Normal file
8
src/pages/privacy/index.tsx
Normal file
@ -0,0 +1,8 @@
|
||||
import MarkdownRenderer from "@/components/MarkdownRenderer";
|
||||
import { NextPage } from "next";
|
||||
|
||||
const PrivacyPage: NextPage = () => {
|
||||
return <MarkdownRenderer url="/privacy.md" />;
|
||||
};
|
||||
|
||||
export default PrivacyPage;
|
Reference in New Issue
Block a user