4.8 KiB
AGENTS.md - Yanting Engineering Repo
Public agent instructions for this repository. This file is safe to commit. Local agents may read ignored
AGENTS.local.md, but the repository must not depend on it. Last updated: 2026-06-03.
Project
This repository contains the Phase 1 implementation and engineering handoff for 研听 / report-notebooklm.
研听 is a Chinese research-report interpretation app. It turns global institutional research reports into structured Chinese reading and listening experiences. The product is an interpretation and annotation service, not investment advice.
Technical identifiers:
- Code/API/internal name:
report-notebooklm - Short prefix:
rnb - API prefix:
/api/report-notebooklm/v1 - Database schema name:
report_notebooklm - User-facing display name:
研听
Do not use the user-facing display name in code identifiers, database schema names, Redis keys, object-storage paths, or package names.
Repository Layout
This is intended to be a single Gitea repository.
| Path | Purpose |
|---|---|
README.md |
Human-facing repository entry point. |
docs/ |
Repo-level public handoff, decisions, and development history. |
report-notebooklm-api/ |
FastAPI backend, database models, migrations, seed importer, API docs. |
report-notebooklm-app/ |
Flutter app, Android/web scaffolds, App docs. |
docs.jimme.local/ |
Ignored local-only notes, not required by the team. |
AGENTS.local.md |
Ignored local agent overlay. |
Public vs Local Documentation
Public, committed documentation must be portable:
- Use repository-relative paths.
- Use environment variables and placeholders for credentials.
- Describe product decisions in team-readable language.
- Distinguish implemented behavior from planned/spec behavior.
Do not commit local-only material:
- Local absolute paths.
- Personal machine setup.
- private agent workflow.
- raw session logs.
- local screenshots, APKs, caches, virtualenvs, build outputs.
- credentials or local service passwords.
Use docs.jimme.local/ for ignored local notes and raw process references. Durable team-facing conclusions should be distilled into public docs/.
Product and Compliance Constraints
- Public responses expose only reviewed display artifacts, not raw NotebookLM artifacts.
- Public responses expose
cache_version;display_versionand moduleversionare internal. - Do not expose raw artifact payloads, local file paths, NotebookLM notebook/source/conversation IDs, account identifiers, or private object-storage paths.
- Phase 1 has no report-interpretation download feature.
- Phase 1 does not include comments, UGC, paid unlocks, membership, task walls, points, trading signals, or investment recommendations.
- NotebookLM-native/source-driven artifacts are the content source. Do not use local LLM rewriting to invent publishable report content.
- Gray broker sources and generated media require compliance/operations review before public release.
Backend
Read first:
report-notebooklm-api/README.mdreport-notebooklm-api/docs/HANDOFF.mdreport-notebooklm-api/docs/API_AND_DATA.mdreport-notebooklm-api/docs/CONTENT_PIPELINE.mdreport-notebooklm-api/docs/RUNBOOK.md
Verify:
cd report-notebooklm-api
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
alembic upgrade head
python scripts/import_seed_content.py
pytest -q
uvicorn app.main:app --reload --host <bind-host> --port <port>
The backend requires .env settings for real MySQL/Redis environments. Use .env.example as the template. Do not commit .env.
App
Read first:
report-notebooklm-app/README.mdreport-notebooklm-app/docs/HANDOFF.mdreport-notebooklm-app/docs/API_CONTRACT_NOTES.mdreport-notebooklm-app/docs/APP_RUNBOOK.md
Verify:
cd report-notebooklm-app
flutter analyze
flutter test
flutter build web --dart-define=RNB_API_BASE=<api-base-url>
flutter build apk --debug --dart-define=RNB_API_BASE=<emulator-api-base-url>
The App intentionally has no built-in live API default. Always pass RNB_API_BASE.
Decision Records
Long-lived decisions belong in docs/DECISIONS.md.
Development timeline and major implementation changes belong in docs/DEVELOPMENT_HISTORY.md.
Raw session logs, temporary planning transcripts, or local-only evidence pointers belong in ignored docs.jimme.local/.
Git Rules
- Target remote:
https://gitea.neuronlabs.art/third-party-project/yanting.git. - Commit one monorepo, not nested repositories.
- Before the final monorepo push, remove or archive nested
.git/directories under subprojects so source files are committed as normal directories. - Keep
.env, build artifacts, caches, APKs, local status files, and local agent overlays ignored. - Use English commit messages with prefixes such as
feat:,fix:,docs:, andchore:.