π¦
turafic
No description available
0 installs
Trust: 30 β Low
Other
Ask AI about turafic
Powered by Claude Β· Grounded in docs
I know everything about turafic. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Loading tools...
Reviews
Documentation
Turafic Admin Dashboard
λ€μ΄λ²/μΏ ν‘ μΌνλͺ° μμ μ‘°μμ μν Android λ΄ λ€νΈμν¬ κ΄λ¦¬ λμ보λ
λ²μ : v0.2.0-integrated (AdPang ν΅ν©)
π― μ£Όμ κΈ°λ₯
- μ€μκ° λ΄ μν λͺ¨λν°λ§: 22λμ λ΄ (νΈλν½ λ΄ 18λ + μμ μ²΄ν¬ λ΄ 4λ) μν μ€μκ° νμΈ
- μΊ νμΈ κ΄λ¦¬: μμ μμΉ μΊ νμΈ μμ±, μμ/μ€μ§, λͺ¨λν°λ§
- A/B ν μ€νΈ μλν: 12κ° λ³μ μ‘°ν© μλ μμ±, ν μ€νΈ, νκ° (μ μ μκ³ λ¦¬μ¦ κΈ°λ°)
- μμ λ³λ μ΄λ ₯: μκ³μ΄ κ·Έλνλ‘ μμ μΆμ΄ λΆμ
- μ곡ν ν΅ν©: AdPang νλ‘μ νΈμ Frida μ€ν¬λ¦½νΈ λ° λ³μ λ³ν μμ€ν
ποΈ κΈ°μ μ€ν
Frontend
- React 19 + TypeScript
- Tailwind CSS 4 (μ€νμΌλ§)
- shadcn/ui (UI μ»΄ν¬λνΈ)
- tRPC (νμ μμ API ν΅μ )
- Wouter (λΌμ°ν )
Backend
- Express 4 + TypeScript
- tRPC 11 (API λΌμ°ν°)
- Drizzle ORM (λ°μ΄ν°λ² μ΄μ€ ORM)
- MySQL/TiDB (λ°μ΄ν°λ² μ΄μ€)
π μμ€ν μν€ν μ²
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Turafic μλ² (FastAPI) β
β - μ€μ ν΅μ μμ€ν
β
β - μμ
ν λΉ λ° μ€μΌμ€λ§ β
β - μμ λ°μ΄ν° λΆμ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββΌβββββββββββββββββββ
β β β
βββββββββΌβββββββ ββββββββββΌββββββ ββββββββββΌββββββ
β νΈλν½λ΄ κ·Έλ£Ή β β νΈλν½λ΄ κ·Έλ£Ή β β μμ체ν¬λ΄ β
β (λμ₯ 1 + β β (λμ₯ 1 + β β (4λ) β
β μ«λ³ 2) β β μ«λ³ 2) β β β
β μ΄ 6κ·Έλ£Ή β β ... β β β
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
ποΈ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§
campaigns (μΊ νμΈ)
id: μΊ νμΈ IDname: μΊ νμΈ μ΄λ¦platform: νλ«νΌ (naver, coupang)keyword: κ²μ ν€μλproductId: μ ν IDstatus: μν (active, paused, completed)
bots (λ΄)
id: λ΄ IDdeviceId: λλ°μ΄μ€ IDrole: μν (leader, follower, rank_checker)groupId: κ·Έλ£Ή IDstatus: μν (online, offline, error)
variable_combinations (λ³μ μ‘°ν©)
id: μ‘°ν© IDvariables: λ³μ JSONstatus: λ±κΈ (elite, significant, deprecated)generation: μΈλ λ²νΈperformanceScore: μ±λ₯ μ μ
rankings (μμ μ΄λ ₯)
id: μ΄λ ₯ IDcampaignId: μΊ νμΈ IDrank: μμreliabilityScore: μ λ’°λ μ μisSignificant: μ μλ―Έν λ³ν μ¬λΆ
π μμνκΈ°
1. νκ²½ λ³μ μ€μ
cp .env.example .env
νμ νκ²½ λ³μ:
DATABASE_URL: MySQL/TiDB μ°κ²° λ¬Έμμ΄JWT_SECRET: μΈμ μΏ ν€ μλͺ λΉλ°ν€VITE_APP_TITLE: μ± μ λͺ©VITE_APP_LOGO: μ± λ‘κ³ URL
2. μμ‘΄μ± μ€μΉ
pnpm install
3. λ°μ΄ν°λ² μ΄μ€ λ§μ΄κ·Έλ μ΄μ
pnpm db:push
4. μν λ°μ΄ν° μμ±
npx tsx scripts/seed.mjs
5. κ°λ° μλ² μ€ν
pnpm dev
λΈλΌμ°μ μμ http://localhost:5173 μ μ
π νλ‘μ νΈ κ΅¬μ‘°
turafic-dashboard/
βββ client/ # νλ‘ νΈμλ
β βββ src/
β β βββ pages/ # νμ΄μ§ μ»΄ν¬λνΈ
β β β βββ Home.tsx # ν λμ보λ
β β β βββ Campaigns.tsx
β β β βββ Bots.tsx
β β β βββ ABTesting.tsx
β β β βββ Rankings.tsx
β β βββ components/ # μ¬μ¬μ© μ»΄ν¬λνΈ
β β β βββ DashboardLayout.tsx
β β β βββ ui/ # shadcn/ui μ»΄ν¬λνΈ
β β βββ lib/
β β βββ trpc.ts # tRPC ν΄λΌμ΄μΈνΈ
βββ server/ # λ°±μλ
β βββ routers.ts # tRPC λΌμ°ν°
β βββ db.ts # λ°μ΄ν°λ² μ΄μ€ ν¬νΌ
β βββ _core/ # μ½μ΄ μμ€ν
βββ drizzle/ # λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§
β βββ schema.ts
βββ scripts/ # μ νΈλ¦¬ν° μ€ν¬λ¦½νΈ
βββ seed.mjs # μν λ°μ΄ν° μμ±
π¨ νμ΄μ§ ꡬμ±
| κ²½λ‘ | νμ΄μ§ | μ€λͺ |
|---|---|---|
/ | ν λμ보λ | μ 체 ν΅κ³, λ΄ μν μμ½, μ΅κ·Ό νλ |
/campaigns | μΊ νμΈ κ΄λ¦¬ | μΊ νμΈ λͺ©λ‘, μμ±, μμ/μ€μ§ |
/bots | λ΄ λ€νΈμν¬ | λ΄ μν λͺ¨λν°λ§, κ·Έλ£Ήλ³ λΆλ₯ |
/ab-testing | A/B ν μ€νΈ | λ³μ μ‘°ν© λͺ©λ‘, μ±λ₯ κ·Έλν |
/rankings | μμ λ³λ μ΄λ ₯ | μκ³μ΄ κ·Έλν, μ΄λ²€νΈ λͺ©λ‘ |
𧬠A/B ν μ€νΈ μλν
λ³μ μμ€ν (12κ° λ³μ)
// κΈ°μ‘΄ Turafic λ³μ (10κ°)
1. user_agent: ['UA58', 'UA67', 'UA71']
2. cw_mode: ['CWν΄μ ', 'CWμ μ§']
3. entry_point: ['μΌνDI', 'κ΄κ³ DI', 'ν΅ν©κ²μ']
4. cookie_strategy: ['λ‘κ·ΈμΈμΏ ν€', 'λΉλ‘κ·ΈμΈμΏ ν€']
5. image_loading: ['μ΄λ―Έμ§ν¨μ€', 'μ΄λ―Έμ§λ‘λ']
6. input_method: ['볡λΆ', 'νμ΄ν']
7. random_clicks: [0, 3, 6]
8. more_button: ['λ보기ν¨μ€', 'λ보기ν΄λ¦']
9. x_with_header: ['x-withμΌμ±', 'x-withκ°€λμ']
10. delay_mode: ['λλ μ΄κ°μ', 'λλ μ΄μ μ']
// AdPang ν΅ν© μ κ· λ³μ (2κ°)
11. work_type: ['κ²μλ§', 'κ²μ+ν΄λ¦', 'κ²μ+ν΄λ¦+체λ₯', '리뷰쑰ν']
12. sec_fetch_site_mode: ['same-origin', 'same-site', 'cross-site', 'none']
μ μ μκ³ λ¦¬μ¦ κΈ°λ° λ³μ μ΅μ ν
- μ΄κΈ° μΈλ μμ±: L18 μ§κ΅λ°°μ΄νλ‘ 50κ° μ‘°ν© μμ±
- ν μ€νΈ μ€ν: κ° μ‘°ν©λΉ 10ν ν μ€νΈ
- μ±λ₯ νκ°: Performance Score κ³μ° (μμ, μ±κ³΅λ₯ , μΊ‘μ² ννΌμ¨)
- λ±κΈ λΆλ₯: μλ¦¬νΈ (μμ 10%), μ μλ―Έ (10-50%), νκΈ° (νμ 50%)
- μ§ν: κ΅μ°¨(Crossover) + λ³μ΄(Mutation)λ‘ μ μ‘°ν© μμ±
- λ°λ³΅: λ§€μΌ μμ μλ μ€ν
Performance Score κ³μ°μ
Score = (0.5 Γ μμμ μ) + (0.3 Γ μ±κ³΅λ₯ ) + (0.2 Γ μΊ‘μ²ννΌμ¨)
π AdPang ν΅ν© (v0.2.0)
ν΅ν© λ΄μ©
Phase 1: κΈ°λ° ν΅ν©
- AdPangμ μ곡ν λ¬Έμ (
docs/prd/,docs/reverse_engineering/) - Frida ννΉ μ€ν¬λ¦½νΈ 6κ° (
src/frida/)
Phase 3: λ³μ μμ€ν ν΅ν©
- λ³μ κ°μ νμ₯: 10κ° β 12κ°
- AdPang β Turafic λ³μ λ³ν μμ€ν
(
server/services/variableConverter.ts)
μ¬μ© μμ
import { convertAdPangToTurafic } from './server/services/variableConverter';
// AdPang λ³μ β Turafic λ³μ λ³ν
const adpangVars = {
ua_change: true,
cookie_home_mode: 'login',
shop_home: true,
work_type: 'κ²μ+ν΄λ¦+체λ₯',
// ...
};
const turaficVars = convertAdPangToTurafic(adpangVars);
κ΄λ ¨ λ¬Έμ
π κ°λ° κ°μ΄λ
tRPC API μΆκ°
server/routers.tsμ λΌμ°ν° μΆκ°- νλ‘ νΈμλμμ
trpc.*.useQuery/useMutationμ¬μ©
// server/routers.ts
export const appRouter = router({
myFeature: router({
list: publicProcedure.query(async () => {
// λ°μ΄ν° μ‘°ν
return [];
}),
}),
});
// client/src/pages/MyPage.tsx
const { data } = trpc.myFeature.list.useQuery();
μ νμ΄μ§ μΆκ°
client/src/pages/MyPage.tsxμμ±client/src/App.tsxμ λΌμ°νΈ λ±λ‘client/src/components/DashboardLayout.tsxμ λ©λ΄ μΆκ°
π λΌμ΄μ μ€
MIT License
π₯ κΈ°μ¬μ
- Manus AI Agent
π λ¬Έμ
GitHub Issues: https://github.com/mim1012/turafic/issues
