init dialectic
This commit is contained in:
16
.env
Normal file
16
.env
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# Frontend
|
||||||
|
FRONTEND_PORT=3000
|
||||||
|
|
||||||
|
# Backend
|
||||||
|
BACKEND_PORT=8090
|
||||||
|
BACKEND_URL=http://localhost:8090
|
||||||
|
|
||||||
|
# Database
|
||||||
|
DB_PORT=3306
|
||||||
|
MYSQL_ROOT_PASSWORD=rootpassword
|
||||||
|
MYSQL_DATABASE=dialectic
|
||||||
|
MYSQL_USER=dialectic
|
||||||
|
MYSQL_PASSWORD=dialectic
|
||||||
|
|
||||||
|
# Backend internal
|
||||||
|
ENCRYPTION_KEY=BgS9_9K2UMYxiYnP-BE63UEdi7a6PHaaZ6rQZQnSx54=
|
||||||
10
.idea/.gitignore
generated
vendored
Normal file
10
.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Ignored default folder with query files
|
||||||
|
/queries/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
15
.idea/Dialectic.iml
generated
Normal file
15
.idea/Dialectic.iml
generated
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="PYTHON_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$" />
|
||||||
|
<orderEntry type="jdk" jdkName="Python 3.13" jdkType="Python SDK" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
<component name="PyDocumentationSettings">
|
||||||
|
<option name="format" value="PLAIN" />
|
||||||
|
<option name="myDocStringFormat" value="Plain" />
|
||||||
|
</component>
|
||||||
|
<component name="TestRunnerService">
|
||||||
|
<option name="PROJECT_TEST_RUNNER" value="py.test" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
17
.idea/aws.xml
generated
Normal file
17
.idea/aws.xml
generated
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="accountSettings">
|
||||||
|
<option name="activeProfile" value="profile:default" />
|
||||||
|
<option name="activeRegion" value="eu-west-2" />
|
||||||
|
<option name="recentlyUsedProfiles">
|
||||||
|
<list>
|
||||||
|
<option value="profile:default" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
<option name="recentlyUsedRegions">
|
||||||
|
<list>
|
||||||
|
<option value="eu-west-2" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
4
.idea/encodings.xml
generated
Normal file
4
.idea/encodings.xml
generated
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
|
||||||
|
</project>
|
||||||
6
.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
6
.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<settings>
|
||||||
|
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||||
|
<version value="1.0" />
|
||||||
|
</settings>
|
||||||
|
</component>
|
||||||
7
.idea/misc.xml
generated
Normal file
7
.idea/misc.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Black">
|
||||||
|
<option name="sdkName" value="Python 3.13" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.13" project-jdk-type="Python SDK" />
|
||||||
|
</project>
|
||||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/Dialectic.iml" filepath="$PROJECT_DIR$/.idea/Dialectic.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
8
.idea/vcs.xml
generated
Normal file
8
.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
<mapping directory="$PROJECT_DIR$/Dialectic.Backend" vcs="Git" />
|
||||||
|
<mapping directory="$PROJECT_DIR$/Dialectic.Frontend" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
1
Dialectic.Backend
Submodule
1
Dialectic.Backend
Submodule
Submodule Dialectic.Backend added at 83c4461d29
1
Dialectic.Frontend
Submodule
1
Dialectic.Frontend
Submodule
Submodule Dialectic.Frontend added at 16630b6999
51
docker-compose.yaml
Normal file
51
docker-compose.yaml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
services:
|
||||||
|
frontend:
|
||||||
|
build:
|
||||||
|
context: ./Dialectic.Frontend
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
ports:
|
||||||
|
- "${FRONTEND_PORT:-3000}:3000"
|
||||||
|
environment:
|
||||||
|
- NODE_ENV=development
|
||||||
|
- REACT_APP_BACKEND_HOST=${BACKEND_URL:-http://localhost:8000}
|
||||||
|
stdin_open: true
|
||||||
|
tty: true
|
||||||
|
|
||||||
|
backend:
|
||||||
|
build:
|
||||||
|
context: ./Dialectic.Backend
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
ports:
|
||||||
|
- "${BACKEND_PORT:-8000}:8000"
|
||||||
|
volumes:
|
||||||
|
- dialectic_config:/app/config
|
||||||
|
environment:
|
||||||
|
- ENV_MODE=prod
|
||||||
|
- ENCRYPTION_KEY=${ENCRYPTION_KEY:-BgS9_9K2UMYxiYnP-BE63UEdi7a6PHaaZ6rQZQnSx54=}
|
||||||
|
- CONFIG_PATH=/app/config/dialectic.yaml
|
||||||
|
depends_on:
|
||||||
|
db:
|
||||||
|
condition: service_healthy
|
||||||
|
command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: mysql:8.0
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-rootpassword}
|
||||||
|
MYSQL_DATABASE: ${MYSQL_DATABASE:-dialectic}
|
||||||
|
MYSQL_USER: ${MYSQL_USER:-dialectic}
|
||||||
|
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-dialectic}
|
||||||
|
ports:
|
||||||
|
- "${DB_PORT:-3306}:3306"
|
||||||
|
volumes:
|
||||||
|
- mysql_data:/var/lib/mysql
|
||||||
|
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
|
||||||
|
timeout: 20s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
mysql_data:
|
||||||
|
dialectic_config:
|
||||||
47
init.sql
Normal file
47
init.sql
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
-- MySQL initialization script for Dialectic
|
||||||
|
|
||||||
|
CREATE DATABASE IF NOT EXISTS dialectic;
|
||||||
|
USE dialectic;
|
||||||
|
|
||||||
|
-- Table for storing API keys for different providers
|
||||||
|
CREATE TABLE IF NOT EXISTS api_keys (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
provider VARCHAR(50) NOT NULL UNIQUE,
|
||||||
|
api_key_encrypted TEXT NOT NULL,
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Table for storing model configurations
|
||||||
|
CREATE TABLE IF NOT EXISTS model_configs (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
provider VARCHAR(50) NOT NULL,
|
||||||
|
model_name VARCHAR(100) NOT NULL,
|
||||||
|
display_name VARCHAR(100),
|
||||||
|
is_active BOOLEAN DEFAULT TRUE,
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
|
UNIQUE KEY unique_provider_model (provider, model_name)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Insert default API key records (encrypted field will be empty initially)
|
||||||
|
INSERT IGNORE INTO api_keys (provider, api_key_encrypted) VALUES
|
||||||
|
('openai', ''),
|
||||||
|
('claude', ''),
|
||||||
|
('qwen', ''),
|
||||||
|
('deepseek', '');
|
||||||
|
|
||||||
|
-- Insert default model configurations
|
||||||
|
INSERT IGNORE INTO model_configs (provider, model_name, display_name) VALUES
|
||||||
|
('openai', 'gpt-4', 'GPT-4'),
|
||||||
|
('openai', 'gpt-3.5-turbo', 'GPT-3.5 Turbo'),
|
||||||
|
('claude', 'claude-3-opus', 'Claude 3 Opus'),
|
||||||
|
('claude', 'claude-3-sonnet', 'Claude 3 Sonnet'),
|
||||||
|
('claude', 'claude-3-haiku', 'Claude 3 Haiku'),
|
||||||
|
('qwen', 'qwen-max', 'Qwen Max'),
|
||||||
|
('qwen', 'qwen-plus', 'Qwen Plus'),
|
||||||
|
('deepseek', 'deepseek-chat', 'DeepSeek Chat'),
|
||||||
|
('deepseek', 'deepseek-coder', 'DeepSeek Coder');
|
||||||
|
|
||||||
|
-- Add evidence_library column to debate_sessions (migration for existing databases)
|
||||||
|
ALTER TABLE debate_sessions ADD COLUMN IF NOT EXISTS evidence_library TEXT NULL;
|
||||||
Reference in New Issue
Block a user