CHANGELOG.md
CONTRIBUTING.md
LICENSE
MANIFEST.in
NOTICE
README.en.md
README.md
SECURITY.md
pyproject.toml
docs/SeatTrellis_v2.0.0_开发与发布总计划_修订版.md
docs/SeatTrellis_同类开源项目代码级对比报告.md
docs/api-v1-openapi.json
docs/api.md
docs/architecture.md
docs/audit-2026-08-12-backend.md
docs/audit-2026-08-12-core.md
docs/audit-2026-08-12-export.md
docs/audit-2026-08-12-schema.md
docs/audit-2026-08-12-web.md
docs/benchmark-baseline-v1.4.md
docs/benchmarks.md
docs/candidates.md
docs/cli.md
docs/competitor-analysis.md
docs/desktop-research.zh.md
docs/editor-protocol.md
docs/export.zh.md
docs/font-strategy.zh.md
docs/golden-provenance.md
docs/history.md
docs/index.md
docs/input-format.en.md
docs/input-format.zh.md
docs/m6-retirement-checklist.md
docs/migration-v1-to-v2.zh.md
docs/native-core.md
docs/pair-history.md
docs/presets.md
docs/privacy.md
docs/project.zh.md
docs/publishing.md
docs/quickstart.en.md
docs/quickstart.zh.md
docs/release-checklist.md
docs/roadmap.md
docs/rule-capability-audit.md
docs/rules.en.md
docs/rules.zh.md
docs/rust-migration.md
docs/scoring.md
docs/testing.md
docs/troubleshooting.md
docs/v2-parity-ledger.md
docs/versioning.md
docs/web.en.md
docs/web.zh.md
docs/adr/0001-rust-native-core.md
docs/adr/0002-keep-ortools-in-python.md
docs/adr/0003-command-log-editing.md
docs/adr/0003-rust-first-desktop-runtime.md
docs/adr/0004-rust-only-v2-migration.md
docs/assets/demo-seating.html
docs/assets/demo-seating.png
docs/product-decisions/2026-08-10-batch1-core-workflow.md
docs/product-decisions/2026-08-10-batch2-export-wrapup.md
docs/product-decisions/2026-08-10-export-defaults.md
docs/product-decisions/2026-08-10-m4-gate-closure.md
docs/product-decisions/2026-08-10-print-layout-spec.md
docs/product-decisions/2026-08-10-sample-roster.md
docs/product-decisions/2026-08-10-ui-design-direction.md
docs/product-decisions/2026-08-12-alpha-exit-check.md
docs/product-decisions/2026-08-12-alpha2-closure.md
docs/product-decisions/2026-08-12-dogfood-closure.md
docs/product-decisions/2026-08-12-m5-implementation-plan.md
docs/product-decisions/2026-08-12-platform-acceptance-checklist.md
docs/product-decisions/2026-08-12-single-theme-anthropic.md
docs/product-decisions/2026-08-12-touch-decision-gate.md
docs/product-decisions/2026-08-12-ui-visual-polish.md
docs/product-decisions/2026-08-13-candidate-report-retirement.md
docs/product-decisions/2026-08-13-m5-closure-decisions.md
docs/prototypes/index.html
docs/prototypes/assets/data.js
docs/prototypes/assets/prototypes.css
docs/prototypes/assets/prototypes.js
docs/prototypes/decisions/d1-navigation.html
docs/prototypes/decisions/d10-onboarding.html
docs/prototypes/decisions/d11-print-html.html
docs/prototypes/decisions/d12-pdf-cjk.html
docs/prototypes/decisions/d13-png-text.html
docs/prototypes/decisions/d14-native-dialogs.html
docs/prototypes/decisions/d15-legacy-commands.html
docs/prototypes/decisions/d2-canvas.html
docs/prototypes/decisions/d3-rule-builder.html
docs/prototypes/decisions/d4-quick-advanced.html
docs/prototypes/decisions/d5-candidates.html
docs/prototypes/decisions/d6-diagnostics.html
docs/prototypes/decisions/d7-history-rotation.html
docs/prototypes/decisions/d8-import.html
docs/prototypes/decisions/d9-export.html
docs/ui-themes/apple.html
docs/ui-themes/calm-hybrid.html
docs/ui-themes/carbon-enterprise.html
docs/ui-themes/fluent-windows.html
docs/ui-themes/gnome-adwaita.html
docs/ui-themes/index.html
docs/ui-themes/kde-breeze.html
docs/ui-themes/linear-notion.html
docs/ui-themes/material-android.html
docs/ui-themes/muji-swiss.html
docs/ui-themes/swiss-print.html
docs/ui-themes/terminal-dos.html
docs/ui-themes/theme-preview.css
examples/classroom.json
examples/project.seattrellis.json
examples/rules.json
examples/rules_multi_candidate.json
examples/rules_neighbor_avoidance.json
examples/students.csv
examples/students.xlsx
examples/candidates/README.md
examples/history/README.md
examples/history/week1.snapshot.json
examples/history/week2.snapshot.json
examples/history/week3.snapshot.json
examples/invalid/conflicting_fixed_seats.json
examples/invalid/duplicate_seat_id.json
examples/invalid/duplicate_student_id.csv
examples/invalid/not_enough_seats.json
examples/invalid/unknown_student_rule.json
scripts/archive_desktop.py
scripts/bench_solver.py
scripts/benchmark_parity.py
scripts/benchmark_solver.py
scripts/build_desktop.py
scripts/check_no_python_runtime.py
scripts/check_release_version.py
scripts/check_repository_hygiene.py
scripts/gen_parity_fixtures.py
scripts/measure_rust_quality.py
scripts/mkdocs_hooks.py
scripts/rust_python_diff.py
scripts/smoke_cli.py
scripts/verify_workbench_browser.py
src/seattrellis/__init__.py
src/seattrellis/benchmark_report.py
src/seattrellis/benchmark_runner.py
src/seattrellis/benchmarks.py
src/seattrellis/candidates.py
src/seattrellis/cli.py
src/seattrellis/demo.py
src/seattrellis/desktop.py
src/seattrellis/desktop_app.py
src/seattrellis/editing.py
src/seattrellis/editing_protocol.py
src/seattrellis/history.py
src/seattrellis/optional.py
src/seattrellis/presets.py
src/seattrellis/project_bundle.py
src/seattrellis/repair.py
src/seattrellis/schema.py
src/seattrellis/schema_migration.py
src/seattrellis/scoring.py
src/seattrellis/service.py
src/seattrellis/service_types.py
src/seattrellis/workspace_server.py
src/seattrellis.egg-info/PKG-INFO
src/seattrellis.egg-info/SOURCES.txt
src/seattrellis.egg-info/dependency_links.txt
src/seattrellis.egg-info/entry_points.txt
src/seattrellis.egg-info/requires.txt
src/seattrellis.egg-info/top_level.txt
src/seattrellis/api/__init__.py
src/seattrellis/api/drafts.py
src/seattrellis/api/errors.py
src/seattrellis/api/handlers.py
src/seattrellis/api/http.py
src/seattrellis/api/layouts.py
src/seattrellis/api/models.py
src/seattrellis/api/rosters.py
src/seattrellis/api/security.py
src/seattrellis/application/__init__.py
src/seattrellis/application/class_workflow.py
src/seattrellis/application/layout_editor.py
src/seattrellis/application/room_templates.py
src/seattrellis/application/roster_import.py
src/seattrellis/application/roster_mapping.py
src/seattrellis/application/roster_update.py
src/seattrellis/application/teacher_goals.py
src/seattrellis/exporters/__init__.py
src/seattrellis/exporters/candidate_report.py
src/seattrellis/exporters/canvas.py
src/seattrellis/exporters/docx_export.py
src/seattrellis/exporters/excel.py
src/seattrellis/exporters/html.py
src/seattrellis/exporters/pdf.py
src/seattrellis/exporters/png.py
src/seattrellis/exporters/pptx.py
src/seattrellis/exporters/presentation.py
src/seattrellis/exporters/print_html.py
src/seattrellis/exporters/svg.py
src/seattrellis/io/__init__.py
src/seattrellis/io/json_files.py
src/seattrellis/io/project.py
src/seattrellis/io/roster_table.py
src/seattrellis/io/students.py
src/seattrellis/io/validation.py
src/seattrellis/models/__init__.py
src/seattrellis/models/candidate.py
src/seattrellis/models/history.py
src/seattrellis/models/layout.py
src/seattrellis/models/project.py
src/seattrellis/models/rotation.py
src/seattrellis/models/rules.py
src/seattrellis/models/snapshot.py
src/seattrellis/models/student.py
src/seattrellis/solver/__init__.py
src/seattrellis/solver/adjacency.py
src/seattrellis/solver/assignment_validator.py
src/seattrellis/solver/backend.py
src/seattrellis/solver/backend_common.py
src/seattrellis/solver/cp_sat.py
src/seattrellis/solver/errors.py
src/seattrellis/solver/fallback_backend.py
src/seattrellis/solver/native.py
src/seattrellis/solver/native_backend.py
src/seattrellis/solver/ortools_backend.py
src/seattrellis/solver/precompute.py
src/seattrellis/solver/problem.py
src/seattrellis/solver/protocol.py
src/seattrellis/solver/registry.py
src/seattrellis/solver/result.py
src/seattrellis/solver/rule_compiler.py
src/seattrellis/solver/soft_objectives.py
src/seattrellis/web/__init__.py
src/seattrellis/web/app.py
src/seattrellis/web/class_adapter.py
src/seattrellis/web/components.py
src/seattrellis/web/config.py
src/seattrellis/web/editor_protocol.py
src/seattrellis/web/i18n.py
src/seattrellis/web/interactive_panels.py
src/seattrellis/web/keys.py
src/seattrellis/web/teacher_page.py
src/seattrellis/web/teacher_state.py
src/seattrellis/web/tempfiles.py
src/seattrellis/web/workflow.py
src/seattrellis/web_static/index.html
src/seattrellis/web_static/assets/index-C7FHI-AJ.js
src/seattrellis/web_static/assets/index-C7FHI-AJ.js.map
src/seattrellis/web_static/assets/index-CqJrNFeZ.css
tests/test_adjacency.py
tests/test_advanced_exports.py
tests/test_api_catalogs_and_exports.py
tests/test_api_contract.py
tests/test_api_drafts.py
tests/test_api_layouts.py
tests/test_api_projects.py
tests/test_api_rosters.py
tests/test_api_security.py
tests/test_artifact_parity.py
tests/test_benchmarks.py
tests/test_candidates.py
tests/test_class_workflow.py
tests/test_cli.py
tests/test_desktop.py
tests/test_desktop_packaging.py
tests/test_doctor.py
tests/test_editing.py
tests/test_editing_protocol.py
tests/test_exporters.py
tests/test_hard_rule_contract.py
tests/test_history.py
tests/test_importers.py
tests/test_interactive_panel_workspace.py
tests/test_layout_editor.py
tests/test_minimal_install.py
tests/test_models.py
tests/test_optional_dependencies.py
tests/test_package_metadata.py
tests/test_presets.py
tests/test_project.py
tests/test_project_bundle.py
tests/test_property_based.py
tests/test_release_version.py
tests/test_repository_hygiene.py
tests/test_room_templates.py
tests/test_roster_import.py
tests/test_roster_mapping.py
tests/test_roster_mapping_parity.py
tests/test_roster_table.py
tests/test_roster_update.py
tests/test_rotation.py
tests/test_schema_versions.py
tests/test_score_goals.py
tests/test_scoring.py
tests/test_service_editing.py
tests/test_solver_backend.py
tests/test_solver_backend_contract.py
tests/test_solver_backend_registry.py
tests/test_solver_basic.py
tests/test_solver_problem.py
tests/test_solver_rules.py
tests/test_teacher_goals.py
tests/test_teacher_page.py
tests/test_teacher_state.py
tests/test_teacher_web_copy.py
tests/test_validation.py
tests/test_web_class_adapter.py
tests/test_web_components.py
tests/test_web_config.py
tests/test_web_tempfiles.py
tests/test_web_workflow.py
tests/test_workspace_server.py