refactor: remove in-repo Discord and Slack event collector apps#296
refactor: remove in-repo Discord and Slack event collector apps#296leostar0412 wants to merge 5 commits into
Conversation
…ed configurations
…erences, update documentation and configurations
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (6)
✅ Files skipped from review due to trivial changes (1)
🚧 Files skipped from review as they are similar to previous changes (3)
📝 WalkthroughWalkthroughRemoves the ChangesApp Removal and Project Re-scoping
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
config/test_settings.py (1)
81-88:⚠️ Potential issue | 🟠 Major | ⚡ Quick winUse
_slugin the workspace directory creation loop.Line 88 hardcodes
"shared"inside the loop, so only the shared directory is created while app-specific workspace directories are never created.Suggested fix
for _slug in ( "github_activity_tracker", "boost_library_tracker", "clang_github_tracker", "reddit_activity_tracker", "shared", ): - (WORKSPACE_DIR / "shared").mkdir(parents=True, exist_ok=True) + (WORKSPACE_DIR / _slug).mkdir(parents=True, exist_ok=True)🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@config/test_settings.py` around lines 81 - 88, The workspace directory creation loop uses a hardcoded "shared" string in the mkdir call instead of the loop variable, causing only the shared directory to be created and ignoring app-specific directories. Replace the hardcoded "shared" string with the _slug variable in the mkdir call so that each iteration creates a directory specific to its slug value.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@config/settings.py`:
- Around line 16-19: The bare except ImportError clause in the try-except block
around the import of local_settings as _local_settings is too broad and catches
ImportError exceptions that originate from within the local_settings.py file
itself, masking real import failures. Replace the except ImportError with except
ModuleNotFoundError to only catch the specific case where the local_settings
module doesn't exist, allowing actual import errors within that module to
propagate and be surfaced properly.
In `@docs/GCP_Production_Checklist.md`:
- Line 44: The GCP_Production_Checklist.md file is incomplete in its
documentation of the Beat schedule batch groups. The current list includes
github, boost_library_docs, slack, and mailing_list, but the reddit batch group
is also defined in config/boost_collector_schedule.yaml and should be included.
Add reddit to the list of batch groups mentioned in the checklist to make it
comprehensive and accurate.
In `@SECURITY.md`:
- Around line 86-88: The SECURITY.md incident-response rotation checklist is
incomplete for Slack credentials. Update the Slack row in the credentials table
to include both SLACK_BOT_TOKEN_<team_id> and SLACK_APP_TOKEN_<team_id>, since
the codebase actively consumes the app token (referenced in config/settings.py
and core/operations/slack_ops/tokens.py) but only the bot token is currently
listed. Add SLACK_APP_TOKEN_<team_id> to the same Slack row to ensure both
credentials are properly rotated during security incidents.
---
Outside diff comments:
In `@config/test_settings.py`:
- Around line 81-88: The workspace directory creation loop uses a hardcoded
"shared" string in the mkdir call instead of the loop variable, causing only the
shared directory to be created and ignoring app-specific directories. Replace
the hardcoded "shared" string with the _slug variable in the mkdir call so that
each iteration creates a directory specific to its slug value.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 0c39f57d-ca2d-44c0-b829-b8150323f33c
⛔ Files ignored due to path filters (1)
requirements.lockis excluded by!**/*.lock
📒 Files selected for processing (179)
.env.example.github/CODEOWNERS.gitignore.importlinterCHANGELOG.mdCONTRIBUTING.mdMakefileREADME.mdSECURITY.mdSTABILITY.mdboost_collector_runner/schedule_config.pyboost_collector_runner/tests/test_schedule_config.pyconfig/boost_collector_schedule.yamlconfig/boost_collector_schedule.yaml.exampleconfig/settings.pyconfig/test_settings.pycore/errors.pycore/operations/md_ops/transcript.pycore/operations/slack_ops/__init__.pycore/operations/slack_ops/fetcher.pycore/tests/operations/test_slack_fetcher.pycore/tests/test_collector_protocol_conformance.pycore/tests/test_protocol_serialization.pycore/tests/test_protocols.pycore/utils/text_processing.pycppa_slack_tracker/README.mdcppa_user_tracker/README.mdcppa_user_tracker/migrations/0010_remove_discordprofile.pycppa_user_tracker/models.pycppa_user_tracker/services.pycppa_user_tracker/tests/test_services.pydiscord_activity_tracker/README.mddiscord_activity_tracker/__init__.pydiscord_activity_tracker/admin.pydiscord_activity_tracker/api_schemas.pydiscord_activity_tracker/apps.pydiscord_activity_tracker/management/__init__.pydiscord_activity_tracker/management/commands/__init__.pydiscord_activity_tracker/management/commands/backfill_discord_activity_tracker.pydiscord_activity_tracker/management/commands/extract_discord_tokens.pydiscord_activity_tracker/management/commands/run_discord_activity_tracker.pydiscord_activity_tracker/migrations/0001_initial.pydiscord_activity_tracker/migrations/0002_migrate_users_to_discord_profile.pydiscord_activity_tracker/migrations/0003_alter_discordmessage_author.pydiscord_activity_tracker/migrations/0004_delete_discorduser.pydiscord_activity_tracker/migrations/0005_channel_category_message_type_is_pinned.pydiscord_activity_tracker/migrations/0006_remove_channel_last_timestamps.pydiscord_activity_tracker/migrations/__init__.pydiscord_activity_tracker/models.pydiscord_activity_tracker/pinecone_runner.pydiscord_activity_tracker/preprocessor.pydiscord_activity_tracker/protocol_impl.pydiscord_activity_tracker/schemas/discord_staging_v1.jsondiscord_activity_tracker/scripts/__init__.pydiscord_activity_tracker/scripts/write_staging_json_schema.pydiscord_activity_tracker/services.pydiscord_activity_tracker/staging_schema.pydiscord_activity_tracker/sync/__init__.pydiscord_activity_tracker/sync/chat_exporter.pydiscord_activity_tracker/sync/client.pydiscord_activity_tracker/sync/export.pydiscord_activity_tracker/sync/exporter_window.pydiscord_activity_tracker/sync/messages.pydiscord_activity_tracker/sync/raw_archive.pydiscord_activity_tracker/sync/utils.pydiscord_activity_tracker/tests/__init__.pydiscord_activity_tracker/tests/conftest.pydiscord_activity_tracker/tests/test_admin.pydiscord_activity_tracker/tests/test_api_schemas.pydiscord_activity_tracker/tests/test_backfill_command_extra.pydiscord_activity_tracker/tests/test_backfill_discord_activity_tracker_command.pydiscord_activity_tracker/tests/test_bulk_services.pydiscord_activity_tracker/tests/test_chat_exporter_branch_coverage.pydiscord_activity_tracker/tests/test_discord_internal_tokens_store.pydiscord_activity_tracker/tests/test_discord_tokens.pydiscord_activity_tracker/tests/test_export.pydiscord_activity_tracker/tests/test_export_sync_coverage.pydiscord_activity_tracker/tests/test_exporter_window.pydiscord_activity_tracker/tests/test_extract_discord_tokens_command.pydiscord_activity_tracker/tests/test_failure_classification.pydiscord_activity_tracker/tests/test_messages_more.pydiscord_activity_tracker/tests/test_models_str.pydiscord_activity_tracker/tests/test_pinecone_runner_coverage.pydiscord_activity_tracker/tests/test_preprocessor.pydiscord_activity_tracker/tests/test_preprocessor_extra.pydiscord_activity_tracker/tests/test_protocol_impl.pydiscord_activity_tracker/tests/test_raw_archive.pydiscord_activity_tracker/tests/test_run_command_coverage.pydiscord_activity_tracker/tests/test_run_discord_activity_tracker_command.pydiscord_activity_tracker/tests/test_services_core.pydiscord_activity_tracker/tests/test_services_extras.pydiscord_activity_tracker/tests/test_settings_channel_filter.pydiscord_activity_tracker/tests/test_staging_schema.pydiscord_activity_tracker/tests/test_staging_schema_extra.pydiscord_activity_tracker/tests/test_sync_chat_exporter.pydiscord_activity_tracker/tests/test_sync_client.pydiscord_activity_tracker/tests/test_sync_messages.pydiscord_activity_tracker/tests/test_sync_utils.pydiscord_activity_tracker/tests/test_task_discord_sync_coverage.pydiscord_activity_tracker/tests/test_task_markdown_coverage.pydiscord_activity_tracker/tests/test_workspace.pydiscord_activity_tracker/tests/test_workspace_clear_staging.pydiscord_activity_tracker/tests/test_write_staging_json_schema_script.pydiscord_activity_tracker/utils/__init__.pydiscord_activity_tracker/utils/discord_internal_tokens_store.pydiscord_activity_tracker/utils/discord_tokens.pydiscord_activity_tracker/workspace.pydocker-compose.prod.ymldocker-compose.ymldocs/Architecture_data_flow.mddocs/Architecture_overview.mddocs/CONCURRENCY.mddocs/Core_public_API.mddocs/Deployment.mddocs/Development_guideline.mddocs/GCP_Production_Checklist.mddocs/Onboarding.mddocs/README.mddocs/Schema.mddocs/Service_API.mddocs/Workspace.mddocs/adr/README.mddocs/adr/paradigm-unification.mddocs/cross-app-dependencies.mddocs/discord-tracker-schema.mddocs/operations/README.mddocs/operations/discord_chat_exporter.mddocs/service_api/README.mddocs/service_api/cppa_user_tracker.mddocs/service_api/discord_activity_tracker.mdpyrightconfig.jsonrequirements.inscripts/check_service_layer_writes.pyscripts/list_cross_app_imports.pyscripts/wait_discord_chrome_profile.shscripts/wait_slack_chrome_profile.shslack_event_handler/README.mdslack_event_handler/__init__.pyslack_event_handler/admin.pyslack_event_handler/apps.pyslack_event_handler/management/__init__.pyslack_event_handler/management/commands/__init__.pyslack_event_handler/management/commands/extract_slack_tokens.pyslack_event_handler/management/commands/run_slack_event_handler.pyslack_event_handler/migrations/__init__.pyslack_event_handler/models.pyslack_event_handler/runner.pyslack_event_handler/tests/__init__.pyslack_event_handler/tests/conftest.pyslack_event_handler/tests/test_apps.pyslack_event_handler/tests/test_extract_slack_tokens_command.pyslack_event_handler/tests/test_github_pr_client.pyslack_event_handler/tests/test_huddle_markdown.pyslack_event_handler/tests/test_huddle_processor.pyslack_event_handler/tests/test_job_queue.pyslack_event_handler/tests/test_management_command.pyslack_event_handler/tests/test_pr_parser.pyslack_event_handler/tests/test_rate_limiter.pyslack_event_handler/tests/test_runner.pyslack_event_handler/tests/test_slack_internal_tokens_store.pyslack_event_handler/tests/test_slack_listener_coverage.pyslack_event_handler/tests/test_slack_listener_handlers.pyslack_event_handler/tests/test_slack_listener_unit.pyslack_event_handler/tests/test_slack_tokens.pyslack_event_handler/tests/test_slack_tokens_validate.pyslack_event_handler/tests/test_state.pyslack_event_handler/tests/test_workspace_paths.pyslack_event_handler/utils/__init__.pyslack_event_handler/utils/github_pr_client.pyslack_event_handler/utils/huddle_markdown.pyslack_event_handler/utils/huddle_processor.pyslack_event_handler/utils/job_queue.pyslack_event_handler/utils/pr_parser.pyslack_event_handler/utils/rate_limiter.pyslack_event_handler/utils/slack_internal_tokens_store.pyslack_event_handler/utils/slack_listener.pyslack_event_handler/utils/slack_tokens.pyslack_event_handler/utils/state.pyslack_event_handler/workspace.py
💤 Files with no reviewable changes (126)
- discord_activity_tracker/init.py
- discord_activity_tracker/tests/test_api_schemas.py
- discord_activity_tracker/management/commands/init.py
- slack_event_handler/admin.py
- slack_event_handler/README.md
- CONTRIBUTING.md
- discord_activity_tracker/pinecone_runner.py
- discord_activity_tracker/README.md
- pyrightconfig.json
- discord_activity_tracker/scripts/init.py
- discord_activity_tracker/management/init.py
- discord_activity_tracker/management/commands/run_discord_activity_tracker.py
- docs/discord-tracker-schema.md
- discord_activity_tracker/tests/test_backfill_command_extra.py
- discord_activity_tracker/sync/init.py
- docs/Onboarding.md
- discord_activity_tracker/tests/test_exporter_window.py
- discord_activity_tracker/migrations/0002_migrate_users_to_discord_profile.py
- docs/operations/discord_chat_exporter.md
- discord_activity_tracker/tests/test_discord_tokens.py
- discord_activity_tracker/models.py
- discord_activity_tracker/tests/test_extract_discord_tokens_command.py
- discord_activity_tracker/tests/test_models_str.py
- discord_activity_tracker/protocol_impl.py
- discord_activity_tracker/migrations/0006_remove_channel_last_timestamps.py
- docs/service_api/discord_activity_tracker.md
- discord_activity_tracker/tests/test_task_markdown_coverage.py
- discord_activity_tracker/tests/test_preprocessor.py
- discord_activity_tracker/tests/test_services_extras.py
- discord_activity_tracker/tests/test_sync_utils.py
- discord_activity_tracker/sync/utils.py
- slack_event_handler/tests/test_slack_listener_coverage.py
- slack_event_handler/models.py
- discord_activity_tracker/tests/test_sync_messages.py
- discord_activity_tracker/tests/test_messages_more.py
- discord_activity_tracker/admin.py
- slack_event_handler/tests/test_huddle_markdown.py
- discord_activity_tracker/apps.py
- discord_activity_tracker/migrations/0001_initial.py
- discord_activity_tracker/tests/test_settings_channel_filter.py
- cppa_user_tracker/models.py
- slack_event_handler/tests/test_slack_listener_unit.py
- slack_event_handler/management/commands/run_slack_event_handler.py
- slack_event_handler/tests/test_slack_listener_handlers.py
- slack_event_handler/tests/init.py
- discord_activity_tracker/tests/test_backfill_discord_activity_tracker_command.py
- discord_activity_tracker/tests/test_preprocessor_extra.py
- slack_event_handler/tests/conftest.py
- discord_activity_tracker/api_schemas.py
- discord_activity_tracker/sync/raw_archive.py
- discord_activity_tracker/schemas/discord_staging_v1.json
- discord_activity_tracker/staging_schema.py
- discord_activity_tracker/tests/test_bulk_services.py
- discord_activity_tracker/workspace.py
- docs/Service_API.md
- discord_activity_tracker/management/commands/extract_discord_tokens.py
- core/errors.py
- discord_activity_tracker/tests/test_admin.py
- scripts/wait_slack_chrome_profile.sh
- discord_activity_tracker/utils/discord_internal_tokens_store.py
- discord_activity_tracker/tests/test_export.py
- discord_activity_tracker/tests/test_staging_schema.py
- discord_activity_tracker/migrations/0005_channel_category_message_type_is_pinned.py
- slack_event_handler/apps.py
- discord_activity_tracker/tests/conftest.py
- discord_activity_tracker/tests/test_failure_classification.py
- discord_activity_tracker/sync/export.py
- slack_event_handler/tests/test_job_queue.py
- discord_activity_tracker/management/commands/backfill_discord_activity_tracker.py
- discord_activity_tracker/migrations/0003_alter_discordmessage_author.py
- discord_activity_tracker/sync/messages.py
- discord_activity_tracker/tests/test_staging_schema_extra.py
- slack_event_handler/tests/test_runner.py
- slack_event_handler/tests/test_pr_parser.py
- config/boost_collector_schedule.yaml.example
- slack_event_handler/runner.py
- discord_activity_tracker/tests/test_write_staging_json_schema_script.py
- slack_event_handler/tests/test_management_command.py
- slack_event_handler/tests/test_rate_limiter.py
- slack_event_handler/tests/test_slack_internal_tokens_store.py
- discord_activity_tracker/scripts/write_staging_json_schema.py
- discord_activity_tracker/tests/test_pinecone_runner_coverage.py
- config/boost_collector_schedule.yaml
- slack_event_handler/tests/test_apps.py
- discord_activity_tracker/tests/test_sync_client.py
- discord_activity_tracker/tests/test_export_sync_coverage.py
- discord_activity_tracker/sync/exporter_window.py
- discord_activity_tracker/migrations/0004_delete_discorduser.py
- .github/CODEOWNERS
- discord_activity_tracker/preprocessor.py
- scripts/wait_discord_chrome_profile.sh
- discord_activity_tracker/services.py
- core/tests/test_protocol_serialization.py
- discord_activity_tracker/tests/test_discord_internal_tokens_store.py
- docs/Architecture_data_flow.md
- discord_activity_tracker/tests/test_raw_archive.py
- slack_event_handler/management/commands/extract_slack_tokens.py
- discord_activity_tracker/tests/test_chat_exporter_branch_coverage.py
- discord_activity_tracker/tests/test_services_core.py
- cppa_user_tracker/tests/test_services.py
- discord_activity_tracker/tests/test_workspace_clear_staging.py
- discord_activity_tracker/tests/test_protocol_impl.py
- slack_event_handler/tests/test_github_pr_client.py
- discord_activity_tracker/tests/test_run_discord_activity_tracker_command.py
- discord_activity_tracker/tests/test_run_command_coverage.py
- discord_activity_tracker/tests/test_sync_chat_exporter.py
- discord_activity_tracker/tests/test_task_discord_sync_coverage.py
- docs/Workspace.md
- .importlinter
- discord_activity_tracker/sync/client.py
- scripts/check_service_layer_writes.py
- discord_activity_tracker/tests/test_workspace.py
- slack_event_handler/tests/test_huddle_processor.py
- docker-compose.prod.yml
- slack_event_handler/tests/test_extract_slack_tokens_command.py
- discord_activity_tracker/sync/chat_exporter.py
- core/tests/test_protocols.py
- discord_activity_tracker/utils/discord_tokens.py
- scripts/list_cross_app_imports.py
- docs/service_api/README.md
- cppa_user_tracker/services.py
- core/tests/test_collector_protocol_conformance.py
- docker-compose.yml
- core/tests/operations/test_slack_fetcher.py
- docs/Architecture_overview.md
- Makefile
…d transcript functionality and tests
Summary
Remove
discord_activity_trackerandslack_event_handlerfrom the public Boost Data Collector repository. These collectors are no longer part of this tree; the public repo stays focused on batch collectors (includingcppa_slack_tracker).Also drop Discord/Slack session-login tooling from the parent repo (Compose Chromium profiles, Makefile login targets, Chrome wait scripts, and related env vars). Move
DiscordProfileout ofcppa_user_trackerDjango state via0010_remove_discordprofile(state-only; tablecppa_user_tracker_discordprofileis unchanged). Update schedule examples, docs, cross-app dependency maps, and dependency locks accordingly.Optional app registration via
config/local_settings.py(EXTRA_INSTALLED_APPS,LOCAL_APP_DIR) is unchanged for machine-specific deployments.Apps touched
discord_activity_tracker(removed)slack_event_handler(removed)cppa_user_tracker(DiscordProfileremoved from models/services; migration0010)cppa_slack_tracker(docs only)boost_collector_runner(schedule config/tests)core(slack_ops, errors, text processing, protocol tests)config(settings, test settings, schedule YAML)Test plan
python -m pytest(or scoped:python -m pytest <app>/tests)uv run pyright(if typed code changed)lint-imports(if imports or cross-app coupling changed)Docs / coupling
python scripts/generate_service_docs.pyrun (ifservices.pyorcore/protocols.pychanged)docs/updated (if behavior or ops changed)Summary by CodeRabbit
Removed Features
Configuration Changes
Security / Docs
Tests / Quality