AI를 위한 기술 가이드 – 전체 프로젝트 복구 (MyZubster)
요약
AI가 프로젝트의 전체 맥락을 이해하고 기술 지원을 지속할 수 있도록 설계된 기술 가이드입니다. MongoDB 데이터 모델과 핵심 서비스 구조를 AI의 지속적 메모리(persistent memory)로 활용하는 방법을 다룹니다.
핵심 포인트
- AI가 프로젝트 아키텍처를 이해하고 작업을 재개할 수 있는 가이드 제공
- MongoDB를 활용한 사용자, 토큰, 주문, 에스크로 등 데이터 구조 정의
- AI를 내부 검색 엔진 및 지속적 메모리로 활용하는 전략 제시
🤖 AI를 위한 기술 가이드 – 전체 프로젝트 복구 (MyZubster)
이 가이드는 인공지능 (AI)이 MyZubster 프로젝트의 어느 지점에서든 전체 프로젝트를 읽고, 이해하고, 재개하며, 정확한 기술 지원을 제공할 수 있도록 설계되었습니다.
📌 이 가이드의 목적
AI는 다음을 위해 이 가이드를 내부 검색 엔진 및 지속적 메모리 (persistent memory)로 사용해야 합니다:
전체 시스템 아키텍처 (system architecture)를 이해합니다.
중단된 지점부터 작업을 재개합니다.
...
🏗️ 1. 시스템 개요 (데이터 구조)
MongoDB 모델 (Backend)
javascript
// models/User.js
{
username: String,
email: String,
password: String (bcrypt),
reputationScore: Number,
completedTrades: Number,
rating: Number,
role: ['user', 'admin', 'issuer']
}
// models/Token.js
{
name: String,
symbol: String (unique),
totalSupply: Number,
assetValue: Number,
tokenPrice: Number,
assetType: ['realestate', 'equity', 'art', 'commodity', 'debt', 'revenue'],
issuer: ObjectId(User),
status: ['draft', 'active', 'closed']
}
// models/TokenHolding.js
{
user: ObjectId(User),
token: ObjectId(Token),
amount: Number,
lockedAmount: Number
}
// models/OrderBook.js
{
token: ObjectId(Token),
seller: ObjectId(User),
amount: Number,
price: Number,
totalPrice: Number,
status: ['open', 'filled', 'cancelled', 'expired'],
moneroTxid: String
}
// models/MoneroTransaction.js
{
orderId: ObjectId(OrderBook),
buyerId: ObjectId(User),
subaddress: String,
amount: Number,
amountPaid: Number,
moneroTxid: String,
status: ['pending', 'confirmed', 'expired', 'failed'],
confirmations: Number
}
// models/Escrow.js
{
orderId: ObjectId(OrderBook),
buyerId: ObjectId(User),
sellerId: ObjectId(User),
amount: Number,
currency: ['XMR', 'token'],
status: ['pending', 'held', 'released', 'disputed', 'refunded', 'escalated'],
aiDecision: Object,
expiresAt: Date
}
// models/NFT.js (Tari)
{
tokenId: String,
name: String,
description: String,
imageUrl: String,
owner: ObjectId(User),
value: Number,
metadata: Object,
transferHistory: Array
}
⚙️ 2. 핵심 서비스 (Core Services)
2.1 – Monero 서비스 (moneroService.js)
javascript
const MONERO_RPC_URL = 'http://localhost:18083/json_rpc';
async function createPayment(orderId, buyerId, amount) {
const subaddress = await createSubaddress(0, Order ${orderId});
const transaction = new MoneroTransaction({
orderId, buyerId, subaddress, amount, status: 'pending'
});
await transaction.save();
return { transactionId: transaction._id, address: subaddress };
}
async function checkPayment(transactionId) {
const transfers = await rpcRequest('get_transfers', { in: true });
// 일치하는 거래 찾기
}
2.2 – 에스크로 서비스 (disputeService.js)
javascript
async function resolveDisputeWithAI(escrowId) {
const escrow = await Escrow.findById(escrowId)
.populate('buyerId', 'username reputationScore')
.populate('sellerId', 'username reputationScore');
const prompt = You are a mediator...;
const decision = await deepseekService.askDeepSeek(prompt);
// 결정 적용
}
2.3 – Tari 서비스 (tariService.js)
javascript
const TARI_WALLET_RPC = 'http://localhost:12820/json_rpc';
async function mintNFT(name, description, owner, metadata) {
return tariWalletRequest('mint_nft', { name, description, owner, metadata });
}
async function createEscrow(amount, buyer, seller, arbiter) {
return tariWalletRequest('create_multisig_escrow', {
amount, buyer, seller, arbiter, timeout: 604800
});
}
🌐 3. API 엔드포인트 (API Endpoints) 요약
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register | 사용자 등록 (Register user) |
| POST | /api/auth/login | 로그인 (Login (JWT)) |
| POST | /api/tokens | 토큰 생성 (Create token) |
| GET | /api/tokens/holdings | 사용자 보유 자산 (User holdings) |
| POST | /api/marketplace/sell | 판매 주문 생성 (Create sell order) |
| POST | /api/marketplace/buy/:id | 구매 주문 (Buy order) |
| GET | /api/marketplace/orders/:id | 주문 목록 조회 (List orders) |
| POST | /api/payments | Monero 결제 생성 (Create Monero payment) |
| GET | /api/payments/:id | 결제 상태 (Payment status) |
| POST | /api/escrow | 에스크로 생성 (Create escrow) |
| POST | /api/escrow/:id/dispute | 분쟁 제기 (Open dispute) |
| POST | /api/tari/nft/mint | Tari 상에서 NFT 민팅 (Mint NFT on Tari) |
| POST | /api/tari/escrow | Tari 에스크로 생성 (Create Tari escrow) |
| POST | /api/ai/ask | DeepSeek AI 질의 (Query DeepSeek AI) |
| GET | /api/health | 상태 확인 (Health check) |
🖥️ 4. 시스템 명령어 (System Commands) (참조용)
4.1 – 게이트웨이 (Gateway)
systemctl status myzubster-gateway
systemctl restart myzubster-gateway
journalctl -u myzubster-gateway -n 50 --no-pager
4.2 – 프론트엔드 (Frontend) (빌드 및 배포)
cd ~/myzubster-frontend
npm run build
cp -r dist/* /var/www/myzubster-frontend/
chown -R www-data:www-data /var/www/myzubster-frontend
systemctl reload nginx
4.3 – Nginx
nginx -t
systemctl reload nginx
tail -20 /var/log/nginx/error.log
4.4 – Monero
# 지갑 RPC (Wallet RPC)
cd ~/monero
./monero-wallet-rpc --rpc-bind-port 18083 --daemon-address node.moneroworld.com:38081 --wallet-file ./myzubster_wallet --password 'Myzubster2026@!!' --disable-rpc-login --trusted-daemon --stagenet
# RPC 테스트 (Test RPC)
curl -X POST [http://localhost:18083/json_rpc](http://localhost:18083/json_rpc) -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":"0","method":"get_balance"}'
4.5 – Tari
# 노드 (Node)
nohup ~/tari/target/release/minotari_node --network testnet --base-path ~/tari-data > ~/tari_node.log 2>&1 &
# 지갑 (Wallet)
nohup ~/tari/target/release/minotari_console_wallet --network testnet --password myzubster --wallet-file ~/tari-wallet > ~/tari_wallet.log 2>&1 &
# RPC 테스트 (Test RPC)
curl -X POST http://localhost:12820/json_rpc -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":"0","method":"get_balance"}'
4.6 – Security Bot (Kali Linux)
python
/root/security_bot.py
def scan_gateway():
return subprocess.run(['nmap', '-p', '3000,80,443', 'localhost'], capture_output=True, text=True).stdout
def ask_deepseek(prompt):
resp = requests.post(f"{MYZUBSTER_API}/ai/ask", json={"prompt": prompt}, headers={'Authorization': f'Bearer {TOKEN}'})
return resp.json().get('response')
🔧 5. Troubleshooting (Quick Diagnostics)
5.1 – Gateway not responding
bash
curl http://localhost:3000/api/health
journalctl -u myzubster-gateway -n 30 --no-pager
cd ~/MyZubsterGateway && node server.js
5.2 – Frontend not loading
bash
ls -la /var/www/myzubster-frontend/
curl -I https://myzubster.com
tail -20 /var/log/nginx/error.log
5.3 – Monero RPC not responding
bash
ps aux | grep monero-wallet-rpc
curl -X POST http://localhost:18083/json_rpc -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":"0","method":"get_balance"}'
5.4 – Tari not responding
bash
ps aux | grep minotari
curl -X POST http://localhost:12820/json_rpc -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":"0","method":"get_balance"}'
5.5 – Ports in use
bash
netstat -tlnp | grep -E ":80|:443|:3000|:18083|:12820"
lsof -i :80
📊 6. 로그 파일 (위치)
Service 로그 파일
Gateway journalctl -u myzubster-gateway
Nginx /var/log/nginx/error.log, /var/log/nginx/access.log
Monero Node ~/monero/monerod.log (또는 journalctl -u monerod)
Monero Wallet RPC ~/monero/monero-wallet-rpc.log
Tari Node ~/tari_node.log
Tari Wallet ~/tari_wallet.log
Security Bot /var/log/security_bot.log
MongoDB /var/log/mongodb/mongod.log
🧩 7. 프론트엔드 구조 (React/Vite)
text
src/
├── pages/
│ ├── Login.jsx
│ ├── Register.jsx
│ ├── Dashboard.jsx
│ └── Marketplace.jsx
├── components/
│ └── ProtectedRoute.jsx
├── contexts/
│ └── AuthContext.jsx
├── utils/
│ └── axiosConfig.js
└── App.jsx
🔐 8. 환경 변수 (.env)
env
PORT=3000
MONGODB_URI=mongodb://localhost:27017/myzubster
JWT_SECRET=supersecretkey
MONERO_WALLET_RPC_URL=http://localhost:18083/json_rpc
MONERO_DAEMON_RPC_URL=http://localhost:18081/json_rpc
MONERO_NETWORK=stagenet
TARI_RPC_URL=http://localhost:12810/json_rpc
TARI_WALLET_RPC=http://localhost:12820/json_rpc
TARI_NETWORK=testnet
FRONTEND_URL=https://myzubster.com
🚀 9. 로드맵 (다음 단계)
Priority Task Status
High Test marketplace from browser 🔴 To do
High Test Monero payment (end-to-end) 🔴 To do
High Verify security bot (cron job) 🔴 To do
Medium Migrate Tor onion service to new VPS 🟡 In progress
Medium Integrate NFTs into marketplace 🟡 To do
Low Admin Dashboard 🟢 Future
💬 10. AI 응답 형식
이 가이드에 따라 응답할 때, AI는 다음을 수행해야 합니다:
Reference the section.
Provide the exact command/code.
...
Example AI response:
text
📌 Section 4.1 – Gateway Management
💻 Command: systemctl restart myzubster-gateway
🔧 다음 단계: 재시작 후, 다음 명령어를 실행하세요:
curl http://localhost:3000/api/health
🤔 질문: 마켓플레이스 (marketplace) 테스트를 진행하시겠습니까?
이 가이드는 살아있는 문서 (living document)입니다. 프로젝트가 발전함에 따라 AI는 새로운 발견 사항, 명령어 및 설정 내용을 바탕으로 이 문서를 업데이트해야 합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기