mirror of
https://github.com/yogeshojha/rengine.git
synced 2026-10-20 15:21:30 +02:00
The comment rule in CLAUDE.md is one line maximum, never narration: no multi-line blocks, no module-header explainers, no sentences that explain or justify the code to the reader. The tree had drifted a long way from it, and most of the drift is mine. Removed: 232 lines of multi-line comment blocks 203 single-line comments that argued instead of stating 154 comments joined by so/because/otherwise/rather-than 143 narrating comments in the frontend 112 test docstrings (the test name already says what it asserts) 25 test module docstrings and 25 decorative section dividers Collapsed: 324 multi-line docstrings to one factual line 271 one-line docstrings that had a justifying clause bolted on Kept: functional directives, section dividers, short field labels, alembic revision headers, and the eight FastAPI route docstrings that render in /docs. Where a fact was load-bearing it is in CLAUDE.md, which is where it belongs. 284 python tests and 34 frontend tests pass, ruff and ruff-format clean across ten packages, svelte-check 0 errors, prettier and eslint clean, app.main imports. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013dKUV96WkQQETZBMoAG98C
250 lines
7.7 KiB
Python
250 lines
7.7 KiB
Python
import uuid
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel
|
|
from sqlalchemy import Column, Text
|
|
from sqlalchemy.types import JSON
|
|
from sqlmodel import Field, SQLModel, UniqueConstraint
|
|
|
|
from shared.enums.target import TargetType
|
|
from shared.models.organization import OrganizationSummary
|
|
from shared.models.tag import TagSummary
|
|
from shared.utils.datetime import utc_now
|
|
|
|
|
|
class BountyProgram(SQLModel, table=True):
|
|
__tablename__ = "bounty_programs"
|
|
__table_args__ = (
|
|
UniqueConstraint("platform", "handle", name="uq_bounty_program_handle"),
|
|
)
|
|
|
|
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
|
|
platform: str = Field(max_length=32, index=True)
|
|
source: str = Field(default="api", max_length=16, index=True)
|
|
handle: str = Field(max_length=200, index=True)
|
|
name: str = Field(max_length=300)
|
|
url: str | None = Field(default=None, max_length=500)
|
|
profile_picture: str | None = Field(
|
|
default=None, sa_column=Column(Text, nullable=True)
|
|
)
|
|
program_state: str = Field(max_length=16, index=True)
|
|
raw_state: str | None = Field(default=None, max_length=32)
|
|
joined: bool = Field(default=False, index=True)
|
|
joined_at: datetime | None = Field(default=None)
|
|
submission_state: str = Field(max_length=16, index=True)
|
|
offers_bounties: bool = Field(default=False, index=True)
|
|
open_scope: bool | None = Field(default=None)
|
|
gold_standard_safe_harbor: bool | None = Field(default=None)
|
|
currency: str | None = Field(default=None, max_length=16)
|
|
started_accepting_at: datetime | None = Field(default=None, index=True)
|
|
bookmarked: bool = Field(default=False, index=True)
|
|
reports_for_user: int | None = Field(default=None)
|
|
earnings_for_user: float | None = Field(default=None)
|
|
min_payout: float | None = Field(default=None)
|
|
max_payout: float | None = Field(default=None)
|
|
payout_currency: str | None = Field(default=None, max_length=16)
|
|
safe_harbor: str | None = Field(default=None, max_length=32)
|
|
requires_2fa: bool | None = Field(default=None)
|
|
scopes_synced_at: datetime | None = Field(default=None)
|
|
synced_at: datetime = Field(default_factory=utc_now, index=True)
|
|
|
|
|
|
class BountyScope(SQLModel, table=True):
|
|
__tablename__ = "bounty_scopes"
|
|
__table_args__ = (
|
|
UniqueConstraint(
|
|
"program_id", "asset_type", "asset_identifier", name="uq_bounty_scope_asset"
|
|
),
|
|
)
|
|
|
|
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
|
|
program_id: uuid.UUID = Field(
|
|
foreign_key="bounty_programs.id", index=True, ondelete="CASCADE"
|
|
)
|
|
asset_type: str = Field(max_length=48, index=True)
|
|
asset_identifier: str = Field(max_length=1000)
|
|
scope_state: str = Field(max_length=16, index=True)
|
|
eligible_for_bounty: bool | None = Field(default=None)
|
|
max_severity: str | None = Field(default=None, max_length=16)
|
|
instruction: str | None = Field(default=None, sa_column=Column(Text))
|
|
reference: str | None = Field(default=None, max_length=500)
|
|
target_value: str | None = Field(default=None, max_length=500, index=True)
|
|
target_type: TargetType | None = Field(default=None)
|
|
raw: dict | None = Field(default=None, sa_column=Column(JSON, nullable=True))
|
|
synced_at: datetime = Field(default_factory=utc_now)
|
|
|
|
|
|
class BountyEventRow(SQLModel, table=True):
|
|
__tablename__ = "bounty_events"
|
|
|
|
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
|
|
platform: str = Field(max_length=32, index=True)
|
|
program_id: uuid.UUID = Field(
|
|
foreign_key="bounty_programs.id", index=True, ondelete="CASCADE"
|
|
)
|
|
handle: str = Field(max_length=200, index=True)
|
|
program_name: str = Field(max_length=300)
|
|
kind: str = Field(max_length=32, index=True)
|
|
asset_type: str | None = Field(default=None, max_length=48)
|
|
asset_identifier: str | None = Field(default=None, max_length=1000)
|
|
detail: str | None = Field(default=None, max_length=500)
|
|
created_at: datetime = Field(default_factory=utc_now, index=True)
|
|
|
|
|
|
class BountyEventRead(BaseModel):
|
|
id: uuid.UUID
|
|
platform: str
|
|
handle: str
|
|
program_name: str
|
|
kind: str
|
|
label: str = ""
|
|
description: str = ""
|
|
icon: str = "circle-help"
|
|
tone: str = "muted"
|
|
actionable: bool = False
|
|
asset_type: str | None
|
|
asset_identifier: str | None
|
|
detail: str | None
|
|
created_at: datetime
|
|
|
|
|
|
class BountyScopeRead(BaseModel):
|
|
id: uuid.UUID
|
|
asset_type: str
|
|
asset_type_label: str
|
|
asset_group: str
|
|
icon: str
|
|
asset_identifier: str
|
|
scope_state: str
|
|
eligible_for_bounty: bool | None
|
|
max_severity: str | None
|
|
instruction: str | None
|
|
target_value: str | None
|
|
target_type: str | None
|
|
importable: bool
|
|
already_target: bool = False
|
|
|
|
|
|
class BountyProgramRead(BaseModel):
|
|
id: uuid.UUID
|
|
platform: str
|
|
platform_label: str = ""
|
|
source: str = "api"
|
|
source_label: str = ""
|
|
handle: str
|
|
name: str
|
|
url: str | None
|
|
profile_picture: str | None
|
|
program_state: str
|
|
raw_state: str | None
|
|
raw_state_label: str = ""
|
|
joined: bool
|
|
joined_at: datetime | None
|
|
submission_state: str
|
|
offers_bounties: bool
|
|
open_scope: bool | None
|
|
gold_standard_safe_harbor: bool | None
|
|
currency: str | None
|
|
started_accepting_at: datetime | None
|
|
bookmarked: bool
|
|
reports_for_user: int | None
|
|
earnings_for_user: float | None
|
|
min_payout: float | None = None
|
|
max_payout: float | None = None
|
|
payout_currency: str | None = None
|
|
safe_harbor: str | None = None
|
|
requires_2fa: bool | None = None
|
|
scopes_synced_at: datetime | None
|
|
synced_at: datetime
|
|
in_scope_count: int = 0
|
|
out_of_scope_count: int = 0
|
|
importable_count: int = 0
|
|
imported_count: int = 0
|
|
|
|
|
|
class BountyProgramDetail(BountyProgramRead):
|
|
scopes: list[BountyScopeRead] = []
|
|
unreachable: dict[str, int] = {}
|
|
|
|
|
|
class BountyScopeCounts(BaseModel):
|
|
total: int
|
|
in_scope: int
|
|
out_of_scope: int
|
|
importable: int
|
|
|
|
|
|
class BountySyncResult(BaseModel):
|
|
platform: str
|
|
programs: int
|
|
created: int
|
|
updated: int
|
|
duration_ms: int
|
|
error: str | None = None
|
|
|
|
|
|
class BountyImportRequest(BaseModel):
|
|
project_id: uuid.UUID
|
|
scope_ids: list[uuid.UUID] | None = None
|
|
include_out_of_scope: bool = False
|
|
group_by_program: bool = True
|
|
# blank falls back to the program name
|
|
organization_name: str | None = None
|
|
tags: list[str] = []
|
|
|
|
|
|
class BountyImportResult(BaseModel):
|
|
created: list[str]
|
|
existing: list[str]
|
|
skipped: list[str]
|
|
organization: OrganizationSummary | None = None
|
|
tags: list[TagSummary] = []
|
|
|
|
|
|
class PlatformCount(BaseModel):
|
|
platform: str
|
|
label: str
|
|
source: str
|
|
programs: int
|
|
|
|
|
|
class BountyStatus(BaseModel):
|
|
configured: bool
|
|
platform: str
|
|
username: str | None
|
|
programs: int
|
|
private_programs: int
|
|
last_synced_at: datetime | None
|
|
sync_interval: str
|
|
next_sync_at: datetime | None = None
|
|
unseen_events: int = 0
|
|
platforms: list[PlatformCount] = []
|
|
feed_interval: str = ""
|
|
feed_synced_at: datetime | None = None
|
|
error: str | None = None
|
|
|
|
|
|
class BountySettingsRead(BaseModel):
|
|
sync_interval: str
|
|
feed_interval: str
|
|
feed_synced_at: datetime | None
|
|
feed_next_sync_at: datetime | None
|
|
feed_programs: int
|
|
feed_source: str
|
|
feed_url: str
|
|
feed_license: str
|
|
notify: bool
|
|
notify_events: list[str]
|
|
notifiable_events: list[str]
|
|
last_synced_at: datetime | None
|
|
next_sync_at: datetime | None
|
|
programs: int
|
|
events_recorded: int
|
|
|
|
|
|
class BountySettingsUpdate(BaseModel):
|
|
sync_interval: str | None = None
|
|
feed_interval: str | None = None
|
|
notify: bool | None = None
|
|
notify_events: list[str] | None = None
|