Generuj przewodniki onboardingowe, mapy architektury i metryki na żywo. Błyskawicznie zamień legacy code w przejrzystą bazę wiedzy.
Dokumentuj projekty zbudowane w
export async function processSub(uId: string, plan: string) {
const user = await db.user.findById(uId);
if (!user.isActive) throw new Error("403");
if (user.sub === plan) return null;
const price = PRICING[plan];
// Charge the user
await stripe.charges.create({
amount: price * 100,
currency: 'usd',
customer: user.stripeId
});
await db.user.update(uId, { sub: plan, status: 'active' });
await email.sendWelcome(user.email, plan);
return true;
}/**
* Upgrades user subscription and handles payment processing.
*
* @description
* 1. Verifies user status (must be active).
* 2. Deduplicates requests (returns null if already on plan).
* 3. Charges card via Stripe and updates local DB.
*
* @param {string} uId - Internal user UUID.
* @param {string} plan - Target plan ID (e.g., 'PRO_YEARLY').
* @throws {Error} "403" if user is suspended/inactive.
* @returns {Promise<boolean|null>} True on success, null if no change needed.
*
* @example
* try {
* await processSub("user_123", "ENTERPRISE");
* } catch (err) {
* logger.error("Payment failed", err);
* }
*/
export async function processSub(uId: string, plan: string) {
const user = await db.user.findById(uId);
if (!user.isActive) throw new Error("403"); // User suspended
if (user.sub === plan) return null; // Already subscribed
const price = PRICING[plan];
// Charge the user
await stripe.charges.create({
amount: price * 100, // Convert to cents
currency: 'usd',
customer: user.stripeId
});
// Update db and send email
await db.user.update(uId, { sub: plan, status: 'active' });
await email.sendWelcome(user.email, plan);
return true;
}Ciężką pracę wykonujemy asynchronicznie. Ty po prostu od razu otrzymujesz wynik.
Wszystko, czego potrzebujesz, aby przekształcić swój kod w jasną, aktualną dokumentację.
Integruj bezpośrednio z pipeline'em CI/CD lub uruchamiaj lokalnie jednym poleceniem.
Śledź pokrycie dokumentacją i jakość w czasie. Natychmiast identyfikuj nieudokumentowane moduły.
Nie zgadujemy. Parsujemy AST, aby dokładnie zrozumieć strukturę Twojego kodu.
Twój kod nigdy nie trenuje naszych modeli. Infrastruktura zgodna z SOC2 Type II.
Eksportuj do Markdown, PDF, Notion lub automatycznie wdrażaj jako statyczną stronę.
Śledź dług techniczny, identyfikuj ryzyka "Bus Factor" i wizualizuj złożoność kodu w czasie.
Bus Factor
1.2Krytyczne ryzyko: moduł `auth/core`
Utrzymywalność
A+Od przeglądu ogólnego po niskopoziomową manipulację bajtami. Generujemy każdy format, którego potrzebuje Twój zespół.
Wrzuć prosty plik konfiguracyjny do katalogu głównego. Parsowanie, limity tokenów i prompt engineering obsługujemy automatycznie.
{
"project": "my-awesome-saas",
"entry": ["src/**/*.ts"],
"exclude": ["**/*.spec.ts"],
"output": {
"modes": ["onboarding", "technical", "migration-guide"],
"metrics": true,
"format": "markdown",
"path": "./docs"
},
"metrics": ["complexity", "bus-factor"]
}Dla open source i projektów pobocznych
Zacznij za darmoDla profesjonalnych developerów
Przejdź na ProDla zespołów inżynierskich
Kontakt ze sprzedażą